Installation du broker en local

Bonjour,

  1. N’y aurait-il pas une coquille dans le fichier /plugins/mqtt2/plugin_info/configuration.php à la ligne 106 ? Il faudrait :
<div class="form-group mqtt2Mode local docker">

au lieu de :

<div class="form-group mqtt2Mode docker">

afin d’afficher les paramètres de Mosquitto en mode « Broker Local ».

  1. Lors de l’installation du broker en local, il y a toujours le message suivant qui apparait :

Mosquitto_Container

alors qu’il ne devrait apparaitre que dans le mode « Broker Local Docker ».

  1. Lorsque j’essaie d’installer Mosquitto en local, j’ai le message suivant :

image

Et le démon ne démarre pas avec l’erreur suivante :

[2022-06-19 17:08:47]INFO : Start mqtt2d
[2022-06-19 17:08:47]INFO : Log level on  : debug
[2022-06-19 17:08:47]INFO : Socket port : 55035
[2022-06-19 17:08:47]INFO : MQTT : mqtts://127.0.0.1:8883
[2022-06-19 17:08:47]INFO : Username : --password
[2022-06-19 17:08:47]INFO : Password : --callback
[2022-06-19 17:08:47]INFO : PID file : /tmp/jeedom/mqtt2/deamon.pid
[2022-06-19 17:08:47]INFO : Apikey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[2022-06-19 17:08:47]INFO : Callback : http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php
[2022-06-19 17:08:47]INFO : Cycle : 0.3
[2022-06-19 17:08:47]INFO : Client key : /var/www/html/plugins/mqtt2/data/ssl/client.key
[2022-06-19 17:08:47]INFO : Client crt : /var/www/html/plugins/mqtt2/data/ssl/client.crt
[2022-06-19 17:08:47]INFO : CA : /var/www/html/plugins/mqtt2/data/ssl/ca.crt
[2022-06-19 17:08:48]INFO : Connect to mqtt server
[2022-06-19 17:08:48]DEBUG : HTTP listen on 127.0.0.1 port : 55035 started
[2022-06-19 17:08:48]ERROR : Error on connection to mqtt server : Error: Connection refused: Not authorized

On peut voir que le username et password sont vide dans la commande.

En lancant la commande directement; voici ce que j’obtiens :

root@raspberrypi:~# sudo mosquitto_passwd -U /var/www/html/plugins/mqtt2/core/class/../../data/passwords/passwords
Error reading password file: Not a directory

Il semble qu’il y ait le . '/passwords en trop dans le echo à la ligne 89 du fichier /plugins/mqtt2/core/class/mqtt2.class

echo system::getCmdSudo() . ' mosquitto_passwd -U ' . $path . '/passwords';
shell_exec(system::getCmdSudo() . ' mosquitto_passwd -U ' . $path)

Du coup, en éxécutant la commande suivante, je n’ai pas d’erreur :

root@raspberrypi:~# sudo mosquitto_passwd -U /var/www/html/plugins/mqtt2/core/class/../../data/passwords
root@raspberrypi:~#

Mais le démon ne démarre toujours pas :

[2022-06-19 17:10:23]INFO : Start mqtt2d
[2022-06-19 17:10:23]INFO : Log level on  : debug
[2022-06-19 17:10:23]INFO : Socket port : 55035
[2022-06-19 17:10:23]INFO : MQTT : mqtts://127.0.0.1:8883
[2022-06-19 17:10:23]INFO : Username : --password
[2022-06-19 17:10:23]INFO : Password : --callback
[2022-06-19 17:10:23]INFO : PID file : /tmp/jeedom/mqtt2/deamon.pid
[2022-06-19 17:10:23]INFO : Apikey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[2022-06-19 17:10:23]INFO : Callback : http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php
[2022-06-19 17:10:23]INFO : Cycle : 0.3
[2022-06-19 17:10:23]INFO : Client key : /var/www/html/plugins/mqtt2/data/ssl/client.key
[2022-06-19 17:10:23]INFO : Client crt : /var/www/html/plugins/mqtt2/data/ssl/client.crt
[2022-06-19 17:10:23]INFO : CA : /var/www/html/plugins/mqtt2/data/ssl/ca.crt
[2022-06-19 17:10:24]INFO : Connect to mqtt server
[2022-06-19 17:10:24]DEBUG : HTTP listen on 127.0.0.1 port : 55035 started
[2022-06-19 17:10:24]ERROR : Error on connection to mqtt server : Error: Connection refused: Not authorized

Et en regardant en base, on peut voir que les identifiants ont disparus suite à la tentative de démarrage du démon :

image

