Умный дом: новое измерение комфорта и стремление к совершенству. Часть вторая

В первой части я рассказал о переходе от просто мониторинга систем к собственно умному дому. На том этапе пришло понимание колоссального потенциала повышения комфорта, а возможности выбранного технологического стека возбудили азарт в освоении и интеграции новых компонентов.

hyyvpfrqg1tx-jp1b5zpbtyzag8.jpeg
Рассмотрим подробнее аспект «азарт». После сделанных шагов умный дом стало трудно остановить в развитии. После WiFi-устройств USR IOT пришел черед любимого DIY-щиками микроконтроллера ESP8266. Я использовал сборки ESP8266–12 с USB портом LoLin v3 NodeMCU и Wemos D1 mini. Начал с подсветки картины, которая уже упоминалась выше. Скетчи под ESP8266 удобно разрабатывать в IDE Arduino после подключения соответствующего плагина. Там же можно найти множество примеров, которые делают разработку очень простой даже без подготовки. Поэтому, кстати, листинги выкладывать большого смысла нет.

На фото LoLin v3 NodeMCU с ESP8266–12. Разъём — micro USB.
6dgy9y-oaxk8jdbqef4jch2z6iq.jpeg Важно только договориться о протоколе взаимодействия с openHAB. Я не стал использовать MQTT, а сделал интеграцию напрямую, так как это более соответствует выбранной централизованной модели управления. sdxlbuwmwlsnbmvfmwg8ycvjy8e.jpeg На контроллере с ESP8266, поднимается простейший сервер, который получает запрос, разбирает его и выполняет извлеченную команду. Запрос отправляет openHAB (либо «вручную», либо в результате работы правила) с помощью утилиты curl. Подтверждение получения команды, величину измеряемых параметров, статус подключенных исполнительных устройств контроллер отправляет по локальной сети обратно в openHAB через его REST API. Всего на момент написания статьи по похожим схемам в умном доме интегрированы 4 контроллера на базе ESP8266 и один на Arduino с подключенным Ethernet модулем. Напомню, что все это делается не просто для того, чтобы получить возможность включить или выключить что-то со смартфона, а, в первую очередь для того, чтобы устройства включались автоматически при наступлении условий для этого.

На фото обычный выключатель Legrand, автоматизированный с помощью Wemos D1 Mini. Все компоненты поместились в стандартной коробке для наружного монтажа. Заодно измеряет температуру/влажность (датчик внизу) и освещенность (на будущее).

Например, подсветка картины включается только один раз в день, когда дом снят с охраны и когда уровень освещенности ниже определенного уровня и когда время близко к времени заката. Более того, некоторые устройства, например, уличные светильники вообще не имеют физических выключателей и используются главным образом в автоматическом режиме.

Все, кто бывал в Оби или Леруа Мерлен наверняка видели наборы дистанционно управляемых розеток или даже стартовые наборы с громким названием «умный дом». Большинство из них объединяет связь на 433МГц и эта связь односторонняя. Т.е. посылая команду невозможно узнать, получена она исполнительным устройством или нет. Компенсирует этот недостаток низкая стоимость. Например, можно купить управляемые розетки и плоский выключатель на батарейке для них за 1300 и 1400 рублей. midkohmwgow3r67kg5ixjkrvk6a.jpeg Такие схемы удобно использовать для осветительных приборов с отдельным проводом, для перемещаемых или появившихся по мере развития дизайнерской мысли. У меня такими элементами стали бра, переделанный из антикварного подсвечника и небольшой торшер. Оба в спальне. А выключатель удобно разместился на прикроватной тумбочке. К чему такое длинное вступление? Нет смысла отказываться от устройств, делающих жизнь комфортнее и полнее, только потому, что они не поддерживаются установленной системой умного дома. В такую ситуацию легко попасть, сделав ставку на единственного поставщика или единственную технологию.

На фото комплект управляемых розеток и выключателя Brenin. 433МГц.

Но у нас-то technology agnostic умный дом! Поэтому смело ищем устройство-хаб для всех 433МГц компонентов. Такие хабы есть, Broadlink, например. Однако их существенным недостатком является непрямое управление, хаб должен быть подключен к облаку. Как вы помните из предыдущей статьи, я считаю такой подход неправильным, хотя и простым, и удобным. В итоге поиски заканчиваются тем, что принимается решение сделать упрощенный хаб на Arduino. В качестве периферии к Arduino подключаем приемник и передатчик 433МГц. Далее с помощью специального скетча прослушиваем код, посылаемый передатчиком в выключателе Brenin и учимся его передавать сами. Все скетчи полностью основываются на примерах к библиотекам и сложностей не вызывают. Более того, код сигнала управления можно представить в виде константы в openHAB и при желании расширить количество исполнительных устройств.

