История данных MQTT

Добрый день.
Настроил в истории MQTT для всех топиков с температурой отдельную группу.
Но данные все равно показываются не более чем за 1-2 суток.
В чем может быть дело?

Файл конфигурации wb-mqtt-db.conf

{
  "database": "/var/lib/wirenboard/db/data.db",
  "debug": false,
  "groups": [
    {
      "channels": [
        "+/+"
      ],
      "max_burst": 30,
      "min_interval": 30,
      "min_unchanged_interval": 1200,
      "name": "all",
      "values": 100000,
      "values_total": 1000000
    },
    {
      "channels": [
        "wb-w1/+",
        "wb-msw-v4_22/Temperature",
        "wb-msw-v4_135/Temperature",
        "wb-msw-v4_12/Temperature",
        "wb-msw-v4_49/Temperature",
        "wb-msw-v4_55/Temperature",
        "wb-msw-v4_13/Temperature",
        "wb-msw-v4_66/Temperature",
        "wb-msw-v4_16/Temperature",
        "wb-msw-v4_180/Temperature",
        "wb-msw-v4_40/Temperature",
        "wb-msw-v4_58/Temperature",
        "wb-msw-v4_87/Temperature",
        "wb-msw-v4_195/Temperature",
        "wb-msw-v4_209/Temperature",
        "wb-msw-v4_213/Temperature",
        "wb-msw-v4_216/Temperature",
        "wb-ms_97/Temperature",
        "wb-ms_164/Temperature",
        "wb-m1w2_14/External Sensor 1",
        "wb-m1w2_15/External Sensor 1",
        "wb-m1w2_39/External Sensor 1",
        "wb-m1w2_63/External Sensor 1",
        "wb-m1w2_77/External Sensor 1",
        "wb-m1w2_241/External Sensor 1",
        "wb-m1w2_94/External Sensor 1",
        "wb-m1w2_102/External Sensor 1",
        "wb-m1w2_120/External Sensor 1",
        "wb-m1w2_145/External Sensor 1",
        "wb-m1w2_148/External Sensor 1",
        "wb-m1w2_170/External Sensor 1",
        "wb-m1w2_181/External Sensor 1",
        "wb-m1w2_205/External Sensor 1",
        "wb-m1w2_237/External Sensor 1",
        "wb-m1w2_242/External Sensor 1",
        "wb-m1w2_28/External Sensor 2",
        "wb-m1w2_34/External Sensor 2",
        "wb-m1w2_14/External Sensor 2",
        "wb-m1w2_15/External Sensor 2",
        "wb-m1w2_39/External Sensor 2",
        "wb-m1w2_63/External Sensor 2",
        "wb-m1w2_77/External Sensor 2",
        "wb-m1w2_241/External Sensor 2",
        "wb-m1w2_94/External Sensor 2",
        "wb-m1w2_102/External Sensor 2",
        "wb-m1w2_120/External Sensor 2",
        "wb-m1w2_145/External Sensor 2",
        "wb-m1w2_148/External Sensor 2",
        "wb-m1w2_170/External Sensor 2",
        "wb-m1w2_181/External Sensor 2",
        "wb-m1w2_205/External Sensor 2",
        "wb-m1w2_237/External Sensor 2",
        "wb-m1w2_242/External Sensor 2",
        "wb-m1w2_28/External Sensor 2",
        "wb-m1w2_34/External Sensor 2"
      ],
      "max_burst": 30,
      "min_interval": 30,
      "min_unchanged_interval": 1200,
      "name": "Температура",
      "values": 100000,
      "values_total": 1000000
    }
  ]
}

diag_output_AC6A3GB6_2025-02-14-15.24.16.zip (583,5 КБ)

Прикинул по расчетам, с этих 4 датчиков за 34-35 часов накапало ~6900 записей
на 55 топиков получаем ~95 000 записей. у Меня в настройках 1 000 000. Не похоже, что выгребается ограничение в 1 000 000 на группу.

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

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

У вас две группы - all и Температура. Если один контрол описан в двух группах, то будет использована только настройка из верхней группы в списке. В вашем случае из группы all. У вас не так?

1 лайк

Да, именно так.
Неочевидная особенность.
В интерфейсе новые группы добавляются в конец.
Т.е. нужно группу all делать всегда последней?

Да.

А есть ещё какая-то возможность поменять группы местами кроме того, чтобы удалить группу all и создать ее снова в конце списка?

Я сделал через правку конфига напрямую

А где конфиг лежит не могли бы уточнить?


Там прямо в веб интерфейсе есть кнопочка JSON. Оттуда можете скопировать в любой редактор, подправить, вставить обратно и сохранить

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

Добрый день.
Вопрос не решился. Я поменял в конфиге местами группы, но это не помогло.
история по прежнему всего за 3 дня.


приложен диагностический архив, доступен только сотрудникам поддержки
(488,6 КБ)

У вас настроено сохранение 100 000 записей на канал. Если значение меняется часто, то каждые две минуты будет записываться 30 значений. В итоге, 100 000 записей будет записано за 3 суток с небольшим. Еще есть ограничение на группу, т.е. если датчиков больше 10, то будет срабатывать групповое ограничение.

