Найти тему
Smart Home 53

Устанавливаем mqtt брокер и zigbee2mqtt на orange pi zero

Оглавление

В прошлых статьях я рассказывал о своем новом одноплатнике orange pi zero lts, а также установил на него операционную систему и произвел некоторые манипуляции с sd картой для расширения файловой системы. В этой статье опишу свой опыт установки на данный одноплатник MQTT брокера и zigbee2mqtt для управления умным домом.

Для начала стоит обновить систему

Подключаемся к компьютеру по ssh и вводим две команды одну за другой:

sudo apt-get update
sudo apt-get upgrade

Добавляем ключ и обновляем репозиторий, вводим строчки одну за другой.

sudo wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
rm mosquitto-jessie.list
sudo apt-get update

Устанавливаем сам MQTT брокер

sudo apt-get install mosquitto

При необходимости можно установить и mqtt клиент с помощью следующей команды:

sudo apt-get install mosquitto mosquitto-clients

Далее необходимо остановить сервер для осуществления настройки.

sudo /etc/init.d/mosquitto stop

Настройка осуществляется с помощью редактирования файла конфигурации, откроем этот файл:

sudo nano /etc/mosquitto/mosquitto.conf

Я заменил содержимое файла на одну из найденных конфигураций на просторах интернета. В моем случае она выглядит следующим образом:

# Place your local configuration in /etc/mosquitto/conf.d/
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
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
include_dir /etc/mosquitto/conf.d

Далее можно снова запустить наш сервер с помощью следующей команды:

sudo /etc/init.d/mosquitto start

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

sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>

Вместо <username> нужно указать имя пользователя для доступа к серверу mqtt, далее нужно будет 2 раза ввести пароль для данного пользователя, который будет использоваться для доступа к mqtt серверу.

Теперь редактируем конфигурацию сервера

sudo nano /etc/mosquitto/conf.d/default.conf

В открывшемся файле добавляем две строчки:

allow_anonymous false
password_file /etc/mosquitto/passwd

И перезапускаем сервер MQTT:

sudo systemctl restart mosquitto

На этом установка и настройка MQTT сервера закончена.

Для проверки статуса вашего брокера можно использовать следующую команду:

sudo /etc/init.d/mosquitto status

Перейдем к установке zigbee2mqtt

В целом на портале есть достаточно подробная инструкция, и я шел по ней, тем не менее есть и нюансы. Вначале необходимо подключить zigbee стик в одноплатник и удостовериться, что он доступен по адресу /dev/ttyACM0.

Теперь устанавливаем Node.js репозиторий

sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Устанавливаем Node.js.

sudo apt-get install -y nodejs git make g++ gcc

Проверяем версии nodejs и npm. (должны быть v12.x или v10.х для nodejs и 6.x для npm).

node --version
npm --version

Клонируем репозиторий в папку /opt/zigbee2mqtt

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt

Вместо pi:pi укажите вашего пользователя, от которого будет запускаться Zigbee2mqtt.

Далее устанавливаем зависимости

cd /opt/zigbee2mqtt
npm ci --production

Далее настраиваем непосредственно сервер zigbee2mqtt

Файл конфигурации открываем с помощью команды:

nano /opt/zigbee2mqtt/data/configuration.yaml

Подробно конфигурация сервера так же описана на сайте проекта.

После настройки сервера можно запустить zigbee2mqtt следующими командами.

cd /opt/zigbee2mqtt
npm start

С первого раза zigbee2mqtt отказался стартовать и я обратился к документации на портале вновь.

Мне помогло введение следующей команды:

sudo usermod -a -G dialout $USER

После этого все запустилось успешно.

Для дальнейшего удобства я создал по инструкции демон для запуска средствами systemctl.

Создаем конфигурационный файл:

sudo nano /etc/systemd/system/zigbee2mqtt.service

Добавляем в него следующее содержимое:

[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target

Сохраняем файл. Теперь можно запустить и проверить статус следующими командами:

sudo systemctl start zigbee2mqtt
systemctl status zigbee2mqtt.service

Для автоматического запуска сервиса при загрузки операционной системы выполним команду:

sudo systemctl enable zigbee2mqtt.service

На этом все, zigbee2mqtt успешно установлен. Перезагружаем сервер, проверяем что все стартует и радуемся.

Во время тестирования я подключил свой рабочий стик CC2538 и перенес базу и конфигурацию с основного сервера с zigbee2mqtt и одноплатник без проблем справился, оперативной памяти хватает, процессор также чувствует себя вполне вольготно. Конечно, нужно попробовать в продакшене, к чему в принципе orangepi уже готов, осталось несколько подготовительных моментов перед крупнейшим переездом mqtt и zigbee2mqtt.

Подписывайтесь на мой канал и страницу в инстаграм @smart.home53, чтобы не пропустить новые статьи.

#умный дом #smart home #orange pi #одноплатный компьютер #debian #технологии #интернет вещей #mqtt #zigbee