Управление устройствами zigbee2mqtt по таймеру
Из недавнего похода в Икею я принес несколько новых устройств для расширения своего умного дома: умную розетку и пару лампочек TRADFRI. Через умную розетку я подключил полетенцесушитель а лампочки установил в освещение над зеркалом.
Раньше полотенцесушитель был подключен через другую умную розетку, которая управляется по WIFI. С этой разеткой время от времени возникают проблемы, так как она полностью зависит от облачных серверов где-то в китае, и если, например у меня продадает интернет или сервера в Китае отваливаются, то полтенцесушитель либо вообще не включается, либо остается постоянно включеныыми и превращает маленькую ванную комнату в маленькую сауну. Кроме того я не знаю как ее интегрировать устройство в умный дом поэтому решил найти более предсказуемое устройство. Выбор пал на модель из Икеи E1703, которая, во первых может работать как zigbee роутер и усиливает сигнал от моего самодельного zigbee хаба, а во вторых стоит всего десять евро, что значительно дешевле конкурентов.
Розетка определилась без проблем, а вот с лампочками вышла незадача - zigbee2mqtt пока еще не поддерживает модель LED2104R3. Создать конфигурацию для нее возможно, но я пока не знаю как.
Первую задачу которую нужно решить, это сделать так, чтобы полотенцесушитель включался по таймеру как это делала моя старая умная розетка. zigbee2mqtt не умеет запускать устройства по расписанию, однако это умеет делать приложение node red которое у меня уже стоит на другом raspberry pi.
Для того чтобы node red мог управлять zigbee2mqtt, нужно поставить специальное расширение node-red-contrib-zigbee2mqtt-devices которое добавит компоненты для работы в умным домом.
После того как плагин добавлен создать схему работы дело нескольким минут. Саммым сложным делом оказалось найти необходимые блоки в палитре компонентов и соединить их в правильную конфигурацию.
Сама конфигурация выглядит вот так:
Теперь полотенцесушитель включается и выключается по таймеру. Дополительно его можно включать и выключать нажатием на кнопку на панели управления node red. Посмотрим насколько стабильно все это будет работать.
Комнатный контроллер с управлением по Modbus RTU
В прошедшие выходные, наконец, создал новую прошивку для одного из моих комнатных контроллеров, которая позволит управлять светом через Modbus RTU. Почему-то в сети полно статей как это сделать, но мне пока не удалось найти исчерпывающего руководства, чтобы реализовать все что хочется.
Сейчас у меня дома весь свет управляется четырьмя контроллерами собранными на базе Arduino Pro Mini. Один контроллер управляет светом в кухне, гостиной и лоджии. Второй в душе, Третий управляет ванной и коридором, а четвертый управляет светом в двух комнатах и гардеробной, он то и будет моим первым пациентом для перепрошивки. В качестве коммуникационной платы во всех контроллерах используются готовые сборки max485, но их то я пока и не подключил, так что мой умный дом еще достаточно глуп. Чтобы заставить всю систему работать были созданы простые прошивки, не подразумевающие централизованного управления, и вот, наконец, я готов это сделать для одного из контроллеров, который управляет светом в двух комнатах и гардеробной.
В качестве серверного решения будет крутится Openhab. Прошивка позволяет управлять светом в двух комнатах и гардеробной, причем, для гардеробной реализовано плавное включение через ШИМ с регулировкой максимального значения. Яркость можно регулировать на сервере, так-же как включать и выключать свет. Дополнительно, поддерживаются герконы на дверях в комнатах и гардеробной, при этом, герконы на дверях в комнаты просто сигнализирует о своем состоянии на сервер - я еще не придумал сценарии их использования, а геркон на двери гардеробной будет дополнительно включать свет при открытии двери - свет там все-равно нужен всегда. Также подключил датчик температуры и влажности - так как в гардеробная еще и серверная - температуру знать там не повредит. Вот пока и весь функционал, а больше пока и не нужно, все остальное можно реализовать на сервере, если понадобится.
К слову сказать, код контроллера все еще мне не нравится. Это пока еще proof of concept. Есть еще что можно улучшить. Из последних нововведений мне понравилось использовать указатели на функции - их активно используют например, при программировании для Pebble. Это позволяет лучше разбить код на более мелкие, но при этом универсальные блоки, и в отличии, например, от виртуальных функций код не становится медленнее, что важно, если у вас медленный процессор с ограниченными ресурсами.
Прошивку выложил на github - https://github.com/maxistar/Controller03
Описание в схеме не полное, постараюсь выложить больше информации по этой теме, так как, похоже, что тема весьма актуальная. Видео, работы постараюсь сделать и выложить на днях. Если прошивка покажет себя хорошо - обновлю и остальные контроллеры.
Вообще планов громадье, например, нужно также, автоматизировать еще и отопление - все батареи у меня уже оснащены кранами с приводами и к ним уже подведены провода для датчиков температуры и протечки, но это сразу после того как я подключу теплые полы везде где они проложены - на лоджии в санузлах и коридоре, так что тема для автоматизации своего жилища - она неисчерпаема.
Планшеты с беспроводной зарядкой
Пользоваться планшетом с беспроводной зарядкой оказалось очень удобно. Даже несмотря на то, что безымянная китайская Qi (читается как чи или цы) зарядка оказалась очень капризной к блоку питания. После того как я приделал к своему столу кронштейн для планшета с зарядкой у гаджета появился свой домик и все домашние знают где его искать. На ночь его ставят на место, где он прекрасно заряжается и на следующий день он снова готов к работе.
В новой квартире я даже предусмотрел места для настенных креплений с беспроводной зарядкой и подвел к ним провода. Но вот встал вопрос, что купить на смену старенькому Nexus 7, у которого за два года уже стал теряться товарный вид и стал отказывать акселерометр? Стал искать альтернативы.
Оказалось, что альтернатив то и нет! Не выпускают планшетов с беспроводной зарядкой! Ходят слухи что iPhone7 будет оснащен беспроводной зарядкой, Samsung Edge имеет, Microsoft Lumia и еще некоторые телефоны. Планшетов с беспроводной зарядкой нет как класса!
А очень жаль, ведь это очень удобно - не нужно возиться с дурацким micro usb разъемом, провода от которого у меня живут несколько недель. Просто поставил планшет на место и всё, ты можешь быть уверен, что он будет заряжаться.
Похоже придется придумывать альтернативный вариант зарядки, может быть сделаю докстанцию с разъемом, может быть приклею внешнюю зарядку, но факт остается фактом - Nexus 7 был последним планшетом с беспроводной зарядкой.
Умный свет на Arduino
Продолжаем тему плавного включения света, начатую ранее.
В выходные, наконец, собрал вместе все компоненты управления светом в моей новой квартире в кухне, гостиной и лоджии. Основная идея - реализовать управление светом при помощи простых кнопочных выключателей. Что может быть проще и естественней при входе в комнату нажать на выключатель - щелк и свет горит. Соответственно для этого не нужно хитрых ручек, кнопочек, сенсорных панелей - просто кнопка. Разумеется, в будущем, все будет дублироваться с планшета и можно будет управлять светом и с планшета и голосом, но сейчас, пока в жилище ремонт -- контроллер должен работать автономно, но при этом, обеспечивать все те же возможности управления светом, что и у готовой системы используя лишь простой кнопочный выключатель.
Наиболее нетривиальной задачей было организовать управление точечными светильниками с плавным включением. Её я успешно решил, выкинув "родные" блоки питания, замнив их на управляемые ШИМ источники тока и запитав всю схему от одного мощного блока питания. Светильники на 3 Ватта питаются от блока питания 12 вольт, светильники на 6 Ватт - от блока питания на 24 вольта.
Сам контроллер собран в корпусе на дин-рейку, заказанном на чипе&дипе. Корпус, кстати, оказался весьма удобным с макетной платой, на которой и были размещены маломощный блок питания для ардуины и три семисторных ключа с оптронной гальванической развязкой - безопасность превыше всего! Сама плата arduino pro mini и микросхема max485 для шины модбас размещены на отдельной макетной плате и помещенны в тот же корпус, благо место позволяет.
Прошивку написал с нуля - она пока не совсем такая как я хочу, но уже не вызывает рвотного рефлекса при взгляде на код - оказывается, ардуино позволяет писать программы на вполне приличном C++ с объектами, наследованием и виртуальными функциями. Все это делает код вполне читаемым и, главное, поддерживаемым в будущем. Код выложил на github - замечания и дополнения приветствуются!
Основная фишка - одна кнопка. Тут я вполне согласен со Стивом Джобсом - одна кнопка рулит!
В кухне одной кнопкой включается основной свет и свет над рабочей зоной. На лоджии плавно включается четыре шестиваттных потолочных светильника. В гостиной - одной кнопкой управляем двумя светильниками общего света. При этом есть возможность управлять яркостью светодиодных светильников - делать их ярче или тусклее.
Конечно, ремонт пока еще в самом разгаре и в будущем на кухню я планирую добавить подсветку с светодиодной лентой по периметру потолка. В гостиной планируется добавить отдельную зону из светодиодных светильников, как на кухне.
Как говориться, начало положено и схема доказала свою реализуемость, что не может не радовать.