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

Пожалуй проще всего - выполнить к базе, например такой запрос:

echo "select count(CHANNEL), (select device from channels where channels.int_id=data.channel) as DEVICE, (select control from channels where channels.int_id=data.channel) as CHANNEL from data group by CHANNEL;" | sqlite3 [путь к файлу]data.db

То есть скопируйте на компьютер базу и выполните.

2000 записей

А для группы целиком? Если количество соответствует настройкам - то сервис работает верно.

В базе данных есть информация о группе?

Нет. Только контролы устройств.

Ну тогда только ручками в запросе собирать всю группу.
Ну я попробую

Такой запрос вернул все топики из группы:

select count(*), ch.device as device, ch.control as control, concat(ch.device, '/', ch.control) as topic from channels ch, data d where ch.int_id=d.channel and topic regexp '(wb-w1/.+|(wb-msw-v4_|wb-ms_)\d+/Temperature|wb-m1w2_\d+/External Sensor \d)' group by device, control

Всего 35 топиков, получилось 62915 записей, явно меньше установленного лимита в 1 000 000 на группу.

Попробовал воспроизвести. Да, добавление группы “all” послежней вызывает применение ее настроек на все каналы:

{
    "database": "/var/lib/wirenboard/db/data.db",
    "debug": false,
    "groups": [
        {
            "channels": [
                "WB-MSW_Basement/+",
                "WB-MSW_2floor/+",
                "Parent_bedroom/+",
                "Parent_storage/+",
                "child_bedroom/+",
                "Mini battery TH/+",
                "WallSensor_Screen/+"
            ],
            "max_burst": 15,
            "min_interval": 30,
            "min_unchanged_interval": 1200,
            "name": "climate",
            "values": 500000,
            "values_total": 5000000
        },
        {
            "channels": [
                "wb-map6s_27/+",
                "SocketRelay_2floor/+",
                "DaniilComp/energy",
                "Refrigerator/energy"
            ],
            "max_burst": 4,
            "min_interval": 60,
            "min_unchanged_interval": 1200,
            "name": "Energy",
            "values": 400000,
            "values_total": 4000000
        },
        {
            "channels": [
                "+/+"
            ],
            "max_burst": 30,
            "min_interval": 120,
            "min_unchanged_interval": 1200,
            "name": "all",
            "values": 4000,
            "values_total": 40000
        }
    ]
}

Получаю:

Mar 03 12:12:56 wirenboard-AQASN7R6 wb-mqtt-db[1403]: INFO: [dblogger] Group data limit is reached: group all, row count 9118577, limit 40000

Попробовал all перенести вверх - получаю

Mar 03 15:16:20 wirenboard-AQASN7R6 wb-mqtt-db[14300]: INFO: [dblogger] Group data limit is reached: group all, row count 9117507, limit 40000

Попробуйте совсем убрать all.

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

Игорь, прошу прощения за глупый вопрос, но все же - если вы ручками этот файл правили, то потом сервис wb-mqtt-db ручками перезапускали?

Я правил через UI, т.е. через кнопку JSON, скопировал, изменил, вставил обратно и нажал сохранить. Предполагаю, что через UI сервис сам перегружается.

Это так.

Подключил программистов, завтра посмотрят.

Добрый день.
Получилось найти решение?

Пока еще в работе, тут, скорее всего глобальное изменение требуется.

Проверьте пожалуйста, уже в актуальном (2504) релизе.

Обновился до последнего стейбла 2504, понаблюдаю, отпишусь вам по результату

Ну, отлично. У меня не воспроизводится - если будут какие-то проблемы создайте пожалуйста новую тему.

Да, теперь группы работают правильно, независимо.
Группа Температура хранится дольше.
Благодарю за помощь!