OpenHab — Часть 2 — Установка + немного о моей системе

В продолжение первой части, поговорим о том, с какими устройствами openHab работает у меня дома, для каких еще устройств существует поддержка, и научимся устанавливать систему на Debian системы (Ubuntu, Raspberry Pi и иже с ними).

Материал довольно объемный, поэтому разделю статью на 4 главы — все в рамках этой конкретной публикации. Те, кто знаком с продукцией Xiaomi для умного дома, в принципе, может пропустить первую главу. Мотайте вниз.

Глава 1 — Почему 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 года, и, я полагаю, будут исправно служить еще долго. Проблем с какими либо устройствами, будь то выключатели или сенсоры, не было никаких.

Глава 2 — Что я использую c openHab кроме девайсов Xiaomi

Мой умный дом все еще в процессе активной, хоть и не быстротечной эволюции. На данный момент, из покупных устройств, в openHab интегрирован AV ресивер и драйвер для светодиодной подсветки в гостиной. Такие устройства как датчики свежести воздуха (CO2), Wi-Fi адаптеры для систем кондиционирования, адаптер для считывания показаний умного электросчетчика и т.п. — самодельные и работают по протоколу MQTT. Подробно про эти устройства я также расскажу с будущих статьях цикла. Устройства просты в изготовлении, дешевы, легки в программировании и необычайно гибки в конфигурации и использовании.

Глава 3 — А какие еще устройства поддерживает openHab

На сегодняшний день в той или иной мере openHab поддерживает более полутора тысяч умных устройств от КУЧИ разных производителей. Я просто дам ссылку на официальный список — ВОТ ОН! Там можно покопаться, поискать и подробнее прочитать про поддерживаемый функционал конкретного устройства. Как видите, там и телевизоры, и светильники, и пылесосы и тд и тп. Пожалуй, непросто будет назвать устройство, которое совсем не поддерживается и никак нельзя подключить.

Глава 4 — Устанавливаем 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, и, к примеру, одним кликом выключить весь свет в доме, даже если это светильники и системы разных производителей и моделей.



Добавить комментарий

Закрыть меню