openHAB 2 и mqtt брокер на raspberry pi

openhab, mqtt, брокер, mosquitto, raspberry, pi

Многие, кто задумывается об автоматизации квартиры или создании умного дома, задумывается о протоколе и технологиях , которые будут использоваться. Довольно распространнёным стал протокол MQTT, вероятно за счёт того, что устройства MQTT дешёвые и функциональные. OpenHAB — это платформа, которая может интегрироваться в среду, использующую MQTT, поэтому есть смысл взглянуть на это программное обеспечение, но перед этим его необходимо установить.

Итак, есть на наличии raspberry pi 2 со всеми необходимыми сопутствующими, такими как блок питания, карта памяти microsd, монитор и кабель для подключения к монитору.
2 пути развернуть openHAB 2 и mqtt брокер mosquitto на raspberry pi:
1) Скачать уже готовый образ openhabian и записать его на карту памяти raspberry pi
2) Распаковать сначала образ raspbian на raspberry pi и потом устанавливать необходимые пакеты.
В статье мы расмотрим оба этих варианта. Начнём с самого простого, то есть с первого варианта.

Вариант 1

Качаем образ системы openhabian на официальном сайте openhab.
Для загрузки образа openhabian на карту памяти используем программу etcher, взять которую можно опять же с официального сайта.

openhab, mqtt, брокер, mosquitto, raspberry, pi

Вставляем карту памяти в raspberry pi, включаем и жём довольно долго. Кабель в сетевой интерфейс raspberry я при этом сразу подключил.
По окончании разворачивания системы можем пробовать логиниться на raspberry pi, используя логин и пароль openhabian
Так как в сети у меня запущен dhcp сервер, сразу после авторизации я вижу ip адрес, полученный raspberry pi и сразу же могу подключиться к малинке по ssh любым удобным клиентом.

openhab, mqtt, брокер, mosquitto, raspberry, pi

Если сервер dhcp у Вас в сети не запущен, то надо вручную задать ip адрес. Для этого так же авторизуемся на установленном openhabian, но не по сети по ssh, а напрямую в консоль и переходим к
настройке сетевого интерфейса:
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf-0
sudo nano /etc/dhcpcd.conf

Добавляю в конце строки:
interface eth0
static ip_address=10.36.1.18/24
static routers=10.36.1.7
static domain_name_servers=8.8.8.8 8.8.4.4

здесь:
eth0 — название сетевого интерфейса raspberry pi.
10.36.1.18 — ip-алрес, назначаемый сетевому интерфейсу raspberry pi (поменяйте на свой адрес)
24 — маска сети
10.36.1.7 — ip адрес шлюза (поменяйте на свой адрес)
8.8.8.8 8.8.4.4 — dns сервера
Сохраняем и закрываем файл /etc/dhcpcd.conf сочетанием Ctrl+x

Сделаем ещё минимальные настройки системы, выполнив команду:
sudo openhabian-config
вписываем стандартный пароль openhabian и видим:

openhab, mqtt, брокер, mosquitto, raspberry, pi

Сейчас будем бегать по меню. Переходим в раздел «System Settings» — «Change Hostname» и меням имя хоста на то, которое Вас нравится больше. Я вписал ophab01.

openhab, mqtt, брокер, mosquitto, raspberry, pi

Изменения вступят в силу после перезагрузки системы.
Снова идём в «System Settings» и переходим в настроки «Set System Timezone». Указываем, в какой временной зоне используется наш openhab. У меня это «Europe» — «Moscow».
Опять идём в «System Settings» — «Change Passwords». Выбираем, чей пароль будем менять, но в обязательном порядке надо поменять пароль «Linux system Account; «openhabian» used for login to this computer»

openhab, mqtt, брокер, mosquitto, raspberry, pi

Пароль должен состоять минимум из 10 символов.
Теперь можно и перезагрузить raspbery pi. Выполняем команду:
sudo reboot

После перезагрузки ip-адрес станет статическим и теперь можно заходить на openHAB через браузер http://ophab01:8080 .Вместо имени хоста «ophab01», можно указать его ip-адрес.
Так выглядить страница http://ophab01:8080

