Статья

Система автоматизации помещений (Умный дом) openHAB

В качестве вступления

Вчера ночью Вячеслав Фетисов (@ziracul) в Телеграмме попросил помочь написать небольшой обзор по системе УД openHAB. Выяснив, что это нужно для портала Sprut.ai, в рамках серии обзоров различных популярных систем для умного дома, за пару часов набросал страничку тезисно из того, что было в голове. С утра ещё немного добавил... Потом ещё... В итоге оно превратилось в полноценную обзорную статью. Прочитав получившееся, Вячеслав в итоге "раскрутил" меня зарегистрироваться на портале самому и опубликовать это от своего имени. Вобщем, вот что получилось (изложено исключительно из собственного опыта, в религиозных войнах "какой УД лучше?" участвовать не планировал :)

История появления openHAB

openHAB (расшифровывается как open Home Automation Bus) ведёт свою историю с далёкого 2010 года, когда он был инициирован Каем Крейцером, в качестве открытой платформы для автоматизации зданий и помещений. Тогда практически не существовало подобных открытых и доступных решений, да и вообще, понятие “Умный Дом” было скорее модным базвордом, чем тем, что можно потрогать руками или за доступные деньги поставить в свой дом или квартиру.

В какой-то степени, openHAB и его концептуальные идеи стали во многом прообразом того многообразия систем для умного дома, которое мы наблюдаем сейчас. Хотя на самом деле, на тот момент мысль была проста: объединить на одной открытой и бесплатной программной платформе решения от различных производителей, независимо от протокола и технических особенностей. Т.е. вышло новое устройство или появилась новая технология - пишем для неё плагин и прозрачно интегрируем с устройствами от других разработчиков в одной гибкой и документированной среде. У вас есть кнопка на Zigbee, розетка на Z-Wave и радио-реле на WiFi от разных производителей? Не проблема, openHAB организует между ними полноценное взаимодействие и автоматизацию!

Сейчас кажется, что ведь это естественно, как может быть иначе? Но, повторюсь, тогда это был своего рода прорыв, позволивший идеям Умного Дома стать гораздо ближе к народным массам и позволить “соскочить” с навязываемого корпорациями “бренд-лока”.

Интересно, что внутренняя архитектура openHAB, по сути, предвосхитила модные сейчас решения для УД на базе MQTT, когда устройства шлют события и изменения статусов в один общий асинхронный канал, где на них могут реагировать другие устройства, триггеры, срабатывать сценарии и т.д. Нельзя сказать, что openHAB это изобрёл: в промышленных и корпоративных приложениях асинхронная шина событий применялась уже давно, но сама концепция в контексте интеграции всего и вся в Умном Доме показала себя настолько хорошо, что так или иначе применяется сейчас везде.

Во многом это стало возможно благодаря корням из “сурового энтерпрайза” - openHAB написан на Java, де-факто стандарте для промышленных и финансовых приложений, где требуется надёжность, предсказуемость и высокая скорость обработки и исполнения.

Однако, это влечёт за собой как плюсы - надёжность, мультиплатформенность, так и минусы - повышенная ресурсоёмкость и избыточность, я бы сказал - излишняя “монументальность” во всём.

Итак, "ближе к телу", каков ты на ощупь, openHAB?

Первое впечатление от openHAB - это суровый промышленный комбайн. На самом деле, так и есть - openHAB точно не для домохозяек. Если вы пришли за красивыми картинками и настройками в один клик, то вам точно не сюда! Но если вас интересует неограниченная гибкость и масштабируемость, интеграция всего со всем, возможность решать одну и ту же задачу не заложенным разработчиком “единственно верным способом”, а десятками разных вариантов - эта система однозначно для вас!

Кстати, довольно интересное наблюдение: как правило, системы на Java очень сильно отпугивают даже айтишников с опытом. Ведь если вы не опытный программист на Java, то мысль о какой-то кастомизации или доработке Java-кода вызывает нервные спазмы. Но, как ни странно, в случае c openHAB, мною, за несколько лет активной эксплуатации и экспериментов, необходимость влезать в исходники на Java не встретилась ни разу! В работе с openHAB используется собственный скриптовый язык для автоматизации и сценариев - DSL (Domain Specific Language), который базируется на Xbase / Xtend языках. Он достаточно прост для понимания и, если доводилось писать на шелле или даже Бейсике, в нём будет достаточно просто разобраться. Да и документация вся в наличии. Наверное единственное, что напоминает о Java - это работа с переменными и некоторые нюансы синтаксиса.

