Самопроизвольное переключение виртуального контрола

Добрый день. Обнаружил неконтролируемое включение/выключение вирт контрола. Обратите внимание на уровень сигнала на выходе (0,5)

Сам он сработать не может по моей логике сценариев. Им управляет физическая кнопка-переключатель или через Web UI.
Подскажите, от куда уши растут ?

Starck, добрый день! Недискретные значения в истории – это артефакты усреднения. А вот почему данные меняются – это вопрос. Возможно, это проблемы, связанные с получением и сохранением данных, а не состоянием контрола: вы уверены, что контрол не переключался?

Уверен. Что дальше?

Сам по себе контрол, конечно, не срабатывает. И я так понимаю, что у вас нет никакого правила, изменяющего его состояние? Сценарии выполняются только в движке правил? MQTT-сообщения ниоткуда прийти не могут извне? Я бы хотел посмотреть на ваши правила. Если они не для общего доступа, то пришлите их, пожалуйста, на info@wirenboard.com с пометкой ‘для Kilpio’.

_rules.js: https://yadi.sk/d/xXcfRiuXJN4XCw
ventilation.js: https://yadi.sk/d/ZPOkVRwUQ6_8hw

Вчера, например, снова сработал контрол Air_Valve_Stroke_1_1 самопроизвольно.

Сложный код, и, главное, отлаживать тяжело. Поскольку мы примем за рабочую гипотезу что чудес не бывает, то, вероятно, какое-то правила включает этот контрол. Я бы поставил максимально больше отладочных сообщений во всех правилах, которые могут переключать контрол (с названием правил), и постарался бы вычленить, когда это происходит.

Скорее всего я понял от чего происходят переключения. Это у меня было и с подвисанием света, который должен был отключаться по таймеру после сработки от датчика движения и с вентиляционными приводами вот такая же картина. Я полагаю, что это происходит из-за ошибок чтения регистров устройств. Вот моя соседняя ветка по этой проблеме как раз: Serial protocol error: request timed out

А это пример из лога, когда одно за другим и произошло:
Oct 6 17:30:45 wirenboard-ARAXKJYF user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 8 coil(s) @ 0 of device modbus_io:191:2: Serial protocol error: request timed out
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: IODIR: setup register <modbus_io:191:2:: 10000> <-- 0
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: IPOL: setup register <modbus_io:191:2:: 10001> <-- 0
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: GPINTEN: setup register <modbus_io:191:2:: 10002> <-- 65535
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: DEFVAL: setup register <modbus_io:191:2:: 10003> <-- 0
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: INTCON: setup register <modbus_io:191:2:: 10004> <-- 0
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: IOCON: setup register <modbus_io:191:2:: 10005> <-- 17476
Oct 6 17:30:48 wirenboard-ARAXKJYF user.notice serial: Init: FLAG: setup register <modbus_io:191:2:: 9999> <-- 1
Oct 6 17:30:53 wirenboard-ARAXKJYF daemon.info wb-rules[26898]: INFO: [rule info] [AIR VALVE1.1]: VIRT CONTROL POSITION IS OFF
Oct 6 17:30:53 wirenboard-ARAXKJYF daemon.info wb-rules[26898]: INFO: [rule info] [AIR VALVE 1.1]: ON
Oct 6 17:30:53 wirenboard-ARAXKJYF daemon.info wb-rules[26898]: INFO: [rule info] [AIR VALVE1.1]: CLOSING… from 70° to 20°. [DIR1: false, ON1: true]