Starck, добрый день! Недискретные значения в истории – это артефакты усреднения. А вот почему данные меняются – это вопрос. Возможно, это проблемы, связанные с получением и сохранением данных, а не состоянием контрола: вы уверены, что контрол не переключался?
Сам по себе контрол, конечно, не срабатывает. И я так понимаю, что у вас нет никакого правила, изменяющего его состояние? Сценарии выполняются только в движке правил? MQTT-сообщения ниоткуда прийти не могут извне? Я бы хотел посмотреть на ваши правила. Если они не для общего доступа, то пришлите их, пожалуйста, на info@wirenboard.com с пометкой ‘для Kilpio’.
Сложный код, и, главное, отлаживать тяжело. Поскольку мы примем за рабочую гипотезу что чудес не бывает, то, вероятно, какое-то правила включает этот контрол. Я бы поставил максимально больше отладочных сообщений во всех правилах, которые могут переключать контрол (с названием правил), и постарался бы вычленить, когда это происходит.
Скорее всего я понял от чего происходят переключения. Это у меня было и с подвисанием света, который должен был отключаться по таймеру после сработки от датчика движения и с вентиляционными приводами вот такая же картина. Я полагаю, что это происходит из-за ошибок чтения регистров устройств. Вот моя соседняя ветка по этой проблеме как раз: 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]