Сегодняшняя цель это на 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.