Работа с историей

Добрый день! У меня задача подсчета. Я все считаю и считаю хорошо и правильно, а теперь мне надо вывести на экран в виджетах количество сделанного сегодня (текущее значение, которое будет меняться раз в 1 минуту), вчера и позавчера, плюс все это надо разбить по сменам 1 сегодня, 1 вчера, 1 позавчера, 2 сегодня, 2 вчера, 2 позавчера, 3 сегодня, 3 вчера, 3 позавчера. И я хочу эти данные брать запросом из истории, а именно

  1. посылаю запрос получить текущее значение
  2. посылаю запрос получить значение в начале смены
  3. от текущего отнимаю значение, полученное в начале смены и вывожу на экран
    и это будет для одно смены
    и для остальных смен также

Правильным путем я пошел или нет?

Добрый день!

Для работы с базой данных внутри контроллера вам потребуется утилита wb-mqtt-db-cli.

Из практики могу порекомендовать использовать Grafana — с ней решение подобных задач проще, а визуализация значительно гибче.

Прочитал я всю информацию по вашей ссылке и ничего не понял, что мне надо написать в правиле чтобы узнать какая величина была моей переменной 3 дня назад. На странице какие то скрипты на Python и причем тут Python не понятно, я хочу в правиле сделать запрос в базу и получить ответ, как это реализовать?

Добрый день!

Напрямую выполнить запрос нельзя — требуется использование команды вида:
runShellCommand("ваш запрос в базу");

Сам запрос к базе данных выполняется с помощью утилиты wb-mqtt-db-cli, примеры работы приведены в документации.

Вот пример.
Ну нужно использовать вызов внешней команды, RPC уже существует и описан.

Я наверное торможу или не ту документацию смотрю, можете сбросить принтскрин из документации, где дан запрос в БД, чтобы я мог его переписать и вставить в свое правило, а результат запроса занести в переменную?

чт, 16 окт. 2025 г., 20:19 Андрей Радионов через Wiren Board Support <info@wirenboard.com>:

В продолжение к предыдущему письму, может есть видео или готовое правило, которое я бы мог адаптировать под свою задачу?

чт, 16 окт. 2025 г., 21:23 Денис Бабицкий <denis@vec-tech.by>:

Для примера: Выгрузка исторических данных во внешнее приложение - #18 от пользователя ega1978
Вот еще: формат запроса rpc - #4 от пользователя KSK

Или я не правильно задал вопрос или вы не поняли. Мне не нужно выгружать данные во внешнее приложение. Я хочу в правиле узнать чему ровнялось значение моего топика 3 дня назад в 8 часов 00 минут. Эта задача решаемая?

![На изображении представлен интерфейс системы Wirenboard с разделом "Правила", где перечислены различные файлы JavaScript. (Captioned by AI)|619x500](upload://wm6DnQuRXHAQfeZpWHryArOwIXd.png)


``

Совершенно непринципиально, методы работы те же.


а что тогда делает этот запрос, который я нашел здесь?

Выполняет wb-mqtt-db-cli с параметрами и парсит его вывод.

а чем отличается то что вы прислали от этого?

Лично я, если количество смен и история не на месяцы назад, пошел бы другим путём: я бы внутри правил считал нужную мне статистику, и выводил бы эти данные из локальных переменных. Да, понятно, что тут нужно писать программу, точнее скрипт в правилах, на двух строчках тут не объяснить.
Если бы количество данных было запредельных, то использовал бы графану, как предлагали выше, или вообще скаду.

И где почитать как делать эти запросы по ссылке что вы дали правило не написать?

Зачем мне скада, мне надо просто узнать чему равнялся топик 3 дня назад и вывести в виджет на панель. Я же вижу что эти данные есть на контроллере, по этим данным строится график, а вы мне предлагаете что бы узнать два значения графану ставить и скаду. Просто можте мне сказать как сделать запрос и получить значение на определенную дату.
когда я нажимаю кнопку загрузить данные что происходит?

я хочу получить вот эти значения

только у себя в правиле,

не ужели это нельзя сделать штатными средствами?
Вы же без графаны эти значения получаете и выводите?

Вот, очень подробное описание: GitHub - wirenboard/mqtt-rpc: MQTT RPC protocol description for Wiren Board

Нужно сформировать RPC запрос и по его выполнению - разобрать json с оветом.
То есть сервису отправляется запрос и он на него что-то возвращает.

В топик RPC, который слушает сервис публикуется запрос. Затем интерфейс читает из топика ответ и выводит его. Это можно просто посмотреть, подписавшись на топики.

есть у вас аналог такого запроса SELECT topic1 FROM table1 WHERE data=2025-10-16, ответ мне надо получить в правило, не в терминале не в другое приложение, а в правило, в тоже правило, которое вызвало запрос

Я лишь написал, как бы поступал я. Разумеется ваш способ тоже имеет право на существование, но возможности написать такое правило у меня нет.

С кем я переписываюсь Вы техподдержка или просто сторонний наблюдатель?