Настройка и работа с графиками в системе



  • Добрый день!

    Прошу осветить данный вопрос.

    В принципе сделал нужные мне наборы графиков. Включил фиксацию нужных данных, добавил графики, которые входят в свои наборы графиков. Однако есть ньюансы в фиксации данных, либо отображении графиков. Сейчас делаю фиксацию каждые 300 секунд. Некоторые каналы считываю так же каждые 300 секунд, однако почему-то показания на графиках и в вебе различные. Например, в вебе наблюдаю значения больше 10, на графике (после перехода и доп.обновления) наблюдаю меньше 8 (как будто предыдущее измерение) и далее апроксимация. Сценарии срабатывают как надо (судя по значениям в вебе), однако по графику этого не вижу. Позже снова смотрю на график - он достроился по реальным показаниям. Вывод график не строиться в реальном времени.

    Вопрос - как сделать построение графика он-лайн. Канал считался - значение отобразилось в вебе, записалось в БД и соответственно отобразилось на графике?



  • Добрый день, извините за задержку с ответом 🙂

    @Alex_Jet:

    Сейчас делаю фиксацию каждые 300 секунд. Некоторые каналы считываю так же каждые 300 секунд, однако почему-то

    показания на графиках и в вебе различные. Позже снова смотрю на график - он достроился по реальным показаниям.

    Это происходит из-за того что интервал сохранения данных и интервал получения данных имеют разные точки отсчета:

    данные получены, но в базу будут записаны в худшем случае почти через 5 мин (300 сек), если предыдущее значение было записано

    только что.

    @Alex_Jet:

    Вопрос - как сделать построение графика он-лайн. Канал считался - значение отобразилось в вебе, записалось в БД и соответственно отобразилось на графике?

    Нужно поставить галку: Cохранять при изменении. Тогда запись в БД будет делаться синхронно с получением данных

    при условии изменения. В вашем случае, если данные поступают регулярно и при этом достаточно редко, это лучший вариант.

    Сохранять с интервалом используется обычно, если данных очень много. Или наоборот, мало, а точки на графике хочется видеть.

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



  • @intrapro:

    Нужно поставить галку: Cохранять при изменении. Тогда запись в БД будет делаться синхронно с получением данных

    при условии изменения.

    Хорошо, тогда чтобы сохранять каждое считанное значение надо в поле "Дельта изменения до следующего сохранения" записать 0?

    Что такое "Допуск при сжатии аналоговых данных?" Это усреднение кривой? Можно поподробнее.



  • @Alex_Jet:

    Хорошо, тогда чтобы сохранять каждое считанное значение надо в поле "Дельта изменения до следующего сохранения" записать 0?

    Да.

    @Alex_Jet:

    Что такое "Допуск при сжатии аналоговых данных?" Это усреднение кривой? Можно поподробнее.

    Для аналоговых данных применяется алгоритм Дугласа-Пекера, используем библиотеку simplify.js

    "Суть алгоритма состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию ε > 0 между исходной и упрощённой кривыми."

    Допуск при сжатии - это и есть ε



  • Понятно. Спасибо!



  • Можно как-нибудь отключить все сглаживания/интерполяцию графиков? Чтобы все отображалось один в один - получил в 10:30 значение 167, перешел на график - а там в 10:30 появилось значение 167, а не непонятно какое интерполированное.



  • В дневных и часовых графиках всегда отображаются т.н. сырые данные. Если стоит настройка "Сохранять при изменении" и Дельта=0, то время получения совпадает с временем получения данных.

    Если речь идет о выводе последнего значения равным последнему полученному, было сделано по просьбе пользователей 😞 . Возможно, сделаем опционально.

    На месячных и годовых графиках сейчас данные всегда сглаживаются, чтобы уменьшить объем.



  • @intrapro:

    Если стоит настройка "Сохранять при изменении" и Дельта=0, то время получения совпадает с временем получения данных.

    Стоит дельта=0 и "Сохранять при изменении". Однако на суточном графике как-то аппроксимируются значения. Например, сейчас сработал канал от условия датчик освещенности > 110 (показания реальные - 116). Захожу в график, а там идет какая-то 5-10 минутная прямая линия от предыдущего значения, например 95. И только спустя минут 10-15 вижу, что реально график пошел на верх (светает, однако).

    Справедливости ради отмечу, что опрос датчика освещенности - раз в 5 минут.


Авторизуйтесь, чтобы ответить