Если виртуальные устройства связаны с реальными через правила, то после перезагрузки кто от кого зависит и у кого вперед происходит срабатывание условия с вызовом конструкции whenChanged - then? и где лучше проверять состояние контролов: внутри defineRule или defineVirtualRule?
Очень хороший вопрос.
Я тоже жду большую статью в вике на эту тему; временами нахлобучивает опасение, что сами авторы еще не вполне в курсе.
А часто это бывает критично.
Да, меня всегда это тревожило. Удобнее пользоваться в UI вирт контролами для легкости восприятия и удобства работы, но не всегда понятна бизнес логика процессов и их зависимостей.
Например, хочу контролом открыть приточный клапан, а он оказывается и так открыт, тока не хочется перепроверять положение реле b-gpio/EXT1_R3A7
, а оно после перезагрузки боюсь, что может расходиться с виртуальным положением контрола.
Покамест после перезагрузки настоятельно советую сразу инитить всё в off.
На данный момент я перелопатил преизрядное количество комбинаций софта и, увы, в общем случае, состояния выходов могут быть любыми. Это чрезвычайно досадно, особенно если учесть, что контроллер грузится не мгновенно.
Для примера - 6.7.1 с коробочным софтом, при конфигурации А1…4 как дискретных выходов ставил последние два в единицу; убейте меня, если знаю почему. Выключал на вебальнике в явном виде и далее до ребута не трогал. После dist-upgrade прекратилось.