Поведение контролов модулей и виртуальных устройств после перезагрузки контроллера

Если виртуальные устройства связаны с реальными через правила, то после перезагрузки кто от кого зависит и у кого вперед происходит срабатывание условия с вызовом конструкции whenChanged - then? и где лучше проверять состояние контролов: внутри defineRule или defineVirtualRule?

Очень хороший вопрос.
Я тоже жду большую статью в вике на эту тему; временами нахлобучивает опасение, что сами авторы еще не вполне в курсе.
А часто это бывает критично.

1 лайк

Да, меня всегда это тревожило. Удобнее пользоваться в UI вирт контролами для легкости восприятия и удобства работы, но не всегда понятна бизнес логика процессов и их зависимостей.

Например, хочу контролом открыть приточный клапан, а он оказывается и так открыт, тока не хочется перепроверять положение реле b-gpio/EXT1_R3A7 , а оно после перезагрузки боюсь, что может расходиться с виртуальным положением контрола.

1 лайк

Покамест после перезагрузки настоятельно советую сразу инитить всё в off.
На данный момент я перелопатил преизрядное количество комбинаций софта и, увы, в общем случае, состояния выходов могут быть любыми. Это чрезвычайно досадно, особенно если учесть, что контроллер грузится не мгновенно.
Для примера - 6.7.1 с коробочным софтом, при конфигурации А1…4 как дискретных выходов ставил последние два в единицу; убейте меня, если знаю почему. Выключал на вебальнике в явном виде и далее до ребута не трогал. После dist-upgrade прекратилось.

1 лайк