Здравствуйте.
Знакомлюсь с WB4. Пробую взаимодействовать с MQTT через драйвер mqttws31.js (со своей веб-страницы).
Обнаружил такую проблему:
Если послать команду Send, в которой Message.destinationName = “/devices/wb-gpio/controls/Relay_1/on”, а Message.payload = “” (то есть обратиться к топику, но не дать, собственно, самой команды (0 или 1)), то после этого контролер вообще игнорирует подобные команды. Не исполняет, в том числе и правильно построенные, с Message.payload = “1” или “0”. Очевидно, что эту нештатную ситуацию код драйвера не обрабатывает корректно.
После перезагрузки контролера работоспособность восстанавливается.
Кроме этого, обнаружено следующее: если на тот же топик подавать в Message.payload любые символы, кроме “0”, то драйвер воспринимает их как эквивалент “1” и включает реле. Проверял “-1”, “[”, “d”, “sdfsdf”.
На мой взгляд, такое поведение опасно. Драйвер должен принимать только “0” или “1” в качестве параметра команды, любой другой аргумент (в том числе его отсутствие) должны игнорироваться, без потери работоспособности драйвера.
P.S. Проверил статус демона wb-homa-gpio до и после подачи команды с пустым payload.
До ошибочной команды:
root@wirenboard:~# service wb-homa-gpio status
[ ok ] wb-homa-gpio is running.
После:
root@wirenboard:~# service wb-homa-gpio status
[FAIL] wb-homa-gpio is not running ... failed!