В history глубина записи 2-4 суток. Началось все с появления plotly (в версиях ПО до него было все нормально). 28 июня сделал сброс к заводским установкам, на текущий момент 06 июля. В history если выбрать диапазон 2021-06-28 2021-07-07, то показывает данные со 2 июля. При этом таблица под графиком со значениями показывает только сегодняшние.
Не нашел никакой инструкции как пользоваться history в текущем исполнении. Есть ли у вас она на сайте?
Как можно вытащить данные без plotly?
Как настроить history? Указать какие данные сохранять а какие нет? Как регулировать глубину записи для каждого топика отдельно?
Настройки все стандарнтые. К WB подключено 5 шт ds18b20 и wb-map6s fw2. data.db занимает 10МБ.
Как настроить history? Указать какие данные сохранять а какие нет? Как регулировать глубину записи для каждого топика отдельно?
History настраивается на вкладке Settings → Configs → MQTT History Configuration
На странице можно создавать группы топиков для архивирования: задать имя группы, топики для архивирования, задать максимальное количество записей для топика, для группы, интервал архивирования. По умолчанию выбраны все топики (+/+) , группа называется all.
Тут идея в том, что указываются те топики, для которых нужно хранить историю. По умолчанию архивируются все топики (+/+). Если для всех подряд не нужно, то группу удобнее переименовать (“all” → в понятное название) и добавить только те топики, которые нужны по отдельности или по маске. Поле MQTT topic pattern пустым не оставляйте: или заполните или удалите. Можно создавать несколько групп, в группе можно добавлять сколько нужно топиков.
Вот пример страницы Settings → Configs → MQTT History Configuration. Тут я для примера выбрал все топики, которые начинаются с buzzer, и один топик напряжения hwmon/Vin. Остальные топики не будут архивироваться. Список доступных топиков можно посмотреть на странице Settings → MQTT Channels (из полного имени нужно убрать /devices/ и /controls/).
Глубина архивирования задается количеством точек архивирования для топика и для группы. При превышении заданного количества точек самые старые будут автоматически удаляться.
При отображении на графике и в виде csv при разном масштабе может отображаться разное количество точен. Поэтому выбирайте самый крупный масштаб по возможности. Также внимательно указывайте дату начала и конца для просмотра истории (легко ошибиться). Для простомтра страницы History рекомендуем использовать браузер Chrome.
Вам спасибо за замечания, постараемся дополнить документацию.
Галка debug logging - относится к установкам групп и топиков или это просто расширенное логгирование всего?
Установка этой галочки означает вывод дополнительной информации о работе сервиса архивирования в лог. Просмотр лога командой journalctl в командной стоке Линукса (опции добавьте как нужно из описания).
Почему “+”? Простите не могу не докопаться, это же не логично, везде в таких случаях используются “*”.
Прошло несколько дней, данные теперь сохраняются, спасибо. Появилась еще пара вопросов. Подскажите пожалуйста.
Я убрал группу +/+ но размер базы не изменился, подозреваю, что старые данные там остались. Они сами со временем сотрутся или мне теперь вручную надо стирать? Я про те данные на которые в текущий момент у меня каких-либо настроек в history не стоит.
Когда начнет заканчиваться свободное место, старые данные начнут затираться вне зависимости от настроек или у меня будет проблема и надо этим за ранее озаботиться?
Если я хочу обнулить базу, как это правильно сделать? теоретически я понимаю, что могу просто файл БД в настройках поменять, но если хочу по правильному.
Подключил к А1 геркон на дверь. Работает, дверь открываешь - состояние меняется. В history для него делаю:
topic: wb-gpio/A1_IN - дискретный, мне надо только открыто/закрыто
Number of values to store, per topic: 20000
Number of values to store, per group: 20000
Minimum time interval between two data points (s): 1 сек.
Minimum time interval between two data points with the same value (s): 1
Дверь открывалась дольше, чем на 1 сек. Топик бинарный. Откуда взялись 0,75? Почему при установке Minimum time interval between two data points with the same value (s): 1 Так мало записей? Я же правильно понимаю, что этот параметр должен писать в базу состояние топика в моем случае каждую секунду?
Прошивка 202106250954_stable_webupd_wb67 заливалась как сброс к заводским. Плюс обновление с неделю назад.
Когда начнет заканчиваться свободное место, старые данные начнут затираться вне зависимости от настроек или у меня будет проблема и надо этим за ранее озаботиться?
Должны затираться сами.
Если я хочу обнулить базу, как это правильно сделать? теоретически я понимаю, что могу просто файл БД в настройках поменять, но если хочу по правильному.
Попробуйте увеличить масштаб для просмотра (график динамически изменяет количество точек для отображения при разном масштабе).
Так мало записей? Я же правильно понимаю, что этот параметр должен писать в базу состояние топика в моем случае каждую секунду?
В базу должны записываться все точки. Но в зависимости от выбранного масштаба на экране и в виде CSV отображаться может разное количество точек и еще усреднение. Попробуйте укрупнить масштаб отображения. Уже разговаривали с программистами, что это не очень удобно и понятно, они обещали подумать над улучшениями.
Поставил интервал 10 минут. 4 записи. Картинку прикрепляю.
Было бы очень полезно иметь возможность отключать это усреднение. При скачивании csv меня интересуют точные данные, а не усредненные.
А еще лучше вариант просмотра необработанных данных в web интерфейсе, а не только через консоль.
Также пожелание - возможность округлять значения. Например, тот же ds18b20 показывает в history, порой, 15 знаков после запятой. Он у меня воду горячую меряет в стояке, мне максимум точность до 0,1 надо. А реально вопще только целые.
Кажется разобрался.
У вас в БД пишется макс, мин значения и их среднее. За какой-то промежуток (пока не понял какой). В history выдает только вот это вот среднее. devices/wb-gpio/controls/A1_OUT может принимать 0 или 1, зато среднее арифметическое может быть любым. Чтобы корректно показывало, надо выводить либо медианное значение, либо как-то учитывать формат. В конкретном случае с дверью, нужны данные когда она реально была открыта и закрыта, а не среднее. Учесть еще защиту от дребезга.
Нет, если место на разделе закончится, например из-за того что будет занято другими файлами - данные в БД удаляться не будет. Удаляются только при превышении установленного количества записей.
А как тогда решить эту задачку? Нельзя же за ранее рассчитать ни размер БД ни как будет меняться место на разделе.
Допустим, можно как мониторить свободное место как таковое и при определенном пороге давать уведомление пользователю. Но сокращать размер записей придется уже “на ощупь”.
Хорошо, как тогда вам оформить запрос на изменение работы этого модуля? Тут или отдельной темой?
В текущей реализации крайне неудобно пользоваться history.
Бинарные значения. Пример геркон/клапан и тд. Он должен быть либо 0 либо 1. History выдает среднее значение 0,75, 0,66666 и тд. При чем не совсем понятно еще и за какой промежуток времени. В итоге невозможно ни построить график, ни вытащить значения для экспорта в csv, через web интерфейс. В саму БД тоже пишутся зачастую средние значения за какое-то время. Т.е. геркон мог сработать 3-4 раза, а запись в БД будет одна.
Из-за тех же средних значений показания датчиков температуры принимают значения с диким количеством знаков после запятой (10+), что тоже крайне неудобно, предлагаю добавить такой параметр как округление для средних значений. До целых, десятых, сотых… При этом min/max значения не трогать.
Добавить возможность выгрузки сырых значений не только через cli специальной утилитой, но и через web интерфейс.
Да, можно здесь. Пожелания передам разработчикам на совещании, впишу в перечень запросов. Уже был по этому поводу разговор. Но обещать что-то пока, наверное, не получится.