Если вы когда-либо обзаведётесь технологиями умного дома, то скорее всего, в числе первых купленных устройств у вас окажутся именно умные лампочки. Они действительно удобны. Включение-выключение света при движении. По таймеру. Плавное нарастание яркости для более комфортного пробуждения. Разные цветовые температуры. И так далее.
Вот они умные технологии. Однако… Не обходится без ложки дёгтя. Есть у умных лампочек, как минимум, одна особенность поведения, которую обычно не афишируют в рекламных буклетах и не упоминают в описании товара. Если задуматься, то это поведение можно даже назвать очевидным и логичным, но всё же оно может стать очень неприятным сюрпризом, особенно если дело будет происходить посреди ночи.
Я говорю о том, как умные лампочки реагируют на кратковременный перебой в подаче электроэнергии.
Глупые умные лампочки
Не та лампочка умная, что включается по желанию твоему, а та, что НЕ включается, когда ты не хочешь того — народная мудрость
Для начала позвольте вопрос: как думаете, что произойдёт с погашенной умной лампочкой, если в квартире вдруг мигнёт электричество? Она включится. Если это произойдёт ночью, а лампочка установлена неподалёку от кровати, то… сами понимаете, ощущения будут не из приятных. Спросонок даже не сразу сообразишь, что произошло и почему вокруг так светло.
Почему при скачке напряжения они включаются? Есть мнение, что это сделано для обратной совместимости с обычными “глупыми” лампочками. Если вы вкрутите умную лампочку в патрон, управляемый обычным выключателем, она должна работать. “Появляется питание -> лампочка включается”. Именно это и приводит нас к неприятному побочному эффекту при нештатном исчезновении и повторной подаче питания. К сожалению, умные лампочки недостаточно умные, чтобы такое поведение было настраиваемо. Есть, впрочем, исключения, о которых ниже.
Когда я впервые столкнулся с этим, то был удивлён. Вернее я сначала был разбужен светом в глаза, а удивление пришло секундой позже. Заглянув за решением в Интернет я нашёл много товарищей по несчастью, задающих извечный вопрос “что делать”. А вот с ответами было негусто. Они варьировались от замены умных лампочек умными же розетками до примеров скриптов в логику умного дома, которые при обнаружении горящей посреди ночи лампочки посылали бы команду на выключение.
Первый вариант хорош. Надёжен. Но мы теряем в функциональности (нельзя сделать плавное включение, к примеру). Да и область применения уже - можно использовать только в осветительных приборах, подключаемых через розетку (все люстры - мимо). А второй требует некоторых навыков, да и решение предлагает не совсем окончательное, ведь лампочка всё равно вспыхивает посреди ночи, просто сама гаснет через какое-то время. Если интересно, пример такого решения есть в комментариях.
Умные технологии, ага.
Решение…
«По щучьему веленью, по моему хотенью» — Народная мудрость
Идеальный конечный результат, в моём понимании, был бы таким — умная лампочка может быть настроена на умное поведение при перебое питания. А именно: при подаче питания вместо включения на максимальную яркость, лампочку можно заставить оставаться выключенной или, скажем, восстанавливать предыдущее состояние (к примеру, если в момент перебоя с электричеством лампочка была включена на 30% яркости, то восстанавливается тот же самый режим).
Год назад, когда я пытался решить эту проблему, готовых решений, вроде как, не просматривалось. На форумах удовлетворительных решений не было, и я махнул рукой.
И вот однажды я натыкаюсь на такую запись на странице замечательного проекта zigbee2MQTT
Копнул глубже, оказывается, ещё в далёком декабре 2018 года Филипс добавил соответствующую настройку в свои лампочки. Вот только афишировать это они, похоже, не хотят. Ради интереса я даже прицельно погуглил по их сайту, и нашёл лишь несколько скупых упоминаний.
Описания обновлений прошивок (ссылка) и приложения iOS (ссылка). Упоминание функции power-on behavior.
Уж не знаю, чем вызвана такая застенчивость по отношению к функциональности, которую они сами описывают как долгожданную (вольный перевод фразы “long awaited”). Что же касается других производителей, то я не смог найти аналогичную настройку. Возможно, они стесняются ещё сильнее (хотя казалось бы, куда сильнее-то). Если вам такие известны, пожалуйста, напишите в комментарии.
…решение доступное всем, но неполное…
В теории нет разницы между теорией и практикой. А на практике есть
Итак, лампочки с нужной заявленной функцией есть, остаётся только купить и спать спокойно. Но где там. Самое интересное всегда начинается, как только дело доходит до реального использования. А практика показала, что через официальное приложение лампочки можно настроить только следующим образом.
Нас интересует настройка со значком молнии. Именно она оставит лампу в выключенном состоянии если она была выключена и произошёл перебой в подаче питания. Вот оно решение! Однако, тут как в том анекдоте, есть нюанс. Если свет мигнёт дважды в течение 15 секунд, то лампочка включится принудительно причём на максимальную яркость и мы снова проснёмся посреди ночи в поисках выключателя. Об этом даже написано в приложении. Интервал в 15 секунд проверен мной на лампочке с артикулом 9290023349 и прошивкой 1.65.11_hB798F2BF от 11 мая 2020.
Конечно, шанс получить двойной перебой питания питания с интервалом в 15 секунд ниже чем получить одиночный. Но он всё-таки есть.
Если бы я не увлекался умными устройствами с интерфейсом ZigBee и не наткнулся на эту функциональность именно на сайте проекта zigbee2MQTT, я бы тут же бросил эту затею. Да и статью на Хабр писать не стоило бы…
… и решение полное, но не для всех
Если долго мучиться, Что-нибудь получится
Оказывается, что по протоколу ZigBee доступна ещё одна возможность настройки, до которой не добраться из приложения. Она позволяет настроить умную лампочку на режим всегда выключена. То есть как бы быстро напряжение ни мигало, или как бы яростно вы ни щёлкали выключателем, лампочка не включится. Включить её можно только через сопряжённые устройства умного дома (ZigBee-координатор или всё ту же Bluetooth-приложеньку от производителя).
В чём минус — это решение доступно не для всех пользователей, а только для обладателей ZigBee-сетей с возможностью послать вручную сконструированное сообщение на устройство. Быть может фирменный хаб от того же производителя также позволяет получить доступ к такой настройке, но у меня нет возможности проверить ввиду отсутствия упомянутого хаба.
В моём случае (у меня есть ZigBee-координатор CC26X2R1 и zigbee2mqtt) окончательное решение выглядит так:
лампочку нужно сопрячь с координатором
в логах найти её уникальный номер (к примеру
0x0017880108fe7a41
)и послать через zigbee2mqtt MQTT-сообщение.
Topic:zigbee2mqtt/[FRIENDLYNAME]/set/hue_poweron_behavior
Data:off
Только после этого мы получим по-настоящему умную лампочку, которая горит, когда нужно и не горит, когда не нужно.
Хотел бы я, чтоб такая статейка попалась мне на глаза эдак годик назад. Я бы не задавался вопросом “а почему везде свет горит”, придя с работы домой, или выспался на пару раз больше. Надеюсь, мой опыт поможет другим. Если у кого-то есть примеры реализации умного света в спальне с надёжным выключением, устойчивым к перебоям электропитания и плавным включением по утрам без привязки к конкретному производителю, я был бы рад почитать в комментариях.