openhab, mqtt, брокер, mosquitto, raspberry, pi

Как видим, на странице есть 4 кнопки, каждая из которых отвечает за то, каком набор пакетов будет установлен.
Simple представляем из себя установку пакетов:

  • Paper UI
  • the new rule engine
  • HABPanel

Standard (рекомендуемый системой) включает в себя:

  • Home Builder
  • Paper UI
  • Basic UI
  • HABPanel

Expert состоит из:

  • Paper UI
  • Classic UI
  • Basic UI
  • HABPanel
  • HABmin

Demo установит следующие пакеты:

  • Paper UI
  • Basic UI
  • HABPanel
  • Привязка для Yahoo Weather, Belkin WeMo, Philips Hue, Sonos, IPP, Astro, AVM!Fritz и NTP
  • Служба RRD4j
  • Слуюба MAP
  • примеры конфигурационных файлов demo.items, demo.things, demo.sitemap, demo.rules, demo.script, rrd4j.persist, de.map и en.map

Если никакой пакетов ставить не надо, то нажимаем ссылку «Skip the package selection….», но для новичков, крайне рекомендую этого не делать, потому что потом, придётся ставить всё вручную.
Для начала нажмём рекомендуемую кнопку «Standard». Немного ждём, когда пакеты будут установлены и появятся такие кнопки:

openhab, mqtt, брокер, mosquitto, raspberry, pi

Ставим MQTT брокер Mosquitto. Для этого в консоли опять же выполняем
sudo openhabian-config
и переходим в раздел «Optional Components» — «Mosquitto».
Далее вводим пароль для защиты MQTT брокера

openhab, mqtt, брокер, mosquitto, raspberry, pi

Если аутентификация не нужна, оставляем поле пустым. После прохождения пункта с вводом защитного пароля для MQTT брокера, будет выполнена команда «apt-get -y install mosquitto mosquitto-clients», которая соответствует установке компонента Mosquitto. По окончании установки появится сообщение:
«Setup was successful. Eclipse Mosquitto is now up and running in the background. You should be able to make a first connection.»
Выходим из «Welcome to the openHABian Configuration Tool».

Проверить запустился ли mosquitto можно командой:
sudo systemctl status mosquitto
Вывод должен быть примерно таким:
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-03-29 15:47:24 MSK; 5min ago
Docs: man:mosquitto.conf(5)
man:mosquitto(8)
Main PID: 3305 (mosquitto)
Tasks: 1 (limit: 2319)
Memory: 636.0K
CGroup: /system.slice/mosquitto.service
└─3305 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Mar 29 15:47:24 ophab01 systemd[1]: Starting Mosquitto MQTT v3.1/v3.1.1 Broker...
Mar 29 15:47:24 ophab01 systemd[1]: Started Mosquitto MQTT v3.1/v3.1.1 Broker.

Возвращаемся к веб-интерфейсу http://ophab01:8080/start/index переходим по кнопке «Paper UI», в колонке слева выбираем «Add-ons» и на вкладке «bindings», расположенной сверху, находим «MQTT Binding».

openhab, mqtt, брокер, mosquitto, raspberry, pi

Жмём «install» напротив найденного «MQTT Binding». Таким образом будет установлен «MQTT Binding».
Теперь необходимо перейти в «Configuration» — «Things» и нажать на «+» для настройки подключения MQTT брокера к openHAB.

openhab, mqtt, брокер, mosquitto, raspberry, pi

В следующем меню выбираем «MQTT Binding»:

openhab, mqtt, брокер, mosquitto, raspberry, pi

Нажимаем на «manually add thing».

openhab, mqtt, брокер, mosquitto, raspberry, pi

Выбираем пункт «MQTT Broker. A connection to a MQTT broker»:

openhab, mqtt, брокер, mosquitto, raspberry, pi

Вписываем свои данные.
Нажимаем снизу кнопку «SHOW MORE» и из важного напомню, что ранее при установке Mosquitto, я вписывал пароль для защиты MQTT брокера, поэтому находим поле «Username», где указываем openhabian , а в поле «Password» указываем пароль, вписанный при установке Mosquitto. В поле Broker Hostname/IP пишем localhost, так как он установлен на одном сервере с openHAB:

openhab, mqtt, брокер, mosquitto, raspberry, pi

openhab, mqtt, брокер, mosquitto, raspberry, pi

Подтверждаем данные нажатием «галки» сверху.
Удостовериться в том, что MQTT брокер подключился к openHAB можно перейдя в раздел «Configuration» — «Things». Напротив нашего mqtt брокера должна стоять пометка online:

openhab, mqtt, брокер, mosquitto, raspberry, pi

На этом про настройку подлючений устройств и конфигурирование openHAB я закончу, так как статья посвящена установке openHAB на raspberry pi, а значит переходим ко второму варианту установки openHAB.

Вариант 2

Он заключается уже не в разворачивании готового образа openhabian на raspberry pi, а в установке raspbian на raspberry pi с последующей установкой всех необходимых компонентов.
Я буду использовать облегчённый образ Raspbian Buster Lite, чтобы не тянуть не нужные мне установленные пакеты, включая рабочий стол. На данный момент актуальной версией Raspbian Buster Lite является версия 2020-02-13-raspbian-buster-lite. Сам образ можно скачать с офоциального сайта.
Разворачиваем образ raspbian на карту памяти так же, как это делали с образом openhabian с помощью программы etcher или любой другой аналогичной. Включаем raspberry pi и ждём окончания загрузки.
После загрузки авторизуемся в консоли со стандартным для raspbian логином и паролем:
login: pi
password: raspberry

Первым делом надо настроить сетевой интерфейс и запустить ssh сервер.
Настройка интерфейса так же, как и в openhabian происходит посредством редактирования файла /etc/dhcpcd.conf. Посмотрите этот момент выше в этой статье в описании разворачивания openhabian.

Посре редактирования /etc/dhcpcd.conf можно перезагрузиться
sudo reboot
и переходим к запуску ssh сервера на raspberry pi.

Выполняем опять же в консоли:
sudo raspi-config
Идём в раздел «Interfacing Options» далее «SSH».
Нажимаем «yes», таким образом запускаем ssh сервер. После этого можно подключаться к ssh серверу опять же любым ssh клиентом.
Но так же советую сменить пароль для пользователя pi. Снова запускаем:
sudo raspi-config
Переходим в раздел «Change User Password»
Вписываем новый пароль.
Повторно вписываем новый пароль.
Всё, пароль пользователя pi изменён.

Подключаемся ssh клиентом к raspberry и приступаем к установке openhab.
Выполняем:
sudo apt-get update
Для openhab необходима Java, а сам openhab рекомендует использовать Zulu. Приступим к установке:
sudo apt-get install dirmngr -y
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9

Видим:
Executing: /tmp/apt-key-gpghome.JRae3kiiz1/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
gpg: key B1998361219BD9C9: public key "Azul Systems, Inc. (Package signing key.) " imported
gpg: Total number processed: 1
gpg: imported: 1

Значит пока всё идёт по плану и мы получили ключ.

Далее добавляем репозиторий и устанавливаем zulu:
echo 'deb http://repos.azulsystems.com/debian stable main' | sudo tee /etc/apt/sources.list.d/zulu.list
sudo apt-get update
sudo apt-get install zulu-embedded-8 -y

Смотрим какая версия установилась:
java -version
Вывод команды такой:
openjdk version "1.8.0_152"
OpenJDK Runtime Environment (Zulu Embedded 8.25.0.76-linux-aarch32hf) (build 1.8.0_152-b76)
OpenJDK Client VM (Zulu Embedded 8.25.0.76-linux-aarch32hf) (build 25.152-b76, mixed mode, Evaluation)

Продолжаем установку:
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
sudo apt-get install openhab2 -y

По окончании установки видим сообщение:
Setting up openhab2 (2.5.3-1) ...
[openHAB] Please use the following commands to launch openHAB on a system restart.
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable openhab2.service

[openHAB] You can start openhab2 manually by executing the command:
sudo /bin/systemctl start openhab2.service