Добавим к этому просто огромное количество плагинов и модулей под всевозможные устройства, множество интерфейсов для баз данных, систем визуализаций (графики и статистика в УД нужны и полезны), полноценный REST API, возможность интеграции с другими системами УД, свой конструктор для рисования интерактивных дашбордов - и этот список постоянно растёт!

Поддержка устройств и технологий

Вот краткий перечень поддерживаемых биндингов (в openHAB так называются плагины, обеспечивающие взаимодействие с внешним миром и другими компонентами), что называется “их там есть”:

Amazon Alexa, Asterisk, Astro (астрономические исчисления), Bluetooth, Comfo Air, CUPS, Daikin, digitalSTROM, DMX512, eKey, Enocean, Epson Projector, Exec (вызов и выполнение команд OS), Fritz!Box, Fritz AHA, GPIO, HDAnywhere, Heatmiser, HomeMatic, HTTP, IHC / ELKO, Innogy, INSTEON Hub, IRTrans, KNX, Koubachi, LCN Building Management, Leviton/HAI Omnilink, Loxone, MAX!Cube, MiLight, Modbus TCP и RTU, MPD, MQTT, Nest, Netatmo, Network Health, Nibe Heatpump, Nikobus, Novelan/Luxtronic Heatpump, NTP, One-Wire, Onkyo AV Receiver, Open energy monitor, OpenPaths, OpenSprinkler, OSGi Configuration Admin, Philips Hue, Piface, Pioneer AV receiver, PLC-BUS, Plex, Plugwise, Prowl, PulseAudio, Pulseaudio Server, Pushover, RFXCOM, Samsung TV, Serial, SNMP, Somfy URTSI II, Sonos, Souliss, Squeezebox, Swegon ventilation, System Info, TCP/UDP, Tellstick, TinkerForge, Tivo, Twitter, VDR, Wake-on-LAN, XBMC, Xively, xPL, Xiaomi, Yeelight, Z-Wave, ZigBee.

openHAB также имеет поддержку Dropbox, Google Calendar / CalDAV, есть голосовой движок TTS. Пользователям также доступно бесплатное облако myopenHAB.org для взаимодействия вашего УД с внешним миром, через сторонние API (например, IFTTT или управления системой извне, если нет возможности настроить свой VPN или просто лень).

Алло, Алекса/Алиса

Что касается голосовых ассистентов (очень трендовая сейчас тема), то в openHAB уже давно есть поддержка для Google Assistant и Amazon Alexa. Пока нет нативной поддержки Алисы от Яндекс, но используя связку с MQTT и плагин yandex2mqtt от Яна Янина (@munrexio), всё прекрасно работает и с ней (и даже ощутимо быстрее, чем через Google Home!).

"Хочу ещё!"

А ещё у openHAB есть нативные приложения как для iOS / Android, так и для десктопных систем, либо можно пользоваться сторонними типа Imperihome.

Если (внезапно) захочется иметь на стенах красивые тачскрин-панели для управления и отображения информации УД - можно использовать обычные планшеты или фаблеты, и с помощью интерфейса-конструктора HABPanel нарисовать свои интерактивные дашборды, в меру потребностей и фантазии.

Потому у меня хоть и возникает иногда желание чего-то нового, красивого и “чтоб мышкой в один клик”, но всё равно, нагулявшись на стороне, в итоге возвращаешься к openHAB.

Документация и поддержка

Из немаловажных плюсов openHAB - подробная и развёрнутая документация на всё, включая плагины и модули. Если возникают вопросы - есть большое и активное сообщество. К сожалению, по разным причинам, openHAB не получил в своё время большой популярности в пост-советском пространстве, и сообщество в основном англоязычное. С другой стороны, openHAB всё же не система для начинающего пользователя, и требует некоторой ИТ подготовки, где знание английского языка, как правило, уже присутствует.

Целевая аудитория

Нельзя сказать, что openHAB - это только для гиков. Если рассматривать сложившийся ассортимент систем УД, то можно увидеть такую закономерность: чем красивее картинки и GUI в продукте, тем система проще для начинающего и, соответственно, менее гибка для продвинутого пользователя. С другого конца находятся системы, написанные суровыми программерами для суровых программеров, где на каждое движение требуется писать код или править текстовые конфиги. 