Дмитрий, добрый день.
Можете тогда пояснить как считается итоговое кол-во записей?
Я открываю график за три дня, нажимаю экспорт в csv, и там оказывается 768 записей. Это не то значение?

Кроме того, я открываю график влажности (который не входит в группу Температура, но входит в группу all) и там точно такой же временной интервал, с разницей в пару минут.


Очень похоже на то, что температура все равно попадает в группу All.

Призову на помощь старших товарищей.

Добрый день.
Весьма похоже что группа “all” стоит первой (верхней)
(Как описано) Посмотрел - сейчас в документации этого нет
То есть для той группы что стоит первой лимиты (максимальные значения) применяются ко всем.
То есть - контролы могут попадать в несколько грцупп. Например в “all” и еще в какую-нибудь.
В этом случае лимиты применяются для верхней.
Если нужна все ж “all” - сделайте ее ниже.

Добрый день!
Спасибо за ссылку на документацию, сколько ни искал - не смог ее найти.
Было бы неплохо добавить ссылку на документацию в веб интерфейса настроек истории.
И там стоит написать про особенности порядка групп и лимитов.

Я скидывал выше скриншот, первой стоит группа Температура, потом уже all

текущий /etc/wb-mqtt-db.conf
{
  "database": "/var/lib/wirenboard/db/data.db",
  "debug": false,
  "groups": [
    {
      "channels": [
        "wb-w1/+",
        "wb-msw-v4_22/Temperature",
        "wb-msw-v4_135/Temperature",
        "wb-msw-v4_12/Temperature",
        "wb-msw-v4_49/Temperature",
        "wb-msw-v4_55/Temperature",
        "wb-msw-v4_13/Temperature",
        "wb-msw-v4_66/Temperature",
        "wb-msw-v4_16/Temperature",
        "wb-msw-v4_180/Temperature",
        "wb-msw-v4_40/Temperature",
        "wb-msw-v4_58/Temperature",
        "wb-msw-v4_87/Temperature",
        "wb-msw-v4_195/Temperature",
        "wb-msw-v4_209/Temperature",
        "wb-msw-v4_213/Temperature",
        "wb-msw-v4_216/Temperature",
        "wb-ms_97/Temperature",
        "wb-ms_164/Temperature",
        "wb-m1w2_14/External Sensor 1",
        "wb-m1w2_15/External Sensor 1",
        "wb-m1w2_39/External Sensor 1",
        "wb-m1w2_63/External Sensor 1",
        "wb-m1w2_77/External Sensor 1",
        "wb-m1w2_241/External Sensor 1",
        "wb-m1w2_94/External Sensor 1",
        "wb-m1w2_102/External Sensor 1",
        "wb-m1w2_120/External Sensor 1",
        "wb-m1w2_145/External Sensor 1",
        "wb-m1w2_148/External Sensor 1",
        "wb-m1w2_170/External Sensor 1",
        "wb-m1w2_181/External Sensor 1",
        "wb-m1w2_205/External Sensor 1",
        "wb-m1w2_237/External Sensor 1",
        "wb-m1w2_242/External Sensor 1",
        "wb-m1w2_28/External Sensor 2",
        "wb-m1w2_34/External Sensor 2",
        "wb-m1w2_14/External Sensor 2",
        "wb-m1w2_15/External Sensor 2",
        "wb-m1w2_39/External Sensor 2",
        "wb-m1w2_63/External Sensor 2",
        "wb-m1w2_77/External Sensor 2",
        "wb-m1w2_241/External Sensor 2",
        "wb-m1w2_94/External Sensor 2",
        "wb-m1w2_102/External Sensor 2",
        "wb-m1w2_120/External Sensor 2",
        "wb-m1w2_145/External Sensor 2",
        "wb-m1w2_148/External Sensor 2",
        "wb-m1w2_170/External Sensor 2",
        "wb-m1w2_181/External Sensor 2",
        "wb-m1w2_205/External Sensor 2",
        "wb-m1w2_237/External Sensor 2",
        "wb-m1w2_242/External Sensor 2",
        "wb-m1w2_28/External Sensor 2",
        "wb-m1w2_34/External Sensor 2"
      ],
      "max_burst": 30,
      "min_interval": 120,
      "min_unchanged_interval": 1200,
      "name": "Температура",
      "values": 100000,
      "values_total": 1000000
    },
    {
      "channels": [
        "+/+"
      ],
      "max_burst": 30,
      "min_interval": 30,
      "min_unchanged_interval": 1200,
      "name": "all",
      "values": 100000,
      "values_total": 1000000
    }
  ]
}

Возможно под капотом используется другая сортировка, например по алфавиту (например если все группы загоняются в хэшмап)

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

А посмотрите пожалуйста, сколько сейчас записей, для топика “wb-msw-v4_22/Temperature” например.

Так же за 3 дня

в csv при экспорте 700 записей

Сколько записей в базе. То есть для канала всего. Это не имеет отношения к экспорту.

Как мне это посмотреть?