casnvzcfsiibttvtqa1mbji55py.jpegСамодельный хаб для 433МГц устройств. Со временем к нему добавилось детектирование движения и управление светом в котельной. И еще управление кондиционером (IR-светодиод на крышке). Кроме этого для повышения стабильности работы обмен данными с openHAB переведен с nRF24L01+ на Ethernet-плату ENC82J60, виден провод LAN.

Что получилось? Получилось управляемое беспроводным комплектом освещение в комнате. Кроме этого, появилась возможность управлять этим освещением из умного дома. Как вы помните проблема таких систем — отсутствие обратной связи. Частично решается в данном случае за счет того, что команды, передаваемые на 433МГц выключателем можно перехватывать разработанным хабом и отправлять их отработанным способом в openHAB, в котором срабатывает правило и изменяет состояние выключателя в интерфейсе. Т.е. получилась система с псевдообратной связью. Это лучше, чем ничего. Ну и конечно, понятно, что такой подход не годится для управления ответственными устройствами. Он недостаточно надежен и небезопасен с точки зрения перехвата.

f8muavvft8ct9flkw4ttr8ytzao.png


Появившийся со временем элемент дизайна, бра. Управляется розеткой и выключателем Brenin

Дальше больше. Захотелось сделать красивые выключатели на втором этаже. И конечно, дистанционно управляемые. Выбор пал на сенсорные выключатели Livolo. Они тоже на 433Мгц и, что важно, могут подключаться «без нуля». Это актуально, если в подрозетники не подведены полноценные ноль и фаза, а выключатель стоит в разрыве цепи питания люстры. Хоть это и не мой случай, такие входные условия стоит учитывать. В результате в доме появились красивые выключатели, подключенные к умному дому с помощью разработанного ранее хаба.

swnxjroitfoeq5a5bhdatpje-nw.jpeg


Комплект из двух сенсорных выключателей и пульта Livolo.

Однако, есть два «но». Первое. Выключатели Livolo реально лишены обратной связи, они ничего не передают. Т.е. если включать их по старинке пальцем, умный дом изменения состояния не увидит. Это для самодельщика, конечно, не преграда, но я решил не городить огород из дополнительных датчиков включения, и больше подобных Livolo устройств не интегрировать. Второе. Стандартной библиотекой управляющие сигналы с пульта Livolo, купленного в комплекте с выключателями, расшифровать не удалось, пришлось искать библиотеки, разработанные энтузиастами специально для выключателей Livolo.

Закончить разговор об интегрировании новых компонентов хочется ровно с того, с чего начали в предыдущей статье: с Z-Wave. 3dqbz0fpnvaekdsen_fp30t_wgo.jpeg Как бы дороги не были устройства Z-Wave, их ассортимент постепенно расширяется и появляются исполнительные устройства, которые нет смысла делать самому или которых по каким-либо причинам нет у конкурирующих технологий. Самый яркий пример — управляемые термостатические головки для радиаторов отопления. Беспроводные. Другой пример — компактные реле и диммеры в подрозетники для превращения имеющихся выключателей в умные без изменения дизайна. Причем, с обратной связью, т.е. при сохранившемся механическом управлении, умный дом сможет видеть состояние выключателей.
На фото Z-Wave термостатическая головка Grundfos на радиаторе в прихожей.

Как устроена интеграция? У openHAB есть соответствующий binding для подключения USB Z-Wave stick. Кроме этого, в комплекте у openHAB есть специальное приложение HABmin для настройки работы сети Z-Wave устройств. Итак, подключаем USB-стик Z-Wave.Me, устанавливаем binding Z-Wave, запускаем HABmin, добавляем устройства в сеть. Далее настраиваем по документации к binding соответствующие items, пишем правила для выключателей, термоголовок, мультидатчиков и voila. Вроде все просто. Однако, так получилось лишь частично. Проблема в том, что HABmin работает только с зарегистрированными в открытой базе данных устройствами. Если вы купили какое-то новое устройство или модификацию старого, которой нет в базе данных, настроить такое устройство не получится. zmvfqqmdnohuze6w20enx-ajbws.jpeg Можно сделать pull request в эту БД, однако я посчитал такой подход в корне неверным, так как у Z-Wave устройств есть функция self discovery. Это одна из причин высокой совместимости устройств и контроллеров разных производителей Z-Wave. В итоге пришлось купить лицензию на программный контроллер Z-Wave, Z-Way server, который установил на том же сервере/неттопе, что и openHAB. Он используется только когда необходимо добавить/удалить устройство в сеть Z-Wave и/или настроить его. В остальное время программный контроллер выключен.