openHab в этом контексте находится где-то посередине, позволяя пользоваться одновременно несколькими официальными (!) GUI и, при необходимости или желании, описать всё руками через файлы конфигурации.

Несмотря на всё вышеизложенное, установить openHAB очень просто даже для новичка. Существует множество инструкций под различные платформы. Самое же простое и удобное, на мой взгляд - использовать готовый образ для RaspberryPI. Несмотря на тяжеловесность, свойственную приложениям на Java, openHAB прекрасно работает даже на таких устройствах. Более того, сборка OpenHabian (основана на Raspbian), очень удобна для экспериментов и имеет в комплекте множество дополнительных компонентов, которые можно активировать без дополнительной настройки, через утилиту конфигурации. Например, “из коробки” работающий в связке с openHAB брокер MQTT Mosquitto, или мощную среду автоматизации Node Red, InfluxDB для сбора и обработки статистических данных - все они уже будут преднастроены на работу с openHAB и иметь все необходимые компоненты.

Для меня openHAB стал агрегатором и единым пунктом для добавления гаджетов в УД, благодаря огромному количеству плагинов и базе данных различных типов устройств и производителей. Как пример, большинство устройств на Z-Wave или Zigbee являются мульти-устройствами, когда в одном корпусе может присутствовать и несколько различных датчиков, и несколько управляемых вводов/выводов. Во многих альтернативных системах это превращается в ад, когда добавив одно устройство, ты получаешь 5 или 7 разных. В openHAB же они определяются корректно и создаются как единые устройства, что очень удобно и упрощает жизнь. 

А имея в связке с openHAB его конструктор дашбордов HabPanel, брокер MQTT и систему для продвинутого скриптинга и автоматизации Node Red, я практически перекрыл все возникающие в моём умном доме задачи и свою постоянную тягу к экспериментам (но Sprut Hub я всё же попробую! :)

Теперь о минусах. Ну да, как без них?

В 2017 году openHAB, с переходом на версии 2.XX, пережил серьёзный рефакторинг и переработку архитектуры, последствия чего, иногда, ощущаются до сих пор. Для сохранения совместимости с предыдущими версиями, полностью начать “новую жизнь” не получилось, потому периодически встречаются нелогичные или не вписывающиеся в новую парадигму “приветы из прошлого”. Из примеров можно привести саму базу данных устройств: если вы создаёте или добавляете устройство руками, в конфигах или добавляете его через GUI - они хранятся в разных местах и в разных форматах! Первая реакция у меня была “Жесть! Что они курили?!”. Но, пообщавшись с разработчиками и поняв как исторически оно развивалось, всё прояснилось. Удивительно другое - как при этом удалось сохранить полноценную функциональность обоих подходов и бесшовную прозрачную интеграцию их в движке? Но факт - оно практически не напрягает, и те и другие устройства работают одинаково, и со временем я даже начал находить в этом свои плюсы.

Кстати о GUI - их на самом деле несколько, и все “официальные”! Некоторые перешли по наследству от версий 1.XX (Basic UI, Classic UI), но всё ещё работоспособны и поддерживаются. В текущих версиях 2.ХХ также есть два графических интерфейса: Paper UI и HABpanel. Проблема в том, что часть функционала лучше реализована в одном GUI, а часть - в другом. Разработчики сами до конца не уверены, какой из них “более официальный”, хотя склоняются к тому, что “официальнее” Paper UI, и в дальнейшем именно он будет допиливаться. Безусловно, эта неочевидность вызовет недоумения у новичка и создаст некоторые проблемы в понимании идеологии openHAB.

Как ни парадоксально, но к минусам можно отнести и развесистую документацию самого openHAB. Как и сам продукт, она отдаёт корпоративной монументальностью, и написана как производственная документация к боингу. Да - подробно, да - умным языком. Но новичка просто похоронит под обилием терминологии и новой информации. А ещё там параллельно живёт документация к старым версиям 1.XX и к текущей ветке 2.XX, что иногда может дополнительно дезориентировать.

Несмотря на это, установить openHAB, добавить в GUI нужный биндинг (Z-Wave, Zigbee, LG Smart TV, и т.д.) - можно за 15 минут. Ещё 15 минут займёт добавить в систему имеющиеся устройства. Ну а дальше уже придётся разбираться и вникать.

 Заключение или "кому оно подойдёт?"

