Есть виртуальный switch, нужно установить его начальное состояние. Это состояние определяется сухим контактом, т.е. при инициализации правил нужно сделать что-то типа
whenChanged-правила вызываются также и при первом просмотре правил, если фигурирующие непосредственно в списке или внутри вызываемых функций параметры определены среди retained-значений
Вы правы - мы проверили, и действительно, whenChanged правила вопреки документации не исполняются при запуске движка правил и наличии retained сообщений.
Мы кратко посовещались, и решили сохранить текущее поведение whenChanged, исправив документацию.
Для выполнение инициализации можно использовать, например:
setTimeout(function() {
log("current value of A4_IN is {}".format(dev["wb-gpio/A4_IN"])); // вместо log() подставьте свою функцию
}, 0);
Ещё опишите, пожалуйста, подробно, какую задачу из реальной жизни вы решаете своим правилом, чтобы мы подумали, как это лучше реализовать в движке правил.
Водонагреватель включается 2-канальным импульсным реле. Мне нужно определять статус реле. Для этого на 2 канале импульсного реле “висит” сухой контакт, воткнутый во вход D4 WB. А для переключения состояния импульсного реле используется реле Relay_1 на WB. Чтобы не плодить контролы, статус реле и переключение повесил на виртуальным свитч.