На фото — обычные выключатели Legrand. Автоматизированы с помощью микромодулей Z-Wave в подрозетниках. Нижний стал диммером.

В итоге у меня появились термоголовки на радиаторах, диммер и выключатели в подрозетники, управляемые розетки, измеряющие напряжение и мощность и даже мультидатчик (движение, температура, освещенность). Следует заметить, что ассоциации на уровне Z-Wave я не настраивал, так как у меня пока централизованная модель управления. Т.е., несмотря на возможность прямого управления устройство-устройство, все они управляются централизованно из openHAB с помощью правил. Ну или дополнительно механически, как в случае с выключателями в подрозетники.

Что получилось с точки зрения умного дома:

  1. Автоматизировано управление светом.
  2. Контролируется движение у лестницы на втором этаже. В зависимости от состояния охраны либо срабатывает набор тревожных правил, либо зажигается свет на первом этаже, чтобы было светло спускаться по лестнице ночью. Поскольку использован мультидатчик, еще и температура воздуха измеряется.
  3. Автоматизировано управление несколькими радиаторами отопления. При постановке на охрану они переходят на установленную в настройках низкую температуру для экономии электроэнергии за счет более рационального распределения тепла. Кроме этого, сделано управление ночной температурой в спальне — она автоматически понижается на 1 градус для комфортного сна. Ну и конечно температуру можно устанавливать из умного дома.
  4. Автоматизировано управление полотенцесушителем. Теперь его не надо вручную включать/выключать. Кроме этого, его можно включать дистанционно, заблаговременно перед приездом.


Есть еще кое-что. До сих пор мы говорили об интеграции физических компонентов с умным домом. Однако, openHAB позволяет интегрироваться и с программными системами. Например, с программными видеорегистраторами или IP-камерами. Речь не только о выводе изображения в интерфейсе openHAB, что конечно же сделано, но и о реакции на события. Например, если регистратор или камера настроены на детектирование движения, это событие можно отправлять в openHAB и использовать в управлении. В описанном выше правиле включения света ночью при спуске по лестнице используется детектирование движения камерой на первом этаже (чтобы не зажигать свет, когда поднимаюсь по лестнице). Другой пример: в режиме охраны можно фотографировать нарушителя и отправлять фото по почте, причем нарушение можно фиксировать обычным PIR-датчиком движения, что гораздо эффективнее детектирования движения камерой или видеорегистратором. Причем PIR-датчик может быть подключен к умному дому по произвольной технологии.

Пример тревожного имэйла с фотографией нарушителя у гостевого дома.
К счастью, нарушитель — сорока. Засечена PIR-датчиком.

yknnjecws_dpjgvmfds_unmd5mi.jpeg


Сделана также интеграция с медиацентром Kodi, для этого есть специальный binding. При запуске видео, в гостиной выключается свет, при остановке — включается. Сделано также, на всякий случай, управление из умного дома самим Kodi. Пользоваться им менее удобно чем штатным программным пультом Kore, зато есть возможность запустить Kodi из интерфейса умного дома, что Kore не умеет.

2exezzpreyb2y_wxtnjzzmlisoi.jpeg


Страница интерфейса с управлением Kodi и кнопкой запуска. Выше показывает состояние проигрывателя, название композиции, оставшееся время и длительность.

8a1mjgdhurjmitlmcpda60jg7q4.jpeg Предвосхищая вопросы об использовании протокола MQTT, напомню, что при централизованной модели управления промежуточные звенья между сервером и устройствами возможны, но, естественно, снижают надежность. Поэтому до сих пор все интеграционные связи были прямыми, без посредников. Однако, если говорить о возможном в будущем переходе или частичном переходе к децентрализованному управлению, как потенциально более расширяемому и более отказоустойчивому, то выбор MQTT является стандартным. Это общепринятый транспорт для равноправных устройств в локальной сети.

Многофункциональный контроллер на базе Raspberry Pi 3B. Видны датчик температуры и влажности, датчик движения, камера, управляемая розетка, выключатель, ставший датчиком.

