Добрый день.
У меня есть у меня имеются wifi устройства. Я с помощью python скрипта забираю с них данные и публикую в локальный топик WB6.
1)Подскажите пожалуйста, можно ли эти данные отобразить в web интерфейсе.
2)Как лучше работать с python скриптами? мне пришлось установить pip3 который в свою очередь за собой принес ~150Мб зависимостей. И скрипт я запускаю в вечном цикле (что думаю не есть хорошо) после создания подключения к брокеру , или можно например каждую минуту через crontab но тогда будут постоянно генерироваться подключения к локальному брокеру, что по моему мнению тоже не гуд.
Подключение в python выглядит так:
Добрый день. Вопрос - довольно обширный, начну по порядку.
Да, можно. В этом собственно смысл веб-интерфейса и заключается. Для того чтобы он, веб-интерфейс что-то показал в MQTT должны быть нужные топики.
То есть сам веб-интерфейс только и делает что просто отображает MQTT.
Создать топики можно парой способов.
mosquitto_sub -v -t /devices/pythonTest/#
/devices/pythonTest/meta/name Test for Python
/devices/pythonTest/meta/driver wb-rules
/devices/pythonTest/controls/testSwitch 0
/devices/pythonTest/controls/testSwitch/meta/type switch
/devices/pythonTest/controls/testSwitch/meta/order 1
/devices/pythonTest/controls/testSwitch/meta/readonly 0
/devices/pythonTest/controls/testText/meta/type text
/devices/pythonTest/controls/testText/meta/order 2
/devices/pythonTest/controls/testText/meta/readonly 0
Если те же топики создать откуда угодно, хоть с помощью mosquitto_pub - то веб-интерфейс их обработает и отобразит. Ну и начнет работать.
Для интереса - можно поменять значения /devices/pythonTest/controls/testSwitch/meta/order с “1” на “3”
и увидеть что switch перескочил вниз.
Ну и соответственно - в топики можно писать, значения отображаются.
Ну, все ж разработка “на котроллере” - это не совсем верный путь. Для дома - еще нормально, но для продакшена обычно готовят пакет.
Все способы хороши. Подключения к брокеру - они его, брокер не нагружают.
Можно:
вообще вызывать скрипт из скрипта wb-rules, пример запуска “внешнего”: Скрипт для пингования хоста и (или) выводить данные для публикации в stdout и рабирать-обновлять в топиках средствами wb-rules, через dev=
использовать “паузу” внутри python-скрипта
и по крону - тоже можно.
Если на что-то не ответил - спрашивайте, не стесняйтесь.
Здравствуйте, хотелось бы уточнить один момент.
Когда я собираю данные с wifi устройств то я создаю топик /devices/IPaddr/controls/V и т.д
Я создал виртуальное устройство с такими же топиками и данные начали появляться в web интерфейсе.
Мне не сложно создать еще виртуальных устройств, но вы написали: Если те же топики создать откуда угодно, хоть с помощью mosquitto_pub - то веб-интерфейс их обработает и отобразит. Ну и начнет работать.
У меня почему то не отображает без виртуальных устройств:
Вот структура топиков куда пишу данные.