Хорошо. На данный момент вижу только следующую реализацию:
в settings - config - Serial Device Driver Configuration создать serial tcp-port и слушать его.
Но:
создать правило можно только на устройство, которое прописано в mqtt-devices, соответственно нужно создать устройство, то есть добавить devices, а devices можно выбрать из списка, в котором только modbus-устройства.
Если добавить просто custom Modbus device и добавить ему channel, то можно в rules отслеживать состояние только этого канала, а его состояние отслеживается уже определенными получаемыми ответами на определенные команды запроса, которые он начинает слать автоматически.
Отсюда вопрос: Как сделать отслеживание не изменения состояния несуществующего modbus-устройства, а просто отслеживание приходящих строк и внутри правила сделать разбор строки, что пришла, при любом изменении на этом tcp-порту?
У вас чуть неверный подход. Если нужно просто слушать сокет - напишите сервис-слушатель, который будет (возможно предварительно разбирая) публиковать принятое в MQTT.
Реализовать “портом” в serial - вряд ли возможно.
Это не код. Это просто однострочник на баше.
В правило, используя вызов внешней программы - да, можно, в общем. Но тут, смотря каую архитектуру выберите. Если допишете в обнострочник публикацию принятого в MQTT - то однократно процесс можно и из скрипта правила запускать.
Да, думаю, что напишу разбор в скрипте на bash. (с этим конечно еще не сталкивался, но скрипты, обычно, это не страшно).
Как сделать тогда вызов скрипта из правила wirenboard?
И я правильно понимаю, что анализ приходящих телеграмм надо делать в скрипте и в зависимости от результатов парсинга строки просто дергать нужные мне MQTT устройства wirenboard-а?
подскажите пожалуйста, командой:
~# mosquitto_pub -t " /devices/wb-gpio/controls/EXT1_R3A4/on" -m “1”
не включается канал реле. Не ругается, что command not found, просто после выполнения ничего не происходит.
проверил /devices/wb-gpio/controls/EXT1_R3A4 - это устройство из списка MQTT-devices в контроллере. В чем может быть дело?
Все равно не реагирует на команды.
При подписке, при изменении состояния, присылает исправно:
/devices/wb-gpio/controls/EXT1_R3A4 0
/devices/wb-gpio/controls/EXT1_R3A4 1