Au passage, je vois qu’il y a 2 heures de retard dans les logs du démon MQTT.

Je viens de refaire les même tests sur une VM Debian 10 et je n’ai pas tout à fait le même comportement.

J’ai toujours le message suivant lors de l’install de Mosquitto :

image

Cette fois-ci les credentials sont bien pris en compte comme on peut le voir ci-dessous mais le démon ne démarre pas.

[2022-06-21 18:55:13]INFO : Start mqtt2d
[2022-06-21 18:55:13]INFO : Log level on  : debug
[2022-06-21 18:55:13]INFO : Socket port : 55035
[2022-06-21 18:55:13]INFO : MQTT : mqtts://127.0.0.1:8883
[2022-06-21 18:55:13]INFO : Username : jeedom
[2022-06-21 18:55:13]INFO : Password : OXZtkmNP55yrr4aCS3WCTTP3WiwpsF5d0xDbqVecLqlPQcT65QmQNp7tvKamdCqA
[2022-06-21 18:55:13]INFO : PID file : /tmp/jeedom/mqtt2/deamon.pid
[2022-06-21 18:55:13]INFO : Apikey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[2022-06-21 18:55:13]INFO : Callback : http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php
[2022-06-21 18:55:13]INFO : Cycle : 0.3
[2022-06-21 18:55:13]INFO : Client key : /var/www/html/plugins/mqtt2/data/ssl/client.key
[2022-06-21 18:55:13]INFO : Client crt : /var/www/html/plugins/mqtt2/data/ssl/client.crt
[2022-06-21 18:55:13]INFO : CA : /var/www/html/plugins/mqtt2/data/ssl/ca.crt
[2022-06-21 18:55:13]INFO : Connect to mqtt server
[2022-06-21 18:55:13]DEBUG : HTTP listen on 127.0.0.1 port : 55035 started
[2022-06-21 18:55:13]ERROR : Error on connection to mqtt server : Error: connect ECONNREFUSED 127.0.0.1:8883

On peut voir que Mosquitto tourne seulement sur le port 1883 :

root@Jeedom-Buster-V4-Alpha-Dev:~# netstat -a | grep 883
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:1883               [::]:*                  LISTEN

En redémarrant manuellement Mosquitto :

root@Jeedom-Buster-V4-Alpha-Dev:~# systemctl restart mosquitto
root@Jeedom-Buster-V4-Alpha-Dev:~# netstat -a | grep 883
tcp        0      0 0.0.0.0:8883            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:8883               [::]:*                  LISTEN     
tcp6       0      0 [::]:1883               [::]:*                  LISTEN

il tourne bien cette fois-ci aussi sur le port 8883 et le démon démarre :

[2022-06-21 18:56:11]INFO : Start mqtt2d
[2022-06-21 18:56:11]INFO : Log level on  : debug
[2022-06-21 18:56:11]INFO : Socket port : 55035
[2022-06-21 18:56:11]INFO : MQTT : mqtts://127.0.0.1:8883
[2022-06-21 18:56:11]INFO : Username : jeedom
[2022-06-21 18:56:11]INFO : Password : OXZtkmNP55yrr4aCS3WCTTP3WiwpsF5d0xDbqVecLqlPQcT65QmQNp7tvKamdCqA
[2022-06-21 18:56:11]INFO : PID file : /tmp/jeedom/mqtt2/deamon.pid
[2022-06-21 18:56:11]INFO : Apikey : v7evcQIeYskyJTFnXZ8YKLq0LTOBVVLcIGYawurxE9prLp5cygdaLArXUpWOSstj
[2022-06-21 18:56:11]INFO : Callback : http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php
[2022-06-21 18:56:11]INFO : Cycle : 0.3
[2022-06-21 18:56:11]INFO : Client key : /var/www/html/plugins/mqtt2/data/ssl/client.key
[2022-06-21 18:56:11]INFO : Client crt : /var/www/html/plugins/mqtt2/data/ssl/client.crt
[2022-06-21 18:56:11]INFO : CA : /var/www/html/plugins/mqtt2/data/ssl/ca.crt
[2022-06-21 18:56:11]INFO : Connect to mqtt server
[2022-06-21 18:56:11]DEBUG : HTTP listen on 127.0.0.1 port : 55035 started
[2022-06-21 18:56:11]INFO : Connection to mqtt server successfull
[2022-06-21 18:56:11]INFO : Subscription to all topics
[2022-06-21 18:56:11]INFO : Subscription to all topics succesfull

même s’il en NOK (comme remonté dans d’autres posts).

En désactivant la gestion automatique du démon, et en le démarrant manuellement, le démon démarre.