Mastodon
Domoticz on QNAP TS-212 NAS running Debian 11 bullseye

QNAP TS-212 как zigbee-шлюз умного дома: DomoticZ+Mosquitto

Итак, DomoticZ успешно собрался и установился. Устанавливал командой make install, установился он в /opt/domoticz.

При подготовке к сборке нашлась ошибка в инструкции в wiki DomoticZ в части, касающейся сборки требуемой зависмости – библиотеки boost: замещающий текст ссылки указывает на версию 1.8.0, а сама ссылка ведёт на версию 1.79.0_rc1. Если копипастить в терминал текст команд – то всё будет хорошо, а если скопипастить ссылку – то скачается не то, что нужно.

Автозапуск DomoticZ реализовал через systemd, юнит слегка подправил:

[Unit]
Description=Domoticz Home Automation
After=network.target

[Service]
Type=simple
ExecStart=/opt/domoticz/domoticz -www 8080 -sslwww 0 -syslog daemon -pidfile /run/domoticz.pid
PIDFile=/run/domoticz.pid
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

Web-интерфейс опубликовал через системный nginx. Ниже содержимое файла /etc/nginx/sites-available/domoticz, на который создан symlink /etc/nginx/sites-enabled/domoticz

server {
listen 443 ssl; # managed by Certbot
server_name domoticz.domain.zone; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domoticz.domain.zone/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domoticz.domain.zone/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
include proxy_params;
access_log /var/log/nginx/domoticz.domain.zone_access.log;
error_log /var/log/nginx/domoticz.domain.zone_error.log;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

location / {
            proxy_pass http://localhost:8080/;
           }
}

Сертификат SSL, как видно, получен у Let’s Encrypt.

Установил плагин ZigbeeForDomoticZ, в его конфигурации выбрал Coordinator Model: Texas Instruments ZNP (via zigpy), Coordinator Type: USB, Serial Port: /dev/ttyUSB0, Initialize coordinator: true и через несколько минут увидел в Devices работающие устройства донгла:

В качестве брокера очередей MQTT планировал изначально ejabberd. Но увы – все попытки его запустить заканчивались segmentation fault – видимо 256 мегабайт RAM ему мало, несмотря на отсутсвие подключений и клиентов. Поэтому поставил и установил mosquitto.

Опубликовал в интернет его так же через nginx. Пример конфига из /etc/nginx/nginx.conf (директива stream в контексте http не допускается, поэтому в файл виртуального хоста добавить это нельзя):

stream 
  {
    upstream mosquitto
      {
      server localhost:1883;
      }
  server {
    listen 8883 ssl;
    proxy_pass mosquitto;
    ssl_certificate /etc/letsencrypt/live/domoticz.domain.zone/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domoticz.domain.zone/privkey.pem;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    }
  }

Далее добавил в domoticz устройство MQTT Client Gateway with LAN interface, ввел параметры mosquitto и в логе domoticz увидел успешное подключение:

Jan 23 21:26:31 NAS domoticz: mosquitto@NAS: Connecting to localhost:1883
Jan 23 21:26:31 NAS domoticz[18098]: domoticz: mosquitto@NAS: connected to: localhost:1883
Jan 23 21:26:31 NAS domoticz[18098]: 2023-01-23 21:26:31.859 Status: mosquitto@NAS: connected to: localhost:1883
Jan 23 21:26:31 NAS domoticz: mosquitto@NAS: connected to: localhost:1883

На этом пока всё.

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