Я сейчас для себя выделил 3 фазы дня, при которых устройства у меня должны работать по разному:
1. утро (когда я проснулся и вышел из спальни)
2. вечер (подготовка ко сну)
3. сон
Каждая фаза меняет параметры устройств в комнатах. Например, я не вижу смысла часто включать увлажнитель в спальне днем, потому что я там не нахожусь. Но вот в зале, где я провожу основную часть дня охото чтобы было повлажнее. Поэтому при срабатывании фазы "утро", в спальне параметры увлажнения уменьшаются, а в зале - увеличиваются.
Вечером охото наоборот, чтобы перед сном комната была максимально подготовлена ко сну, поэтому часа за 3 устройства в комнате начинают пытаться достичь идеального состояния, чтобы ко времени сна выключиться (и не шуметь пока засыпаю) и периодически включаться ночью, чтобы поддерживать состояние. А в зале наоборот, можно сахару устраивать 🙂 Вот сделаю автоматически открывающиеся окна, еще перед сном проветривать буду 🙂
Эти фазы я храню в input_select и хочу менять или по времени или, как сон, по кнопке. Также время когда фазы может зависеть от дня (например, хочу, чтобы в выходной день утро и сон начинались позже, потому что я скорее всего лягу спать и проснусь позже чем в рабочий день). При смене состояния устройства меняют свои настройки или отрабатывают определенные действия. Сделал это для того, чтобы не копировать логику проверки триггеров смены фаз из устройства в устройство и иметь возможность усложнять её при необходимости в одном месте.
Скорее всего, со временем мне захочется сделать еще какие-то глобальные состояния квартиры, которые могут возникать с достаточно сложной логикой и охото сразу на простом примере проработать подход. Но пока я не могу ничего такого сходу придумать для примера.
А глобальные переменные в Node Red не годятся для этих целей?