В прошлых статьях я рассказывал о своем новом одноплатнике 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