Либо отваливается датчик на какое-то время (ошибка линии), либо (как в примере) происходит обновление контроллера (apt upgrade), и перезапускается wb-mqtt-w1
Спойлер
|22-10-2024 22:33:10.294|INFO: [mqtt] subscription succeeded (message id 75)|
| --- | --- |
|22-10-2024 22:33:10.265|INFO: [mqtt] subscription succeeded (message id 74)|
|22-10-2024 22:33:03.792|INFO: w1 thread Started|
|22-10-2024 22:33:03.759|INFO: [mqtt] subscription succeeded (message id 2)|
|22-10-2024 22:33:03.759|INFO: [mqtt] subscription succeeded (message id 1)|
|22-10-2024 22:33:03.747|INFO: [mqtt] connection estabilished with code "0" <success>|
|22-10-2024 22:33:03.747|INFO: [mqtt] connection estabilished with code "0" <success>|
|22-10-2024 22:33:03.729|INFO: [mqtt] UNIX socket exists, using it for connection|
|22-10-2024 22:33:03.729|INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock|
|22-10-2024 22:33:03.729|MQTT broker localhost:1883|
|22-10-2024 22:28:31.708|INFO: w1 thread Stopped|
|22-10-2024 22:28:31.702|INFO: [signal handling] Received signal 15|
Скрипт перестает работать, не на момент отвала датчика, а совсем
правило просто не загрузилось из за недоступности датчика.
Вопрос о некорректном поведении снят - все логично, датчика нет → скрипт не грузится → не работает.
Вопрос “как обработать исключение?” остается. Пока, получается, после обновления нужно лезть в логи и смотреть какие скрипты отвалились и вручную перезапускать ( у меня 3-4 отваливаются периодически, ранее не мог понять почему, тут вот поймал)
Андрей, день добрый. Уточнение во втором сообщении - выловил как возникает. При просто отвалившимся датчике, все окей - вернется null и ничего страшного. Проблема возникает когда перезапускается wb-rules при недоступном датчике - по причине глюков на линии (датчик недоступен, бывало ранее), либо по причине перезапуска wb-mqtt-w1 (вчера, в описанном тут случае так было). При перезапуске wb-rules данный скрипт не грузится, с появлением ошибки в логе wb-rules.
Но это тоже так себе поведение - скрип работал, обновили контроллер, нужно ловить какие скрипты упали (у меня несколько работают с 1-wire датчиками).
А все же вы правы - проверил, при присвоении левой части ошибка. Думаю решен вопрос, проверю на Null. Для общего развития - а разве полю virtualdevice, c type=“value” нельзя по правилам null присваивать?
Ну, null в JS присвоить переменной можно, но в случае с явно заданным типом автоматическое приведение типов похоже пасует.
И да, кстати, на проверке значения на null - можно и alarm генерироввать.