Графики IH Pro



  • Добрый день. Сделал новый график с двумя кривыми. Главное отличие от остальных - датчики опрашиваются 2 раза в секунду, в БД пишутся по изменению. Период отображения - сутки. Главная проблема в том, что при переходе на этот график страница iH виснет, процессор на клиентском нетбуке 100%, ОЗУ на на максимум тоже. Можно как-то оптимизировать отрисовку графиков?



  • @Alex_Jet:

    Добрый день. Сделал новый график с двумя кривыми. Главное отличие от остальных - датчики опрашиваются 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 секунд...



  • @Alex_Jet:

    Да я все понимаю. Но задача - некоторое время измерять напряжение на клеммах MegaD… чтобы не пропустить момент пришлось установить период 0,5 секунд...

    Понятно. Попробуйте min/max. Как раз в этом случае может помочь.
    @Alex_Jet:

    Можно как-то оптимизировать отрисовку графиков?

    Что понимать под оптимизацией? Мы этим занимались достаточно долго. Кроме как уменьшение количества отображаемых точек, ничего другого нет. Ведь графики отображает не специальная программа, а браузер. Возможно в будущем попробуем на WebGL или аналогичном движке.



  • @intrahouse:

    Что понимать под оптимизацией? Мы этим занимались достаточно долго. Кроме как уменьшение количества отображаемых точек, ничего другого нет. Ведь графики отображает не специальная программа, а браузер. Возможно в будущем попробуем на WebGL или аналогичном движке.

    Я понимаю так - при большом масштабе отбрасывание части подобных значений. При меньшем масштабе - отрбрасывание меньшей части подобных значений. Ну и при самом малом масштабе показ всех значений.



  • @intrahouse:

    @Alex_Jet:

    Да я все понимаю. Но задача - некоторое время измерять напряжение на клеммах MegaD… чтобы не пропустить момент пришлось установить период 0,5 секунд...

    Понятно. Попробуйте min/max. Как раз в этом случае может помочь.
    @Alex_Jet:

    Можно как-то оптимизировать отрисовку графиков?

    Что понимать под оптимизацией? Мы этим занимались достаточно долго. Кроме как уменьшение количества отображаемых точек, ничего другого нет. Ведь графики отображает не специальная программа, а браузер. Возможно в будущем попробуем на WebGL или аналогичном движке.

    А нельзя переложить расчет точек графика на сервер?



  • Для графиков ставились такие задачи:

    1. Динамическое отображение в режиме реального времени. То есть получение новой точки не перезагружает график, а только сдвигает его по оси X.

    2. Возможность плавной прокрутки графика вдоль оси X. Опять же без перезагрузки данных, плавно.

    3. Плавное масштабирование.

    4. Уменьшение объема хранимой информации в БД. То есть место на диске.

    @Alex_Jet:

    Я понимаю так - при большом масштабе отбрасывание части подобных значений. При меньшем масштабе - отрбрасывание меньшей части подобных значений. Ну и при самом малом масштабе показ всех значений.

    То есть при изменении масштаба запрашивать сервер на перерасчет и обновлять график с новыми данными.

    Таким образом убиваем первые три пункта задачи.
    @homa:

    А нельзя переложить расчет точек графика на сервер?

    На клиенте никакого расчета нет. Там только отображение того что получено с сервера.



  • @intrahouse:

    Для графиков ставились такие задачи:

    1. Динамическое отображение в режиме реального времени. То есть получение новой точки не перезагружает график, а только сдвигает его по оси X.

    2. Возможность плавной прокрутки графика вдоль оси X. Опять же без перезагрузки данных, плавно.

    3. Плавное масштабирование.

    4. Уменьшение объема хранимой информации в БД. То есть место на диске.

    @Alex_Jet:

    Я понимаю так - при большом масштабе отбрасывание части подобных значений. При меньшем масштабе - отрбрасывание меньшей части подобных значений. Ну и при самом малом масштабе показ всех значений.

    То есть при изменении масштаба запрашивать сервер на перерасчет и обновлять график с новыми данными.

    Таким образом убиваем первые три пункта задачи.
    @homa:

    А нельзя переложить расчет точек графика на сервер?

    На клиенте никакого расчета нет. Там только отображение того что получено с сервера.

    Понятно, тем не менее достаточно долго формируется график на клиенте, особенно на слабых планшетах, но не критично) с графиками все равно удобнее работать с ПК



  • Интересное совпадение по теме.

    Телеграмм на днях объявил конкурс на разработку библиотеки для графиков с призовым фондом $125000



  • У меня дома из "рабочих" остался только нетбук Acer с Win7, планшет тоже не новый - на них все тяжело ворочается, а график с множеством точек просто загоняет процессор и ОЗУ в красную зону, браузер предалагает закрыть страницу. Поэтому анализирую данные только на работе 😄 на мощном ноутбуке… Дома, как вариант, просмотреть графики на смартфоне...он явно мощнее домашних железок.



  • Ну а по поводу min/max.

    Это не решает задачи обнаружения всплесков?



  • При удалении кривых или при удалении самого набора графиков данные из БД удаляются?

    Хотя поставлю вопрос немного по другому. В iH предусмотрен какой-нибудь механизм удаления данных из БД? Например, при удалении графиков или удалении устройств?



  • @Alex_Jet:

    При удалении кривых или при удалении самого набора графиков данные из БД удаляются?

    Хотя поставлю вопрос немного по другому. В iH предусмотрен какой-нибудь механизм удаления данных из БД? Например, при удалении графиков или удалении устройств?

    Там на уровне таблиц все.

    Как только появляется источник значений (устройство), которые заносятся в БД - под него создается новая таблица.

    Поэтому можно удалять таблицу целиком. Удалятся все накопленные данные этого устройства. Если таблица сама не удаляется при отключении записи значений у устройства.

    Функция удаления таблицы есть.



  • @Erik:

    @Alex_Jet:

    При удалении кривых или при удалении самого набора графиков данные из БД удаляются?

    Хотя поставлю вопрос немного по другому. В iH предусмотрен какой-нибудь механизм удаления данных из БД? Например, при удалении графиков или удалении устройств?

    Там на уровне таблиц все.

    Как только появляется источник значений (устройство), которые заносятся в БД - под него создается новая таблица.

    Поэтому можно удалять таблицу целиком. Удалятся все накопленные данные этого устройства. Если таблица сама не удаляется при отключении записи значений у устройства.

    Функция удаления таблицы есть.

    Верно, удаление таблицы есть в разделе "Администрирование БД"

    Значения устройств (кроме счетчиков) хранятся в ежедневных таблицах records_yymmdd, которые можно удалять без проблем.

    При этом удалятся значения по всем устройствам за день 😞 Выборочного удаления данных по устройству сейчас нет



  • @intrapro:

    Верно, удаление таблицы есть в разделе "Администрирование БД"

    Значения устройств (кроме счетчиков) хранятся в ежедневных таблицах records_yymmdd, которые можно удалять без проблем.

    При этом удалятся значения по всем устройствам за день 😞 Выборочного удаления данных по устройству сейчас нет

    Про раздел администрирование конечно знаю и про ежедневные таблицы тоже. Однако думал, что из них можно удалить значения по конкретным устройствам.

    Вопрос по графикам. В устройстве - запись в БД при изменении, дельта для сохранения - 100. Я правильно понимаю, что если текущее значение параметра будет отличаться на 100 единиц от предыдущего, то произойдет его запись? Иначе через ХХ сек. произойдет запись предыдущего значения?



  • @Alex_Jet:

    Вопрос по графикам. В устройстве - запись в БД при изменении, дельта для сохранения - 100. Я правильно понимаю, что если текущее значение параметра будет отличаться на 100 единиц от предыдущего, то произойдет его запись? Иначе через ХХ сек. произойдет запись предыдущего значения?

    Да, все верно, если в поле "При отсутствии изменений - не реже чем (сек)" стоит XX. Если там ноль - только при изменении.

    Для часто меняющихся показателей (в т.ч. тока, мгновенной мощности) обычно интересны отклонения, а дельту выбрать трудно.

    Для таких случаев удобно использовать вариант "Периодически" с периодом например 30 сек, а в поле "Сохранять за период значение" выбрать Min&Max. При этом все поступившие в течение 30 сек значения будут обработаны, среди них будет динамически определяться min и max и фиксироваться время. Через 30 сек выбранные min и max будут записаны в БД.



  • @intrapro:

    @homa:

    Добрый день!

    Момент снова настал и uptomonth снова не обновился))

    Пофиксили, но версию выпустить не успели 😞

    Добрый день! Скоро наступит uptomonth) не ожидается обновления?)



  • @homa:

    @intrapro:

    @homa:

    Добрый день!

    Момент снова настал и uptomonth снова не обновился))

    Пофиксили, но версию выпустить не успели 😞

    Добрый день! Скоро наступит uptomonth) не ожидается обновления?)

    Заработало с последним обновлением. Спасибо!



  • А почему часть графиков на русском, а часть на английском?
    graph.JPG



  • А графики timeline у всех работают? Сегодня обратил внимание, что газовый котел и один из насосов вместе включились в ночь на 31 марта и до сих пор работают…в реальности все ОК. На мнемосхеме тоже все выключено.
    iH_Timeline_Error.png


Log in to reply