У openHAB, конечно, есть binding для MQTT. В качестве самого MQTT-сервера сам собой выбирается Mosquitto. А вот на чем его устанавливать — вопрос. Если подспудно или явно преследовать цель децентрализации управления, то ставить Mosquitto на неттоп, который и так уже стал единой точкой отказа — неправильно. И здесь сработала следующая логика. Единственное не автоматизированное помещение — гараж. Там есть что поделать: детектировать движение, зажигать свет внутри и снаружи на доме, открывать и контролировать состояние гаражных ворот, вести видеонаблюдение, управлять розеткой для садового оборудования. И даже еще кое-что, что можно делать только на полноценной операционной системе и что относится к обеспечению информационной безопасности. В итоге выбор падает на Raspberry Pi. У него есть и пины для подключения стандартной DIY-периферии и полноценный Linux с огромным количеством портированных приложений. И видеокамеру к нему можно подключить и транслировать поток в сеть. И, что важно, ресурсы системы, в отличие от Arduino, позволяют построить бизнес-логику практически любой разумной сложности, отвязавшись от openHAB. И программировать все это можно на привычных языках программирования.

В результате все перечисленные задачи решены, плюс в сети появился MQTT-сервер, через который организовано взаимодействие с openHAB и который будет использоваться в дальнейшем при появлении новых устройств с децентрализованным управлением.

Интересная деталь

В процессе разработки возникла необходимость измерения аналоговых сигналов (датчик освещенности, датчик тока, датчик качества воздуха). Плюс часть периферии отказалась работать на штатных для Raspberry Pi 3.3В, им нужно 5В. Решились эти проблемы просто и дешево. С обеими задачами справилась установленная дополнительно Arduino Nano, связанная с Raspberry Pi проводами по I2C-протоколу. Т.е. на Arduino по-прежнему никакой логики кроме измерения физических параметров и исполнения команд нет. Вся бизнес-логика на Raspberry Pi и openHAB.


Что получилось в итоге, если описать шаблонными терминами характеристики всей системы на момент написания статьи?

Сводка:

  • Количество датчиков температуры: 25.
  • Количество точек управления светом: 37, включая сдвоенные выключатели, диммер, и точки без механических выключателей.
  • Кроме света, управляется скважинный насос, насос рециркуляции ГВС, краны на ветках отопления, котел, бойлер, автоматические ворота, радиаторы отопления и т.д. Измеряется влажность, напряжение, ток, освещенность, качество воздуха и т.д.


Использованные технологии:

  • Центральное ПО: openHAB c bindings, Xeoma, Z-Way server, TTS, Mosquitto server, Kodi, отдельные приложения на C/C++. ОС — Ubuntu.
  • Локальные контроллеры: Arduino+nRF24L01+, Arduino+ENC82J60, ESP8266–12, Raspberry Pi 3 B, ПО написано на C++.
  • Готовые устройства: WiFi-устройства USR IOT, Z-Wave (реле, розетки, диммер, датчик, термоголовки) разных производителей, 433Мгц (выключатели с пультом Livolo, розетки и выключатель Brenin), TCP-Modbus шлюз Schneider Electric, датчики движения, открывания и др.


Что дальше?

На очереди стоит отключение радиаторов отопления при открывании окон над ними, контроль качества воздуха в гостиной с камином, более уверенное детектирование движения в гостиной и т.д. Есть и более приземленные задачи: когда появится теплица, автоматизировать полив по данным температуры и влажности почвы.


Вместо заключения. Мы не рассмотрели еще множество аспектов, например, голосовое управление, text-to-speech, IR-управление кондиционером и т.д. Все это сделано и работает. Целью данной статьи было показать ход мысли, поделиться опытом выбора решений, показать преимущества открытых стандартов и технологий через описание простоты интеграции. Все, что сделано, можно было сделать иначе, лучше или хуже, дороже или дешевле, функциональнее или надежнее. К хорошему привыкаешь быстро и через какое-то время вопросы членов семьи типа: «а разве ты не можешь это сделать со смартфона?» или «почему эту клумбу надо поливать вручную?» заставляют двигаться дальше, к недостижимому совершенству.

И еще я верю в безграничные возможности Интернета вещей. Все что сделано относится к этой категории, но это только малая часть. Если после прочтения этой статьи число энтузиастов Интернета вещей немного вырастет, я буду считать свою задачу полностью выполненной.

© Habrahabr.ru