empowering the smart home
a vendor and technology agnostic open source automation software for your home
Why openHAB?
Integrate Everything
With its pluggable architecture openHAB supports more than 200 different technologies and systems and thousands of devices!
Automate with Ease
Use a powerful and flexible engine to design rules, with time and event-based triggers, scripts, actions, notifications and voice control.
Runs Everywhere
Run your server on Linux, macOS, Windows, Raspberry Pi, Docker, Synology. Access it with apps for the web, iOS, Android and others.
3d printed case by sumpfing
Set up your own openHAB system in just a few steps
Try the provided hassle-free "openHABian" image for the Raspberry Pi and other devices. Flash an SD card, boot, and enjoy your up-to-date openHAB setup with conveniently pre-configured system settings and software.
No Cloud Required.
openHAB runs on your hardware, doesn’t require any cloud service to work, keeps your data privately at home and talks directly to your local devices whenever possible. At the core of our philosophy is that you always remain in control.
. but Cloud-Friendly
Integrations are available for the most popular cloud-based smart home platforms, including Google Assistant, Amazon Alexa, Apple HomeKit and more. Use the openHAB Cloud connector with the free myopenhab.org service or host your own.
More than 2000 supported things!
Ready to join the community?
The vibrant openHAB community contributes examples and tutorials on a daily basis and is happy to help you!
Установка OpenHAB 3 на Raspberry Pi — OpenHABian, что нового в сравнении с OpenHAB 2
В конце 2020 года вышло большое обновление OpenHAB с версии 2 до версии 3. Как утверждают разработчики, OpenHAB 3 стал более простым, современным и функциональным.
Не так давно я уже писал про установку OpenHAB 2, но с выходом третьей версии решил обновить статью, заодно посмотреть какие отличия появились в сравнении со второй линейкой.
OpenHAB можно ставить на различные ОС, для Raspberry Pi есть готовая отдельная сборка OpenHABian, в комлекте которой есть всё необходимое для работы: SSH, Samba, Frontail, доступ к файловой системе.
Установка OpenHABian
Развернутая система после установки занимает более 4Гб, карты памяти на 16Гб должно хватить под систему, базу и дополнительно устанавливаемые пакеты.
Скачиваем и устанавливаем программу balenaEtcher, скачиваем установочный образ OpenHABian. Запускаем Etcher, выбираем Flash from file , в открывшемся окне выбираем скачанный образ, выбираем flash накопитель для установки, кнопка Flash! Подтверждаем повешение привилегий и ждем окончания работы программы.
По окончании работы программы Etcher вставляем flash карту в Raspberry Pi, подключаем питание, ждем завершения установки. Подключение внешних периферийных устройств не требуется, периодически проверяем в web браузере доступность адреса: http://raspberry_ip_address:8080. На Raspberry Pi 3 B+ установка заняла около часа.
После установки подключаемся к Raspberry Pi по SSH. Пользователь по умолчанию openhabian , пароль openhabian . Запускаем конфигуратор:
В меню System Settings устанавливаем:
- Change hostname — имя компьютера в сети (По желанию)
- System locale — По желанию устанавливаем язык интерфейса в консоли ru_RU.UTF-8
- Set system timezone — Устанавливаем свой часовой пояс
- Enable NTP — Включаем синхронизацию часов компьютера
- Change passwords — Меняем пароль для пользователя openhabian в сервисе Linux system
- Если необходим Wi-Fi настраиваем в меню WiFi setup , если не нужен отключаем Disable WiFi
Пароль пользователя изменяется сразу после изменения, остальные настройки применяются после перезагрузки Raspberry Pi.
Открываем в web браузере страницу:
В OpenHAB 3 полностью переработали пользовательский интерфейс, теперь при первом запуске необходимо установить учетную запись администратора и выполнить первоначальные настройки:
В мастере первоначальной настройки указываем часовой пояс:
Указываем местоположение, можно выбрать установив точку на интерактивной карте:
Первоначальная настройка OpenHAB 3 завершена:
Знакомство с OpenHAB 3
OpenHAB 3 избавился от лишних интерфейсов, теперь используется единый интерфейс с семантическими моделями. Семантическая модель подразумевает под собой то, что все элементы должны иметь семантический тэг, который позволяет OpenHAB понять, что представляет из себя элемент.
Теперь на домашней странице элементы автоматически отображаются только если в них указан семантический тэг.
В разделе оборудование устройства объединены по семантическим тэгам. К сожалению тэг «Розетка» отсутствует.
Для вызова Frontail, интерфейса Basic UI и OpenHAB Panel появилась кнопка быстрого доступа.
OpenHAB 3 становится проще и понятнее для пользователей, теперь правило можно создавать, используя графический интерфейс, который сильно уменьшает возможность допущения ошибок:
А вот код этих правил написан на YAML, синтаксис которого на любителя.
Скрипты теперь можно создавать при помощи интерактивного блочного режима, ECMAScript или Rule DSL.
Отдельным режимом добавили «Расписания». Теперь доступно и понятно можно создать расписание, как я понимаю, это обычное правило, только с тэгом Shedule . Предлагается создать расписание из двух видов:
- Ежедневный запуск в определенное время.
- Создание индивидуального расписания основанного на синтаксисе планировщика Cron, но для удобства имеющий графическую оболочку.
На первый взгляд изменения, внесенные в OpenHAB 3 очень приятны, как это будет выглядеть на реальной боевой конфигурации покажет время и тесты. Радует то, что разработчики не отказались от файловой конфигурации в пользу графической настройки и поддерживают оба варианта.
OpenHAB — сердце вашего умного дома!
«Open Home Automation Bus» (сокращенно openHAB) — это платформа домашней автоматизации с открытым исходным кодом. Она позволяет объединить устройства разных производителей, работа которых основана на различных технологиях, в единую сеть и настроить автоматизацию.
OpenHAB 2 основан на Eclipse SmartHome framework и полностью написан на Java. Все что нам необходимо для работы системы — это виртуальная машина Java, которая доступна для большинства современных платформ. OpenHAB может быть запущен на таких операционных системах как macOS, Windows и большом количества разных версий Linux (Ubuntu, Raspbian и т.д.)
Установка
Если вы новичок в openHAB2, а также если у вас нет опыта работы с удаленными серверами, то мы рекомендуем вам установить платформу на ваш компьютер. После того как вы разберетесь с системой вы легко сможете пернести все настройки и файлы на отдельный сервер, основанный,например, на Raspberry Pi или Orange Pi.
Настройка системы
2. Хорошо разобрались в системе и хотите чтобы openHAB управлял реальным умным домом? Тогда вам понадобится система, которая будет работать постоянно, потреблять мало энергии, а также позволять подключать дополнительные устрройства и устанавливать дополниетльные программы. В этом случае мы можем посоветовать вам уставновить openHAB на отдельный микропокпьютер, который будет постоянно включен.
После установки необходимо настроить систему для работы с нужными протоколами систем умных домов, которыми вы хотите управлять. Обратите внимание, что практически вся настройка системы будет происходить через браузер
OpenHAB — стань программистом собственного жилища
В этом посте я расскажу об opensource проекте домашней автоматизации openHAB.
openHAB переводится как «Open Home Automation Bus«. Это значит, что он нацелен на создание универсальной платформы для объединения всей домашней «умной» техники в единую систему управления.
Что же это дает на практике? Под катом я расскажу о том, как с помощью этого решения можно создать настоящий интернет вещей в своем доме.
Что такое «единая платформа домашней автоматизации»?
Направление умных домов развивается уже давно. За это время появилось множество различных поставщиков «умного» оборудования (освещение, RGB подсветки, термостаты, приводы для штор/жалюзи, разнообразные датчики и т.п.) Все они работают на разных протоколах (проводных и беспроводных).
В результате, пользователь, желающий автоматизировать свое жилище, должен выбирать между продуктами от различных производителей. В конечном итоге ему приходится пользоваться разными системами (пульты, приложения) для контроля разных устройств. Вдобавок, задача создания полноценного интернета вещей (когда устройства могут быть связаны в единую цепь и управляться все вместе в результате каких-либо условий и событий) становится очень сложной.
Чем поможет openHAB
openHAB реализует единую шину, т.е. позволяет объединить все устройства с разными протоколами в единую сеть, абстрагируя пользователя от каждого конкретного протокола. Таким образом, можно пользоваться единственным средством управления (скажем, приложением на смартфоне) и реализовать сколь угодно сложную логику взаимосвязи между устройствами.
Что отличает проект openHAB от аналогов?
Во-первых, он развивается уже довольно давно и уже сейчас готов к полноценному использованию. По своему личному опыту (впервые я начал работать с этой системой около года назад) могу сказать, что его освоение занимает совсем немного времени. И после этого он работает действительно так, как заявлено в описании.
Сейчас разработчики трудятся уже над вторым поколением платформы, основанной на специализированном фреймворке Eclipse SmartHome.
Во-вторых, это проект с открытым исходным кодом. А это значит, что весь код создается программистами со всего мира, которые заинтересованы в теме интернета вещей и создания единой системы умного дома. Этот код доступен в репозитории GitHub.
В-третьих, в результате открытости уже сейчас openHAB поддерживает около 50 (пятидесяти!) различных протоколов «умных» устройств. Среди них ZWave, KNX, EnOcean, системы мультимедиа типа Sonos, кинотеатр XBMC, Samsung SmartTV и многие-многие другие. Это, в свою очередь, дает возможность пользователю выбирать устройства для своего дома по самым разнообразным параметрам, практически не ограничиваясь возможностями всей платформы.
Как это работает?
openHAB — это специальный сервер, который может работать на любом компьютере под управлением любой ОС (вы даже можете использовать RaspberryPi). Вся установка заключается в распаковывании дистрибутива сервера и установке Java машины. Далее начинается процесс настройки и созидания.
openHAB — это очень гибкий конструктор. Основанный на технологии OSGi, он позволяет конфигурировать каждый отдельный плагин (Binding) «налету», не перезагружая весь сервер.
Плагин (биндинг) в openHAB — это то самое связующее звено между конкретным протоколом устройства и единой системой openHAB. Пользователь может добавить в свою инсталяцию openHAB только те плагины, которые нужны именно ему. Например, если у вас есть только ZWave и Phillips Hue, то вам понадобятся только два биндинга.
После настройки связи между каждым устройством и соответствующим биндингом система сможет общаться с ним посредством простых команд, абстрагированных от конкретного протокола. Скажем, для включения/выключения есть команды ON/OFF, для открытия/закрытия UP/DOWN и т.д.
В дальнейшем, используя только такие абстрактные команды, можно будет создавать очень сложные сценарии и, что называется, программировать собственный дом.
Настройка item-ов и binding-ов
Каждое «умное» устройство в доме должно быть сконфигурировано в openHAB как один или несколько item-ов. Они описываются в специальном файле в директории configuration/items. Вот пример одного такого item-а
Dimmer Light_GF_Living_Table «Table» (GF_Living, Lights)
Здесь описан один item с именем Light_GF_Living_Table и типом Dimmer. Т.е. это некое устройство, которое может быть диммировано (включено, выключено или изменить свое значение в диапазоне от 0 до 100). Как правило, диммерами являются различные световые приборы, но также это может быть диммируемая розетка, или что-либо еще.
Важно понимать, что item в конфигурации не обязан быть отдельным устройством. Скажем, я мог бы сконфигурировать диммер для управления только одной функцией какого-либо более сложного устройства, например, громкости домашнего кинотеатра или мощностью работы конвекторов. Вот пример использования диммера для управления громкостью:
Dimmer Volume «Volume [%.1f %%]»
Как видите, openHAB дает возможность использовать разные item-ы как элементы управления для всего, что подходит под какие-либо критерии (в данном случае, что-то должно уметь включаться, выключаться и принимать значение от 0 до 100).
Имя item-а дает возможность привязывать к нему элементы UI в конфигурации пользовательского интерфейса (sitemap) и обращаться к нему в коде ваших скриптов и правил (об этом чуть дальше).
В общем случае, синтаксис описания item-а таков
itemtype itemname [«labeltext»] [] [(group1, group2, . )] [
Как видите, сперва идет тип (Switch, Dimmer, Color, String, Number, Rollershutter, DateTime, Contact, Group), затем уникальное в рамках файла имя, опциональные label (то, что будет отображено в UI), иконка (из набора openHAB), одна или несколько групп (для объединения устройств по смыслу или расположению) и собственно конфигурация самого биндинга — в фигурных скобках;
Подробное описание каждого типа и список возможных команд представлен на странице Explanation-of-Items
Binding — или как связать item с устройством
Биндинг связывает item с каким-то конкретным устройством (или его функцией). Это нужно для того, чтобы openHAB преобразовывал абстрактные команды типа On/Off в конкретные сообщения нужного протокола, а также правильно интерпретировал сообщения от устройства. Вот пример KNX биндинга для простого переключателя:
Switch Light_GF_Living_Table «Table» (GF_Living, Lights) < knx="1/0/15+0/0/15" >
У каждого биндинга свой синтаксис конфигурации. В openHAB это одна строчка в фигурных скобках, в которой необходимо указать все что нужно для связи с устройством по конкретному протоколу. Здесь указан протокол KNX и его конфигурация в виде двух адресов — 1/0/15 для управления и 0/0/15 для получения статуса от устройства.
Также не забывайте, что у каждого биндинга есть набор глобальных настроек, которые нужно указать в файле configuratnios/openhab.cfg. Например, для KNX — это IP адрес knx шлюза, который связывает knx-шину с IP сетью.
Пользовательский интерфейс
Здесь openHAB предлагает довольно интересный способ построения UI «на лету» с помощью файлов описания sitemap. В директории configuratnios/sitemaps лежат файлы, в которых нужно описать то, как должен выглядеть пользовательский интерфейс (а точнее, его layout) для управления теми устройствами, которые мы описали в items. Вот простейший пример
Здесь UI состоит только из одного «фрейма» (не путать с фреймами в терминах HTML), в котором есть 4 элемента (два слайдера для управления диммерами, выбор цвета для подсветки, простой переключатель). Список всех возможных элементов интеофейса можно найти на странице Sitemaps.
Почему UI нужно описывать именно так? Почему бы просто не использовать тот же HTML?
Дело в том, что sitemap — это абстрактное описание того, как должен выглядеть интерфейс. Любая программа (например, для смартфона) или javascript клиент в браузере может отрендерить интерфейс по такому описанию по-своему. Таким образом, openHAB абстрагирует описание интерфейса от конкретной реализации.
К слову, кроме веб-интерфейса openHAB предоставляет клиентов под Android и iOS (не учитывая того, что любой программист может написать своего собственного клиента под любую платформу). И что также важно — любое изменение sitemap приводит к измнению UI на клиенте без перезагрузки сервера.
Программируем «умный дом»
И вот наконец мы подобрались к самой интересной части — программированию поведения умного дома!
Все что было кратко описано до этого позволяет настроить связь item-ов с биндингами и правильно отобразить элементы управления в UI. Но openHAB еще предоставляет очень мощный инструмент программирования логики — скрипты и правила. С помощью них можно описать действительно умное поведение устройств в зависимости от разных условий.
Скрипты и правила описываются в файлах директорий scripts и rules соответсвенно на языке Xtend, разработанном Eclipse.
Если скрипт — это кусок кода, который может быть запущен в какой-то момент, то правила — это основной механизм автоматизации. На нем и остановимся подробнее.
И сразу пример простого правила:
При поступлении команд increase/decrease с диммера Volume срабатывает простое правило Volume control, которое увеличивает или уменьшает громкость системы, на которой работает opеnHAB сервер.
Вот еще один пример:
Здесь при включении системы каждое устройство в группе Lights включается в 30 процентах случаев.
Однажды у меня была проблема в том, как управлять KNX подсветкой RGB. Мне нужно было преобразовать данные от единственного элемента UI Colorpicker в 3 сообщения (каждое для своего порта в RGB подсветке).
При этом в sitemap отображается только один элемент Colorpicker
В итоге правило, преобразующее данные от Colorpicker в команды на каждый из диммеров выглядит вот так
Как видите, правила — это не только инструмент автоматизации, но и способ обойти некоторые ограничения или реализовать особенности конкретного устройства.
Да, изменение в исходнике правила также приведет к его автоматической перезагрузке без перезапуска. Подробности о возможностях правил и скриптов, а также множество примеров можно найти на странице Rules
Триггеры
- поступление команды от item-а (например, при включении Switch через UI)
- изменение состояния item-а (например, в момент открытия штор от привода последовательно приходят значения от 0 до 100)
- изменение текущего времени на сервере openHAB (например, Time is midnight )
- старт или остановка сервера opnaHAB
Освоить Xtend в рамках описания логики умного дома несложно. Главное понимать цель, которую хочется достичь в результате работы правила или скрипта и возможности самих устройств.
В итоге
openHAB дает действительно интересную возможность своими силами запрограммировать «умный дом», не ограничивая себя в выборе устройств и тех протоколов, на которых они работают.
Здесь я постарался очень кратко рассказать о самом основном, что несет нам весь проект. По моему личному опыту могу сказать, что автоматизация с openHAB, конечно же, не лишена недостатков, но все же превращается в очень увлекательное занятие.
Если у вас возникнут вопросы или пожелания по теме следующей статьи, с удовольствием готов более полно раскрыть какую-либо сторону использования openHAB.