Игнорировать его не надо, а необходимо лишь выполнить эти рекомендации по порядку, то есть выполняем:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable openhab2.service
sudo /bin/systemctl start openhab2.service

Смотрим состояние службы:
sudo systemctl status openhab2.service

Вижу:
● openhab2.service - openHAB 2 - empowering the smart home
Loaded: loaded (/usr/lib/systemd/system/openhab2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-03-29 16:58:54 BST; 32s ago
Docs: https://www.openhab.org/docs/
https://community.openhab.org
Main PID: 2434 (java)
Tasks: 34 (limit: 2200)
Memory: 63.3M
CGroup: /system.slice/openhab2.service
└─2434 /usr/bin/java -Dopenhab.home=/usr/share/openhab2 -Dopenhab.conf=/etc/openhab2 -Dopenhab.runtime=/usr/sh

Mar 29 16:58:54 raspberrypi systemd[1]: Started openHAB 2 - empowering the smart home.
Значит всё в порядке.

Ещё ставим следующие пакеты:
sudo apt-get -y install mosquitto mosquitto-clients openhab2-addons
Видим, что следующие пакеты будут установлены:
libev4 libmosquitto1 libuv1 libwebsockets8 mosquitto mosquitto-clients openhab2-addons

Надо настроить mosquitto, для этого сначала остановим службу:
sudo /etc/init.d/mosquitto stop

и отредактируем конфигурационный файл mosquitto.conf
sudo cp /etc/mosquitto/mosquitto.conf /etc/mosquitto/mosquitto.conf-0
sudo nano /etc/mosquitto/mosquitto.conf

изначально он выглядел так:
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d

Доводим его до следующего состояния:
pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest topic

log_type error
log_type warning
log_type notice
log_type information

connection_messages true
log_timestamp true

# разрешаем доступ только авторизованным пользователям из /etc/mosquitto/passwd
allow_anonymous false
password_file /etc/mosquitto/passwd

include_dir /etc/mosquitto/conf.d

Сохраняем файл /etc/mosquitto/mosquitto.conf и закрываем его сочетанием Ctrl+x.

Теперь надо создать пользователя и пароль для подключения к mosquitto (хотя в маленькой домашней сети это может и не обязательно, но уж очень не безопасно). Выполняем:
sudo mosquitto_passwd -c /etc/mosquitto/passwd mosquitto
или
sudo mosquitto_passwd -c /etc/mosquitto/passwd pi
Эта команда создаст пользователя «mosquitto» или «pi» с паролем, который вы ему укажите.

Примечание.
Если надо несколько пользователей, то сначала создаём командой
sudo mosquitto_passwd -c /etc/mosquitto/passwd pi
добавляем нового пользователя командой:
sudo mosquitto_passwd /etc/mosquitto/passwd mosquitto
Таким образом файл /etc/mosquitto/passwd будет пополняться пользователями.
Если надо удалить пользователя из /etc/mosquitto/passwd, то выполняем:
sudo mosquitto_passwd -D /etc/mosquitto/passwd mosquitto
Удалится пользователь mosquitto.

После редактирования файла /etc/mosquitto/mosquitto.conf и добавления пользователей для авторизации mosquitto, надо перезапустить службу:
sudo systemctl restart mosquitto

А вот теперь можно переходить к веб-интерфейсу, пробуем заходить на http://raspberry-IP-адрес:8080/ и вновь увидим интерфейс с 4 кнопками Simple, Standard, Expert, Demo.
Что делать дальше Вы уже знаете, прочитав вариант №1 выше. Так же выбираем Standard, идём в Paper UI, потом в Add-ons, находим и устанавливаем «MQTT Binding» и дальше по статье.
Логин и пароль для подключения, конечно, указываем уже тех, которых мы добавили только что в /etc/mosquitto/passwd.
В итоге снова увидим, что MQTT брокер находится в статусе online.

Мы рассмотрели 2 способа установки openHAB и mqtt брокера mosquitto на raspberry pi. Первый более простой, а второй запущен на операционной системе Raspbian. Какой способ оптимальнее, решает каждый для себя сам.

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