Как работать с базой данных HIstory. wb-mqtt-db

Кхм… база данных имеет информацию по тем данным, которые у нее есть. Вы можете в zabbix завести показатель, а потом по нему вставить историю из другой базы. Из Sqlite например…
Zabbix Mysql база имеет открытую и очень понятную структуру. (но временные запросы лучше строить в PostgreSQL). Я завел показатели в Zabbix - счетчики воды, электричества, тепла и формирую из них посредством SQL запросов выборку за нужные периоды с учетом нескольких тарифов. Потом настроил связку Openhab2 и отдельно nginx+uwsgi+flask(python) и нарисовал приличный интерфейс с графиками, которые мне нужно. Сделал как я хотел, могу крутить как хочу и тп…

Это в разработке еще… идей много… времени мало

dead_Ivanich, Если у меня нет отдельного компьютера с Linux, то Zabbix Server я не смогу использовать?
А если поставить Zabbix Server на WB6, а на комп с Windows Zabbix Agent?

В чем проблема?

wb-mqtt-db-cli -h 127.0.0.1 --from “2019-02-11” --to “2019-02-12” --limit 10 -d’;’ devices/wb-adc/controls/5Vout

Traceback (most recent call last):

File “/usr/bin/wb-mqtt-db-cli”, line 182, in

main()

File “/usr/bin/wb-mqtt-db-cli”, line 157, in main

raise err

mqttrpc.client.MQTTRPCError: Server error [-32000]: ‘channels’ items must be an arrays of size two

Добрый день!
У вас не те кавычки и апострофы (не знаю, как вы этого добились; возможно, в каком-то текстовом редакторе сохраняли команду); девайс назван не так, как требуется.

root@wirenboard-AH2M5RIF:~# wb-mqtt-db-cli -h 127.0.0.1 --from "2019-02-11" --to "2019-02-12" --limit 10 -d';' wb-adc/5Vout
channel;time;average;min;max
wb-adc/5Vout;2019-02-11 00:01:21.000000;5.01998637602178;5.01;5.02
wb-adc/5Vout;2019-02-11 00:03:21.000000;5.02;;
wb-adc/5Vout;2019-02-11 00:15:21.000000;5.01998441153561;5.01;5.02
wb-adc/5Vout;2019-02-11 00:23:21.000000;5.01998635743518;5.01;5.02
wb-adc/5Vout;2019-02-11 00:25:21.000000;5.01994535519125;5.01;5.02
wb-adc/5Vout;2019-02-11 00:35:21.000000;5.01998910675385;5.01;5.02
wb-adc/5Vout;2019-02-11 00:43:21.000000;5.02;;
wb-adc/5Vout;2019-02-11 00:47:21.000000;5.01999090909101;5.01;5.02
wb-adc/5Vout;2019-02-11 00:55:21.000000;5.01998637602178;5.01;5.02
wb-adc/5Vout;2019-02-11 01:03:21.000000;5.01998637602178;5.01;5.02

Как это не те?! Это шутка! Я их в командной строке вбивал.

Что значит не так назван. Если задать wb-adc/5Vout, то выводится всегда:

channel;time;average;min;max

С другими параметрами тоже пустые значения выводятся.

Не понял, что вы имели в виду. Вот кавычки из вашего сообщения:

вот из моего:

Легко заметить, что они разные.

Почему нет истории, сходу сказать не могу. Если зайти в History, то там данные есть? Пришлите скриншот, пожалуйста.

As you wish… вариантов масса. можете виртуальный линукс запустить в hyper-v!
zabbix agent это агент , а не удаленный терминал. Zabbix server на wb6 наверное можно запустить, но я использую его только как mqtt брокера и интерфейсы…

да тупиковая эта ветка, поверьте… я про использование sqlite

dead_Ivanich, Проблема в том, что я пока не нашел ни одного нормального способа извлекать данные с WB6, кроме кривоватого UI. (Впрочем, это тоже не выход, т. к. мне нужно вытягивать архивные данные из базы.)
Заводить ради этого еще один компьютер с Linux или мучаться с виртуальной машиной я не буду.
Нужен способ, который будет гарантированно работать в Windows без плясок с бубном!

ставьте заббикс на винду и алга.
ставьте mqtt на винду и тащите туда топики какие надо
монтируйте на винду раздел с wb6 и “щупайте” непосредственно файлуху
пишите программу на запускайте на WB6 и пишите по сетке на винду в базу данных топики или что надо

Вариантов - миллион. Правда все они требуют
определенных усилий

Сорри за некропостинг. Вопрос по теме.

Есть ли возможность работать с историческими данными в скриптах wb-rules?

Хочу иметь среднюю температуру с датчика.

если в консоли: используем команду вида
wb-mqtt-db-cli -h 127.0.0.1 --from '2020-06-16 09:06:30' --to '2020-06-18' --limit 1 -d';' wb-adc/5Vout |tail -1 | cut -f 3 -d';'
для нужного устройства, периода времени (период - можно указывать переменными ессно).
tail -1 | cut -f 3 -d’;’ - вернет третье (среднее значение параметра за период) поле второй (последней) строки

В скрипте пользоваться так:

    runShellCommand("wb-mqtt-db-cli -h 127.0.0.1 --from '2020-06-16 09:06:30' --to '2020-06-18' --limit 1 -d';' wb-adc/5Vout |tail -1 | cut -f 3 -d';'",
        {
      captureOutput: true, //Захватывать stdout
      captureErrorOutput: true, //Захватывать stderr (если нужно)
      exitCallback: function (exitCode, capturedOutput, capturedErrorOutput) //Функция, в которую попадает вывод
            {
                log("cmd output: " + capturedOutput); //Делаем с данными что угодно(в переменную, например)
                log("cmd Erroroutput: " + capturedErrorOutput);
            }
         })

Еще один вариант, предложенный настоящим гуру:

  // Запуск shell-команды с запросом в историю
    runShellCommand("wb-mqtt-db-cli -h 127.0.0.1 --from '2020-06-11 09:06:30' --to '2020-06-18' --limit 1 -d';' wb-adc/5Vout |tail -1",
        {
      captureOutput: true, //Захватывать stdout
      captureErrorOutput: true, //Захватывать stderr (если нужно)
      exitCallback: function (exitCode, capturedOutput, capturedErrorOutput) //Функция, в которую попадает вывод
            {
                log("cmd output: " + capturedOutput); //строка полностью
              	log("channel: " +capturedOutput.split(";")[0]) // channel
				log("time: " +capturedOutput.split(";")[1]) // time
				log("average: " +capturedOutput.split(";")[2]) // average
				log("min: " +capturedOutput.split(";")[3]) // min
				log("max: " +capturedOutput.split(";")[4]) // max
                log("cmd Erroroutput: " + capturedErrorOutput);
            }
         })
2 лайка

Спасибо большое.

Я в итоге решил через таймеры и сохранение значений в PersistentStorage и расчет среднего значения при каждом обновлении.