Графики IH Pro
-
Добрый день. Сделал новый график с двумя кривыми. Главное отличие от остальных - датчики опрашиваются 2 раза в секунду, в БД пишутся по изменению. Период отображения - сутки. Главная проблема в том, что при переходе на этот график страница iH виснет, процессор на клиентском нетбуке 100%, ОЗУ на на максимум тоже. Можно как-то оптимизировать отрисовку графиков?
А какой смысл записывать в базу 2 раза в секунду? Что за датчики?
Если боитесь потерять всплески, можно сделать по другому.
Специально для таких целей есть механизм записи в базу данных: min/max
Этот механизм позволяет записывать в базу 2 значения (минимальное и максимальное) за период. Для датчиков температуры или влажности достаточно установить период в 60 сек.
Таким образом можно существенно уменьшить размер базы данных и соответственно увеличить скорость отображения на графиках.
И при этом не потерять выбросы показаний датчика.
Примерный расчет показывает:
Если 2 раза в секунду: 26060*24= 172800 точек за сутки.
Если min/max в минуту: 26024= 2880 точек за сутки.
Оптимизация
-
@intrahouse:
А какой смысл записывать в базу 2 раза в секунду? Что за датчики?
Если боитесь потерять всплески, можно сделать по другому.
Специально для таких целей есть механизм записи в базу данных: min/max
Этот механизм позволяет записывать в базу 2 значения (минимальное и максимальное) за период. Для датчиков температуры или влажности достаточно установить период в 60 сек.
Таким образом можно существенно уменьшить размер базы данных и соответственно увеличить скорость отображения на графиках.
И при этом не потерять выбросы показаний датчика.
Примерный расчет показывает:
Если 2 раза в секунду: 26060*24= 172800 точек за сутки.
Если min/max в минуту: 26024= 2880 точек за сутки.
Оптимизация
Да я все понимаю. Но задача - некоторое время измерять напряжение на клеммах MegaD… чтобы не пропустить момент пришлось установить период 0,5 секунд...
-
Да я все понимаю. Но задача - некоторое время измерять напряжение на клеммах MegaD… чтобы не пропустить момент пришлось установить период 0,5 секунд...
Понятно. Попробуйте min/max. Как раз в этом случае может помочь.
@Alex_Jet:Можно как-то оптимизировать отрисовку графиков?
Что понимать под оптимизацией? Мы этим занимались достаточно долго. Кроме как уменьшение количества отображаемых точек, ничего другого нет. Ведь графики отображает не специальная программа, а браузер. Возможно в будущем попробуем на WebGL или аналогичном движке.
-
@intrahouse:
Что понимать под оптимизацией? Мы этим занимались достаточно долго. Кроме как уменьшение количества отображаемых точек, ничего другого нет. Ведь графики отображает не специальная программа, а браузер. Возможно в будущем попробуем на WebGL или аналогичном движке.
Я понимаю так - при большом масштабе отбрасывание части подобных значений. При меньшем масштабе - отрбрасывание меньшей части подобных значений. Ну и при самом малом масштабе показ всех значений.
-
@intrahouse:
Да я все понимаю. Но задача - некоторое время измерять напряжение на клеммах MegaD… чтобы не пропустить момент пришлось установить период 0,5 секунд...
Понятно. Попробуйте min/max. Как раз в этом случае может помочь.
@Alex_Jet:Можно как-то оптимизировать отрисовку графиков?
Что понимать под оптимизацией? Мы этим занимались достаточно долго. Кроме как уменьшение количества отображаемых точек, ничего другого нет. Ведь графики отображает не специальная программа, а браузер. Возможно в будущем попробуем на WebGL или аналогичном движке.
А нельзя переложить расчет точек графика на сервер?
-
Для графиков ставились такие задачи:
1. Динамическое отображение в режиме реального времени. То есть получение новой точки не перезагружает график, а только сдвигает его по оси X.
2. Возможность плавной прокрутки графика вдоль оси X. Опять же без перезагрузки данных, плавно.
3. Плавное масштабирование.
4. Уменьшение объема хранимой информации в БД. То есть место на диске.
Я понимаю так - при большом масштабе отбрасывание части подобных значений. При меньшем масштабе - отрбрасывание меньшей части подобных значений. Ну и при самом малом масштабе показ всех значений.
То есть при изменении масштаба запрашивать сервер на перерасчет и обновлять график с новыми данными.
Таким образом убиваем первые три пункта задачи.
@homa:А нельзя переложить расчет точек графика на сервер?
На клиенте никакого расчета нет. Там только отображение того что получено с сервера.
-
@intrahouse:
Для графиков ставились такие задачи:
1. Динамическое отображение в режиме реального времени. То есть получение новой точки не перезагружает график, а только сдвигает его по оси X.
2. Возможность плавной прокрутки графика вдоль оси X. Опять же без перезагрузки данных, плавно.
3. Плавное масштабирование.
4. Уменьшение объема хранимой информации в БД. То есть место на диске.
Я понимаю так - при большом масштабе отбрасывание части подобных значений. При меньшем масштабе - отрбрасывание меньшей части подобных значений. Ну и при самом малом масштабе показ всех значений.
То есть при изменении масштаба запрашивать сервер на перерасчет и обновлять график с новыми данными.
Таким образом убиваем первые три пункта задачи.
@homa:А нельзя переложить расчет точек графика на сервер?
На клиенте никакого расчета нет. Там только отображение того что получено с сервера.
Понятно, тем не менее достаточно долго формируется график на клиенте, особенно на слабых планшетах, но не критично) с графиками все равно удобнее работать с ПК
-
Интересное совпадение по теме.
Телеграмм на днях объявил конкурс на разработку библиотеки для графиков с призовым фондом $125000
-
У меня дома из "рабочих" остался только нетбук Acer с Win7, планшет тоже не новый - на них все тяжело ворочается, а график с множеством точек просто загоняет процессор и ОЗУ в красную зону, браузер предалагает закрыть страницу. Поэтому анализирую данные только на работе на мощном ноутбуке… Дома, как вариант, просмотреть графики на смартфоне...он явно мощнее домашних железок.
-
Ну а по поводу min/max.
Это не решает задачи обнаружения всплесков?
-
При удалении кривых или при удалении самого набора графиков данные из БД удаляются?
Хотя поставлю вопрос немного по другому. В iH предусмотрен какой-нибудь механизм удаления данных из БД? Например, при удалении графиков или удалении устройств?
-
При удалении кривых или при удалении самого набора графиков данные из БД удаляются?
Хотя поставлю вопрос немного по другому. В iH предусмотрен какой-нибудь механизм удаления данных из БД? Например, при удалении графиков или удалении устройств?
Там на уровне таблиц все.
Как только появляется источник значений (устройство), которые заносятся в БД - под него создается новая таблица.
Поэтому можно удалять таблицу целиком. Удалятся все накопленные данные этого устройства. Если таблица сама не удаляется при отключении записи значений у устройства.
Функция удаления таблицы есть.
-
При удалении кривых или при удалении самого набора графиков данные из БД удаляются?
Хотя поставлю вопрос немного по другому. В iH предусмотрен какой-нибудь механизм удаления данных из БД? Например, при удалении графиков или удалении устройств?
Там на уровне таблиц все.
Как только появляется источник значений (устройство), которые заносятся в БД - под него создается новая таблица.
Поэтому можно удалять таблицу целиком. Удалятся все накопленные данные этого устройства. Если таблица сама не удаляется при отключении записи значений у устройства.
Функция удаления таблицы есть.
Верно, удаление таблицы есть в разделе "Администрирование БД"
Значения устройств (кроме счетчиков) хранятся в ежедневных таблицах records_yymmdd, которые можно удалять без проблем.
При этом удалятся значения по всем устройствам за день Выборочного удаления данных по устройству сейчас нет
-
Верно, удаление таблицы есть в разделе "Администрирование БД"
Значения устройств (кроме счетчиков) хранятся в ежедневных таблицах records_yymmdd, которые можно удалять без проблем.
При этом удалятся значения по всем устройствам за день Выборочного удаления данных по устройству сейчас нет
Про раздел администрирование конечно знаю и про ежедневные таблицы тоже. Однако думал, что из них можно удалить значения по конкретным устройствам.
Вопрос по графикам. В устройстве - запись в БД при изменении, дельта для сохранения - 100. Я правильно понимаю, что если текущее значение параметра будет отличаться на 100 единиц от предыдущего, то произойдет его запись? Иначе через ХХ сек. произойдет запись предыдущего значения?
-
Вопрос по графикам. В устройстве - запись в БД при изменении, дельта для сохранения - 100. Я правильно понимаю, что если текущее значение параметра будет отличаться на 100 единиц от предыдущего, то произойдет его запись? Иначе через ХХ сек. произойдет запись предыдущего значения?
Да, все верно, если в поле "При отсутствии изменений - не реже чем (сек)" стоит XX. Если там ноль - только при изменении.
Для часто меняющихся показателей (в т.ч. тока, мгновенной мощности) обычно интересны отклонения, а дельту выбрать трудно.
Для таких случаев удобно использовать вариант "Периодически" с периодом например 30 сек, а в поле "Сохранять за период значение" выбрать Min&Max. При этом все поступившие в течение 30 сек значения будут обработаны, среди них будет динамически определяться min и max и фиксироваться время. Через 30 сек выбранные min и max будут записаны в БД.
-
Добрый день!
Момент снова настал и uptomonth снова не обновился))
Пофиксили, но версию выпустить не успели
Добрый день! Скоро наступит uptomonth) не ожидается обновления?)
-
Добрый день!
Момент снова настал и uptomonth снова не обновился))
Пофиксили, но версию выпустить не успели
Добрый день! Скоро наступит uptomonth) не ожидается обновления?)
Заработало с последним обновлением. Спасибо!
-
А почему часть графиков на русском, а часть на английском?
-
А графики timeline у всех работают? Сегодня обратил внимание, что газовый котел и один из насосов вместе включились в ночь на 31 марта и до сих пор работают…в реальности все ОК. На мнемосхеме тоже все выключено.
-
Та же фигня с одним датчиком. Наличие 220В на вводе. Они всегда есть, на мнемосхеме есть, а в таймлайн выключено. Причем все остальные отлично работают