Другие главы:
В продолжение первой части, поговорим о том, с какими устройствами openHab работает у меня дома, для каких еще устройств существует поддержка, и научимся устанавливать систему на Debian системы (Ubuntu, Raspberry Pi и иже с ними).
Материал довольно объемный, поэтому разделю эту публикацию на части. Те, кто знаком с продукцией Xiaomi для умного дома, в принципе, может пропустить первую часть.
Оглавление
- Почему Xiaomi
- Что я использую c openHab кроме девайсов Xiaomi
- А какие еще устройства поддерживает openHab
- Устанавливаем openHab (Ubuntu)
Почему Xiaomi


В идеале, умный дом имеет централизованный узел управления всеми электро-потребителями. Такой узел, неизбежно внушительных размеров, как правило устанавливается рядом с электрораспределительным щитком. Таким образом, скажем, выключатель света в комнате не связан с лампой на потолке напрямую. Напротив, низковольтный настенный выключатель лишь подает команду исполнительному устройству в узле управления, и оттуда уже подается 220 на лампу. Несмотря на все преимущества данного подхода, реализация подобного проекта сопряжена с проводкой невероятно большого количества разномастной электропроводки и скрупулезной коммутации миллиона соединений в щитке. Подобную операцию возможно произвести только на этапе строительства или масштабного ремонта помещений.
Некоторое время назад я ремонтировал свой дом. Ремонт был существенно серьёзнее косметического, но все-же далеко не настолько масштабным, чтобы оправдать тотальный передел всей электропроводки. Поиски альтернативных вариантов завершились на продукции компании Xiaomi. На сегодняшний день линейка продукции Xiaomi для умных домой состоит из дистанционно-управляемых настенных выключателей, розеток, массы различных сенсоров и т.п. Настенные выключатели бывают одно и двухклавишными, с нейтралью и без. Есть даже полностью беспроводные — по сути, просто кнопка дистанционного управления с батарейным питанием. Не ставя себе цель приводить здесь полный обзор продукции Xiaomi, коих уже немало написано и заснято в сети, я лучше приведу список свойств и нюансов использования компонентов экосистемы Xiaomi:
- Все классические компоненты экосистемы Xiaomi используют протокол ZigBee для связи. С помощью ZigBee компоненты Xiaomi создают самоорганизующуюся и самовосстанавливающуюся ячеистую (mesh) топологию с ретрансляцией и маршрутизацией сообщений.
- Компоненты, использующие ZigBee, отличаются низким энергопотреблением. Устройства Xiaomi с батарейным питанием живут от миниатюрных батареек по меньшей мере год, и заблаговременно предупреждают о приближающейся смерти батарейки.
- Настенные выключатели Xiaomi, на данный момент, не умеют диммировать. Только вкл и выкл. В моем случае это никогда не было проблемой, благодаря наличию нескольких источников света разной яркости и теплоты в комнате.
- Настенные выключатели Xiaomi без нейтрали не совместимы с некоторыми светодиодными лампами, и вызывают периодическое, самопроизвольное вспыхивание оных время от времени. Впрочем, этот недостаток свойствен всем умным выключателям, ставящимся в разрез фазового провода без подключения к нейтрали. Проблема решаема, но о ней стоит знать.
- Беспроводной настенный выключатель на батарейке, или проводной, будучи подключенным к питанию, но не нагрузке, могут управлять (чем угодно, на самом то деле) другим настенным выключателем, позволяя, к примеру, реализовать проходной выключатель без необходимости прокладки дополнительной электропроводки. У меня это реализовано в нескольких местах, отлично работает. Подробнее поговори об этом, когда станем учиться писать скрипты.
- Для функционирования всего этого дела, нужен шлюз (gateway). Шлюз выступает в роли моста между устройствами ZigBee и внешним миром, через WiFi. По задумке Xiaomi, взаимодействие со шлюзом будет производиться через фирменную аппликацию MiHome, где к шлюзу можно будет присоединить устройства ZigBee, задать их названия и местоположение. Затем, ими можно управлять индивидуально, через MiHome, пользуясь смартфоном как пультом дистанционного управления, либо графически настроить простые сценарии взаимодействия рода «если А — сделай Б, а иначе сделай В».
- Все это дело довольно стабильно работает, включая дистанционный контроль через интернет (а не только из локалки), без надобности настраивать домашний раутер, регулярно обновляется и пристойно, хоть и не идеально, выглядит. Что мне не нравится, так это то, что взаимодействие происходит через китайские сервера, что не внушает ни надежности в долгосрочной перспективе, ни ощущения полного контроля над своей собственностью. Кроме того, стандартные возможности задания сценариев взаимодействия, хоть и удовлетворят 80% потребностей, все же напрочь лишены каких-либо продвинутых инструкций, вроде циклов и т.п.
- К счастью, инженеры Xiaomi решили не выделываться и оставили возможность осуществлять коммуникацию со шлюзом из локальной сети, напрямую, по специальному протоколу связи. Именно этой возможностью пользуются все системы умных домой, поддерживающие интеграцию экосистемы Xiaomi.
- Следует упомянуть, что описанные способы взаимодействия со шлюзом не взаимоисключающи, и могут использоваться параллельно. Это может иметь определенный смысл во время настройки openHab (или подобных систем), однако делать это на постоянной основе я не вижу смысла. В моей системе шлюз не имеет доступа к интернету и работает совершенно автономно.
- Помните, что отключая шлюз от интернета, вы теряете возможность связи с ним через MiHome, и не сможете отключить уже настроенные сценарии, если таковые были, и они продолжат отрабатываться.
- Помимо выключателей, Xiaomi предлагают всевозможные сенсоры, такие как датчики задымления и утечки бытового газа, датчики протечки воды, магнитные датчики открытия дверей (окон), температуры и влажности, движения и т.д. Сенсоры на батарейном питании (кроме сенсора утечки газа — его потребление слишком велико, для питания от батареек), и работают долго и стабильно. Нужно сказать, что датчик движения не может применяться во всех ситуациях, в связи с аппаратными ограничениями, которые нельзя обойти. Речь идет и том, то раз обнаружив движение, датчик засыпает на несколько минут, игнорируя происходящее. Кроме того, он не регистрирует присутствие, а только движение. Так что статичная фигура человека перед ним не детектируется. К примеру, с помощью его одного невозможно точно уловить наличие людей в туалете, для автоматического управления светом и вытяжкой. как было задумано. Ну это весьма условный минус, и продиктован целью обеспечить продолжительное время работы датчика от миниатюрной батарейки, а с таким ограничением невозможно производить постоянный анализ данных инфракрасной обстановки в помещении.
- С другой стороны, некоторые датчики, вроде датчика открытия двери, будучи по сути лишь контактом (геркон — магнит), легко переделываются под свои нужды. Я расскажу о такой переделке в одной из будущих статей цикла.
- Кроме того, интересного функционала можно легко и просто добиться с помощью софта. Простейший пример: есть у меня вентиль с мотором на 220, для дистанционного перекрытия главной водяной магистрали, идущей в дом. По идее он управляется специальным включателем, подающим фазу на один из двух управляющих проводов. Я использовал для этой цели обычный двухклавишный выключатель. А для управления оным написан скрипт, который понимает команды «дать воду» и «перекрыть нафиг!», и уже сам разбирается что там делать с фазой. Скрипт, естественно, написан в openHab, и я не уверен, что подобное можно реализоваться средствами MiHome. Выключатель уже полтора года стоит в труднодоступном месте и исправно работает. Это я к тому, что вся система в целом, и в интеграции с openHab чрезвычайно стабильна.
- Некоторые девайсы Xiaomi, например, светильники, работают сразу через WiFi — будучи всегда запитанными от сети, они могут позволить себе эту роскошь. openHab отлично работает и с ними тоже.
На основании вышесказанного, я остановился на продукции Xiaomi. Многие устройства у меня работают уже по 2 года, и, я полагаю, будут исправно служить еще долго. Проблем с какими либо устройствами, будь то выключатели или сенсоры, не было никаких.
Что я использую c openHab кроме девайсов Xiaomi
Мой умный дом все еще в процессе активной, хоть и не быстротечной эволюции. На данный момент, из покупных устройств, в openHab интегрирован AV ресивер и драйвер для светодиодной подсветки в гостиной. Такие устройства как датчики свежести воздуха (CO2), Wi-Fi адаптеры для систем кондиционирования, адаптер для считывания показаний умного электросчетчика и т.п. — самодельные и работают по протоколу MQTT. Подробно про эти устройства я также расскажу с будущих статьях цикла. Устройства просты в изготовлении, дешевы, легки в программировании и необычайно гибки в конфигурации и использовании.
А какие еще устройства поддерживает openHab
На сегодняшний день в той или иной мере openHab поддерживает более полутора тысяч умных устройств от КУЧИ разных производителей. Я просто дам ссылку на официальный список — ВОТ ОН! Там можно покопаться, поискать и подробнее прочитать про поддерживаемый функционал конкретного устройства. Как видите, там и телевизоры, и светильники, и пылесосы и тд и тп. Пожалуй, непросто будет назвать устройство, которое совсем не поддерживается и никак нельзя подключить.
Устанавливаем openHab (Ubuntu)
Как я уже упоминал, openHab оптимизирован под маломощные системы вроде Raspberry Pi, и действительно неплохо бегает — я сам, ради интереса, проверял, с год назад. Но поскольку у меня есть полноценный сервер на Ubuntu, я буду использовать его в качестве примера. Я предполагаю, что у читателя есть минимальные знания о работе с командной строкой Ubuntu, а также, что компьютер, на который производится установка подключен к интернету.
По сути установка очень проста и сводится к рутинному запуску последовательности команд, расписанных в официальной документации (здесь и здесь).
Поскольку openHab написан на Java, именно с этого и начнем установку. Разумеется, если у вас уже установлены пакеты Java, этот этап можно пропустить.
Разработчики openHab рекомендуют 8 версию платформы Zulu Java, поэтому будем ставить ее. Кроме того, обратите внимание, что для процессоров ARM нужно в любом случает ставить 32-битную версию Java.
Начать установку, я бы рекомендовал с конфигурирования статичного IP адреса для вашего сервера, если это не было сделано раньше. В последних версиях Ubuntu это делается путем редактирования файла /etc/netplan/01-netcfg.yaml:
sudo nano /etc/netplan/01-netcfg.yaml
Итоговый вид примерно такой:
network: version: 2 renderer: networkd ethernets: ens3: dhcp4: no addresses: - 192.168.121.199/24 gateway4: 192.168.121.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]
Понятное дело, что адреса указаны для примера, и в вашем случае будут другими. Применяем изменения командой:
sudo netplan apply
Теперь ставим Java. Выполняем следующие команды от супер-пользователя, для того чтобы добавить репозиторий Zulu Java:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main' sudo apt-get update
Теперь можно установить Java:
sudo apt-get install zulu-8
Далее, добавляем репозитории openHab:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
sudo apt-get install apt-transport-https
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
sudo apt-get update
Устанавливаем openHab и дополнения:
sudo apt-get install openhab2 sudo apt-get install openhab2-addons
Запускаем openHab и добавляем его в системные службы, запускающиеся автоматом при старте операционной системы:
sudo /etc/init.d/openhab2 start sudo /etc/init.d/openhab2 status sudo update-rc.d openhab2 defaults
Комманда «sudo /etc/init.d/openhab2 status» выводит статус работы сервиса openHab и в случае проблем, искать источник бед следует отсюда:

Первый запуск openHab на слабом компьютере может занять до 15ти минут. В это время происходит первоначальная конфигурация и генерация сертификатов безопасности. Это нормально и последующие старты будут быстрыми. На моем сервере первый запуск занял буквально несколько секунд. Когда система полностью загрузится, станет доступным веб-интерфейс по адресу http://IP-адрес-сервера:8080:

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