Как устроить обмен данными (http get/post)

Здравствуйте.

Как сделать обмен данными с wirenboard?
Имеется ввиду как из правил сделать http (get/post) запрос и наоборот вызвать какую нибудь уже созданную функцию get/post запросом?

Хм, ну если вам принципиален именно HTTP, то так же как в линуксе.
Запросы делать вызовом wget или curl, чтобы сделать наоборот - вам нужно поднимать вебсервер и писать CGI.

Можете рассказать про задачу, возможно есть более простое решение.

есть идея реализовать голосовое управление на wirenboard.
Расскажите про другие способы, как?

Запросы через TASKER хотите делать?

Аналогичная программа Pocketsphinx или что нибудь подобное.
Если использовать http, то на wirenboard уже установлен web-сервер. Где можно почитать о ней. Есть ли возможность ее использовать для взаимодействия?

webfsd там стоит. Нет, из коробки вы по HTTP управлять не сможете, родной протокол - MQTT. HTTP API можем реализовать в рамках платной поддержки.

Подниму тему.
Как можно реализовать такую “хотелку”.
Имеем:

  • WB5, к которому подключен “Милур 305”. Устройство настроено и видно как работающее в Devices;
  • на компьютере установлено ПО “MS Windows 10”.
    Если я правильно понимаю, то WB5 опрашивает мой “Милур 305” и аккуратно складывает данные в свою БД. Как мне реализовать визуализацию этих данных в своей программе?
    Т.е. прочитать данные из БД?
    Есть опыт на Java + PHP.
    Но если не ошибаюсь, простые HTTP GET, POST запросы, возвращающие JSON, не реализованы или?
    Что почитать, куда посмотреть?
    Спасибо.

Еще разок, доброго времени.
Мне нужно реализовать нечто похожее тому, как у Вас реализована страница “History (История показаний)”.
Подскажите, пожалуйста, где почитать по структуре Вашей БД и как формируется к ней запрос.
Спасибо.

Оно к сожалению не документировано.

Интерфейс - MQTT-RPC (https://github.com/contactless/mqtt-rpc/), пример сообщений можно подсмотреть в

mosquitto_sub -v -t '/rpc/#'

если что-нибудь поделать на вкладке History.

Вот ещё пример на Python: https://github.com/contactless/mqtt-rpc/blob/master/python/test_client.py

Спасибо, Евгений.
Попробую разобраться.

Евгений, а насколько корректно читать напрямую из /var/lib/wirenboard/db/data.db ?

Очень некорректно. Стабильность формата не гарантируется, мы его уже не раз меняли в прошлом и обязательно поменяем ещё раз.

А вот как быть в таком случае.
Допустим, что мне не интересно отслеживать текущее состояние топика.
Интересует только, сколько я “нажег” электричества за последний месяц, которое учитывается через счетчик “Милур 305”.
Как быть?

Доброго времени,
вроде начинает что-то проясняться.
Получилось, используя пакет “org.eclipse.paho.client.mqttv3”
слушать мой счетчик, сообщения приходят, всё нормально.
Время опроса - “Desired poll interval (ms)” - настраивается.
Появились новые вопросы:

  1. Опрашивать счетчик только по моему запросу - это реализуемо?
  2. Как программно прочитать настройки устройства?
  3. Как можно получить список всех топиков? Я хочу выводить его в виде Treeview.
    Спасибо.

Принципиально нет. Зачем вам это?
Пусть счётчик опрашивается постоянно, как оно по-умолчанию настроено. Так у вас в MQTT будут лежать всегда актуальные данные.

я не понял, о чём вы. Пожалуйста по-подробнее.

Вопрос про MQTT, вашу MQTT-библиотеку и ваш язык программирования. Не знаю, подписаться по маске на /devices/+/controls/+ например.

Евгений, спасибо.
Если в целом, то мне нужно попробовать написать некий GUI, который будет отображать список устройств с данными и настройками, которые подключены к WB5.
Ваш WEB интерфейс мне нравиться, но он не годится для тетеньки, которая захочет посмотреть текущее значение ее счетчика электричества.

Есть жилой дом, Допустим 200 счетчиков электричества. Зачем мне постоянно их опрашивать?
Нужно опросить все счетчики в определенный момент и полученные данные (с привязкой ко времени) положить в нашу БД.


Например, из моего GUI изменить время опроса: Desired poll interval (ms)"


библиотека “org.eclipse.paho.client.mqttv3”, язык соответственно java.

Спасибо.

А почему бы их постоянно не опрашивать?

В определённый момент вы можете залезть в MQTT и взять оттуда гарантированно актуальные данные.

У нас просто совершенно другая концепция, по которой работает ПО, и нужно с ней научиться работать, а не пытаться перевернуть всё с ног на голову. Драйвера устройств занимаются синхронизацией состояния между MQTT и физическими устройствами. Потребители (например ваш GUI), забирают состояние из MQTT.

Это можно сделать через MQTT-RPC интерфейс драйвера wb-mqtt-confed. Но это совершенно неправильный способ решения вашей задачи. Более того, мы не гарантируем стабильность интерфейса, стабильность настроек и то, что параметр “Desired poll interval” будет вести себя точно так же, как и сейчас.

Ещё раз: вы пытаетесь решать свою задачу с помощью набора костылей и подпорок. Это не кончится хорошо.

Евгений, спасибо.
В общем, да, Вы правы. Думаю пока достаточно будет получать текущие значения параметров на счетчике.
Список устройств, который Вы отображаете на странице “Settings” как “MQTT Channels” как-то можно получить?
Спасибо.