Сегодняшняя цель это на Ubuntu 22.04 Server + Domoticz 2024.7
поднять сервис Mosquitto
с последующим применением, когда устройство будет отправлять данные в топики, а система "Умного дома"
в лице Domoticz
их принимать и визуализировать на карточках. Ну как-то так я себе это представляю. Просто, когда я открыл свою ранее опубликованную заметку, там у меня была другая версия Ubuntu LTS
и действуя по ней что-то сервис не завелся, а потому отдельно для каждой OC все приходится разбирать отдельно.
Шаг №1:
На Ubuntu 22.04 Server
развернут Domoticz 2024.7
опираясь на заметку: "Связываем Domoticz Lite 0.2.379.9719 и Domoticz на Galaxy A55 5G"
Доступ к Web
-интерфейсу Domoticz
осуществляетcя из локальной сети на адрес: https://172.35.35.10
Шаг №2:
Устанавливаю брокер Mosquitto
на систему где установлен Domoticz:
ekzorchik@srv-domoticz:~$ sudo apt-get install -y mosquitto mosquitto-clients
Шаг №3:
Активирую доступ к подпискам с помощью связки логина и пароля:
ekzorchik@srv-domoticz:~$ sudo mosquitto_passwd -c /etc/mosquitto/passwd domoticz
Password: Aa1234567
Reenter password: Aa1234567
ekzorchik@srv-domoticz:~$
содержимое сформированного файла с логином и зашифрованным паролем:
ekzorchik@srv-domoticz:~$ sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
ekzorchik@srv-domoticz:~$ cat /etc/mosquitto/passwd
domoticz:$7$101$LvC7ACMOGHe9mqN2$08Zaq6JQWTP+RSH4ZeXQIjrKRnDJbAP6XdSZ161BK8ahapQJUOsE+yziejKuEVypJkIS+pbumXMkWWzSzMs/FA==
ekzorchik@srv-domoticz:~$
Шаг №4:
Запрещаем анонимные подключения и указываем, что использовать связку логина и пароля из файла выше (/etc/mosquitto/passwd):
ekzorchik@srv-domoticz:~$ sudo nano /etc/mosquitto/mosquitto.conf
pid_file /var/run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
password_file /etc/mosquitto/passwd
listener 1883 172.35.35.10
persistence_file mosquitto.db
log_dest syslog
log_dest stdout
log_dest topic
log_type error
log_type warning
log_type notice
log_type information
connection_messages true
log_timestamp true
allow_anonymous false
Шаг №5:
Изменяем владельца на месторасположение mosquitto pid
файла:
ekzorchik@srv-domoticz:~$ sudo chown mosquitto:root /var/run/mosquitto/
Шаг №6:
Для применения изменения в mosquitto.conf
перезагружаю сервис Mosquitto:
ekzorchik@srv-domoticz:~$ sudo systemctl disable mosquitto.service
Synchronizing state of mosquitto.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable mosquitto
Removed /etc/systemd/system/multi-user.target.wants/mosquitto.service.
ekzorchik@srv-domoticz:~$
ekzorchik@srv-domoticz:~$ sudo systemctl enable mosquitto.service
Synchronizing state of mosquitto.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mosquitto
ekzorchik@srv-domoticz:~$
ekzorchik@srv-domoticz:~$ sudo nano /etc/systemd/system/multi-user.target.wants/mosquitto.service
[Unit]
Description=Mosquitto MQTT Broker
Documentation=man:mosquitto.conf(5) man:mosquitto(8)
After=network.target
Wants=network.target
[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto
ExecStartPre=/bin/chown mosquitto /var/log/mosquitto
ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto
ExecStartPre=/bin/chown mosquitto:root /run/mosquitto
[Install]
WantedBy=multi-user.target
Шаг №7:
Если вносились изменения в mosquitto.service
то нужно сделать sudo systemctl daemon-reload
Шаг №8:
Проверяю что mosquitto
с конфигурационным файлом запускается:
ekzorchik@srv-domoticz:~$ sudo mosquitto -c /etc/mosquitto/mosquitto.conf
1733381553: mosquitto version 2.0.11 starting
1733381553: Config loaded from /etc/mosquitto/mosquitto.conf.
1733381553: Opening ipv4 listen socket on port 1883.
1733381553: mosquitto version 2.0.11 running
На заметку: Если
ekzorchik@srv-domoticz:~$ sudo mosquitto -c /etc/mosquitto/mosquitto.conf
1733380729: Error: Unable to write pid file.
в этом случае нужно смотреть путь до PID
файл и права на его формирование.
Запускается, через сочетание клавиш Ctrl + C
прерываю
^C1733381593: mosquitto version 2.0.11 terminating
1733381593: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
и пробую запустить mosquitto
как сервис:
ekzorchik@srv-domoticz:~$ sudo systemctl restart mosquitto.service && sudo systemctl status mosquitto.service | head -n5
● mosquitto.service - Mosquitto MQTT Broker
Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-12-05 09:54:27 MSK; 13ms ago
Docs: man:mosquitto.conf(5)
man:mosquitto(8)
ekzorchik@srv-domoticz:~$
Шаг №9:
Чтобы проверить, что все настроено правильно. Откроем параллельно два окна терминала:
В одном терминале отправляем сообщение в топик test:
ekzorchik@srv-domoticz:~$ mosquitto_pub -d -t test -m "Test Message" -h 172.35.35.10 -p 1883 -u domoticz -P Aa1234567
Client (null) sending CONNECT
Client (null) received CONNACK (0)
Client (null) sending PUBLISH (d0, q0, r0, m1, 'test', ... (12 bytes))
Client (null) sending DISCONNECT
В другом терминале запускаем прием сообщений из топика test:
ekzorchik@srv-domoticz:~$ mosquitto_sub -t test -u domoticz -P Aa1234567 -h 172.35.35.10 -p 1883
Test Message - вот это сообщение пришло
и дальше консоль не закрывается тем самым идет ожидание новых сообщений что прилетят в топик с именем "test".
Исходя из этого могу пока сделать вывод, то успешно произвел установку mosquitto
на Ubuntu 22.04 Server
где крутится сервис Domoticz.
В следующей заметке я покажу, как завести оборудование на связь с MQTT + Domoticz.
На этом текущая заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.