OpenHab — Часть 1 — Мотивация

Этой публикацией я хочу открыть цикл статей, посвященных системе домашней автоматизации OpenHab.

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

Моим первым проектом стало измерение температуры и влажности в разных помещениях дома, с помощью беспроводных долгоживущих сенсоров на батареях, а также температуры, влажности и давления на улице с помощью системы запитываемой от солнечной батареи и пары супер-конденсаторов (для работы ночью). Результаты измерений складывались в MySQL базу и отображались графически на самопальной PHP страничке.

Самопальные сенсоры температуры с nrf24l01

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

Примерно так выглядела мобильная версия моей системы

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

В итоге, несмотря на наличие вполне функционирующей самописной системы с неплохим веб-интерфейсом, я решил попробовать переехать на одну из опен-сорсных систем домашней автоматизации. По правде говоря, когда я решил сделать этот шаг пару-тройку лет назад, я не экспериментировал и не пробовал живьем ни одну из доступных систем домашней автоматизации. Среди самых популярных можно назвать Home Assistant, Domoticz и OpenHab. Просмотрев имеющиеся в сети статьи, картинки и видосы в YouTube, я выбрал OpenHab как наиболее гибкую систему и настраиваемую. Гибкость эта, конечно, не достается бесплатно, и иногда требует умеренных танцев с бубном. К счастью, танцы потребуются для достижения относительно продвинутого функционала, а на начальных этапах все работает из коробки, что весьма способсвует процессу освоения системы.

Итак, OpenHab от английского open Home Automation Bus – опен-сорсная система автоматизации для “умного дома”, написанная на Java и позволяющая осуществлять двустороннее взаимодействие с большим списком разнокалиберных “умных” устройств от массы различных вендоров. Кроме того, система позволяет довольно просто взаимодействовать с самопальными устройсвами, что позволило мне, к примеру, продолжить использовать часть устройств, которые изначально проектировались под мою самописную серверную инфраструктуру.

OpenHab неплохо оптимизирован под слабенькие встраиваемые системы, типа Raspberry Pi, поэтому полномасштабный сервер для него не обязателен. По поводу GUI – имеется нативная аппликация для Android и iOS, парочка аппликаций для Android от независимых разработчиков, а также и несколько вариантов веб-интерфейса.

Classic UI
HabPanel

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

Идея работы с системой заключается в установке нужных связующих модулей (binding) для работы с устройствами от конкретного вендора, подключении к самим устройствам и взаимодействии с ними. Подключение может быть прямым, например через WiFi к умным лампочкам, либо через шлюз, как например к устройствам ZigBee (практически вся умная техника Xiaomi) или Z-Wave.

Кстати, раз уж мне выпала возможность работать и общаться с реальными китайцами, хочу сообщить массам, что Xiaomi читается как Щяоми – ударение на Щ, и на самом деле это даже не Щ, а что-то среднее между Ж и Ш. Но никак не Сяоми, Ксяоми и другие коверкания.

Взаимодействие может быть тоже разным – начиная от простого Вкл-Выкл, и заканчивая сколь угодно сложными и ветвистыми скриптами для автоматизации, называемыми в среде OpenHab как rules.

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

Система обладает довольно продвинутой системой логов и дебага, что приятно способствует в конфигурировании и отладке. Кроме того, нужно помнить, что OpenHab опирается на работу многих других сервисов и устройств, и иногда проблема может быть в них.

Например, настраивая работу со шлюзом Xiaomi (WiFi <–> ZigBee), я столкнулся с рядом проблем, выражающихся в нестабильной работе оного. Гугление не выдавало много результатов, но те, что были, указывали на потенциально неверные настройки каналов связи в OpenHab. Тем не менее, в последствии выяснилось, что всему виной беспроводная точка доступа, которая будучи весьма устаревшей и лишенной обновлений прошивки, как-то криво работала отрабатывала современную инкарнацию пакетов данных multicast’а и связь падала с завидной периодичностью. Выловить подобный косяк всегда неизбежно муторно и долго.

Логи

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

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

К счастью, синтаксис всего этого счастья довольно прост и интуитивен. Файлы компилируются системой сразу после сохранения, поэтому открыв логи в консоли, можно оценить шансы на успех сразу после отпускания комбинации Ctrl+S.

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

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

На этом пожалуй завершу свой мотивационный спич. В следующей статье я расскажу про свой умный дом, и покажу как установить и запустить OpenHab на Ubuntu. До скорого.



У этой записи 2 комментариев

  1. Отлично!

  2. *CRAZY*

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

Закрыть меню