Как итог, кому бы я советовал эту систему: 

для людей, имеющих опыт в ИТ и желающих поэкспериментировать с технологиями УД; для тех, кто разочаровался в красивых нарядных обёртках и беспределе коммерческих решений (привет, Fibaro!); для тех, кому нужна максимальная гибкость и кто готов “залезать под капот и пачкать руки в масле”, получая на выходе именно то, что требуется, а не то, что навязывается кем-то; ну и для тех, кто строит системы автоматизации с повышенными требованиями к надёжности - архитектурно, openHAB очень близок к “энтерпрайз”-решениям и использует многие их принципы.

Среди спонсоров и активных сторонников openHAB и основанных на нём продуктов такие компании, как KNX, Enocean, Insteon, Deutsche Telekom, HomeMatic и даже сам консорциум Z-Wave (впрочем, после приобретения Silabs, они активно начали развивать собственные решения).

Ссылки на основные ресурсы openHAB

собственно, основной сайт: https://www.openhab.org документация: https://www.openhab.org/docs/ конструктор дашбордов HABPanel: https://www.openhab.org/docs/configuration/habpanel.html административный GUI Paper UI: https://www.openhab.org/docs/configuration/paperui.html административный GUI HABmin: https://www.openhab.org/docs/configuration/ui/habmin/

Несколько картинок для получения визуального представления об интерфейсах openHAB

А также есть специализированный спрутчат по openHAB, в котором вы можете задавать вопросы, и вам, возможно, даже на них ответят :)


Спасибо! Хорошая статья, подписываюсь под каждым словом.  

Экспериментировал с оpenHAB почти два года и как раз попал в период становления версий  2.хх. Система тоже очень понравилась, но.....  Пока отложил в сторону именно в силу прожорливости Явы на оперативную память.  


ОpenHAB развернулся и на Raspberry PI Zero, но памяти в ней явно не хватало для поднятия 4-5 

биндингов. Поэтому занялся поисками менее прожорливых систем автоматизации. Пока остановился на Home Assistant - эта система написана на питоне и более экономно относится к ресурсам. И тот же функционал что  на 

openHAB, вполне обеспечивается 

на Raspberry PI Zero и есть еще свободные ресурсы. И тем не менее не исключаю что снова обращусь ОХ развернув систему автоматизации на более мощном железе.

У меня OH крутится на RPi 3B+ и оперативки более чем хватает на 8 биндингов, параллельно установленный Node Red, HomeBridge, Mosquitto MQTT, zigbee2mqtt сервер, yandex2mqtt сервер, OpenVPN сервер, и постоянно работающий omxplayer который через HDMI крутит на телике стрим в FHD с четырех IP камер )))


Дмитрий, огромное спасибо! 

Просто потрясающая статья. 

У самого стоит OpenHAB примерно полгода. Перепробовал HomeAssistant, IOBroker, Domoticz - OpenHAB понравился больше всего. Нравится огромное количество расширений и вариативность интерфейсов + самый адекватный, как по мне, интерфейс для планшетов - HabPanel. И конечно, безумно крутая документация которая, в самом деле, очень напоминает документацию ентерпрайзных решений.
С одним пока не успел разобраться: с устройствами, которые я добавил ручками через конфиг-файл я работаю в конфиг файле, а с теми, что были добавлены через GUI - я так понимаю - их конфиг в БД. Как их можно редактировать помимо GUI?

Здравствуйте! Те, что были добавлены через GUI обычно появляются тут:
\userdata\jsondb\org.eclipse.smarthome.core.thing.Thing.json

Крутая статья, продолжай писать дальше, подписку оформил =)

Есть большие проблемы.

Не возможно открыть доступ к ОпенХаб из интернета, потому что нет парольной защиты. А вывести ОпенХаб в интернет иногда очень надо, при чём без ВПН.

Очень сложно переключать приложение если ОпенХаб на работе, дома, у родителей и на даче. Функции "сменить дом" просто нет. Нужно вводить логин/пароль всегда. А нужен именно функционал приложения.

Но в целом я тоже больше всего люблю ОпенХаб.

Я работаю в фирме Умных Домов



Вернуться назад
Вернуться назад