MQTT Client geht im Legacy Container nicht

Solaranzeige und Docker
Alles was mit der Docker Version zu tun hat.

Moderatoren: Ulrich, DeBaschdi

robert65
Beiträge: 27
Registriert: Mi 19. Okt 2022, 23:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

MQTT Client geht im Legacy Container nicht

Beitrag von robert65 »

Meine MQTT Konfiguration:
cat /var/www/html/user.config.php |grep "MQTT" |grep "="
$MQTT = true;
$MQTTBroker = "192.168.58.206";
$MQTTPort = 1883;
$MQTTBenutzer = "";
$MQTTKennwort = "";
$MQTTSSL = false;
$MQTTKeepAlive = 60;
$MQTTGeraet = "box1";

MQTT-Server ist auf Port 1883 erreichbar:
telnet 192.168.58.206 1883
Trying 192.168.58.206...
Connected to 192.168.58.206.
Escape character is '^]'.

Fehlermeldung bei Aufruf des PHP-Scripts vom Crontab:
/var/www/html/mqtt_prozess.php
PHP Fatal error: Uncaught Mosquitto\Exception: The connection was refused. in /var/www/html/mqtt_prozess.php:115
Stack trace:
#0 /var/www/html/mqtt_prozess.php(115): Mosquitto\Client->loop(100)
#1 {main}
thrown in /var/www/html/mqtt_prozess.php on line 115

DeBaschdi
Beiträge: 228
Registriert: Mo 10. Aug 2020, 08:13
Hat sich bedankt: 12 Mal
Danksagung erhalten: 40 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von DeBaschdi »

Hallo Robert,
ich selbst bin noch nicht dazu gekommen um den Broker bei mir mit "http://www.mqtt-dashboard.com/#" zu testen, kannst du das übernehmen ?
ich möchte lediglich ausschließen ob es ein "generelles" Problem ist.

robert65
Beiträge: 27
Registriert: Mi 19. Okt 2022, 23:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von robert65 »

Hallo DeBaschdi,

Ich habe meinen Brocker mit meinem PI(solaranzeige/box2) getestet und der kann eine Verbindung mit meinem Broker aufbauen und ich sehe auf meinem Broker die Nachricht:

Nachricht 50 empfangen auf solaranzeige/box2/marketprice_hour_11 um 11:16:
128.91

Beim PI kommt auch keine Fehlermeldung beim Aufruf von: /var/www/html/mqtt_prozess.php

Also ich denke irgendwas passt bei dem Container nicht ich habe schon versucht im Container mit "apt-get reinstall" die PHP und mosquitto PAkete erneut zu installieren.

Leider kein Erfolg... Ich denke ein erneuter Test mit einem externen Broker wird auch nicht viel helfen.

Lg.
Robert

robert65
Beiträge: 27
Registriert: Mi 19. Okt 2022, 23:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von robert65 »

Hallo DeBaschdi,

ich habe heute noch einige Tests auch mit dem externen Broker im Internet gemacht und auch mit dem konnte keine Verbindung aufgebaut werden.
Der Interne Broker geht, generell kann man sagen das mit dem solaranzeige php-client keine externe Verbindung aufgebaut werden kann.

mit telnet kann eine Verbindung auch zu den externen Broker aufgebaut werden:
telnet broker.hivemq.com 1883
Trying 3.120.104.68...
Connected to broker.hivemq.com.
Escape character is '^]'.

beim PHP-Client kommt im Log immer(php-log geht mit dem letzten Conainer1.8):

23-Nov-2022 22:42:32 Europe/Berlin] PHP Fatal error: Uncaught Mosquitto\Exception: The client is not currently connected. in /var/www/html/mqtt_prozess.php:115
Stack trace:
#0 /var/www/html/mqtt_prozess.php(115): Mosquitto\Client->loop(100)
#1 {main}
thrown in /var/www/html/mqtt_prozess.php on line 115


mit einem "tcpdump" am router sehe ich vom solaranzeige-Container keine IP-Pakete wenn der PHP-Client versucht eine Verbindung aufzubauen.

DeBaschdi
Beiträge: 228
Registriert: Mo 10. Aug 2020, 08:13
Hat sich bedankt: 12 Mal
Danksagung erhalten: 40 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von DeBaschdi »

Aha, interessant. ^^

Ich hab derweil herausgefunden :
PI :

Code: Alles auswählen

root@solaranzeige:~# php -i |grep mosquitto
mosquitto
libmosquitto version => 1.5.7
Docker :

Code: Alles auswählen

root@Cloudserver:/# php -i |grep mosquitto
/etc/php/7.3/cli/conf.d/20-mosquitto.ini,
mosquitto
libmosquitto version => 2.0.12
Etwas korios, da :
PI :

Code: Alles auswählen

root@solaranzeige:/usr/lib/php/20180731# apt search mosquitto-client
Sortierung... Fertig
Volltextsuche... Fertig
mosquitto-clients/now 2.0.13-0mosquitto1~buster1 armhf  [Installiert,lokal]
  Mosquitto command line MQTT clients

Code: Alles auswählen

root@solaranzeige:/usr/lib/php/20180731# pecl list
Installed packages, channel pecl.php.net:
=========================================
Package   Version State
Mosquitto 0.4.0   beta

Code: Alles auswählen

root@solaranzeige:/usr/lib/php/20180731# ls -la /usr/lib/php/20180731 |grep mosquitto
-rw-r--r-- 1 root root  184860 Aug 15  2019 mosquitto.so
Docker :

Code: Alles auswählen

root@Cloudserver:/usr/lib/php/20180731# apt search mosquitto-client
Sorting... Done
Full Text Search... Done
mosquitto-clients/now 2.0.12-0mosquitto1~buster1 amd64 [installed,local]
  Mosquitto command line MQTT clients

Code: Alles auswählen

root@Cloudserver:/usr/lib/php/20180731# pecl list
Installed packages, channel pecl.php.net:
=========================================
Package   Version State
Mosquitto 0.4.0   beta
Mir scheint, als hätte @Ulrich die "alte" mosquitto.so seit 2019 mit sich "händisch" herumgeschleppt ?
kann das sein ?

Code: Alles auswählen

root@Cloudserver:/usr/lib/php/20180731# ls -la /usr/lib/php/20180731 |grep mosquitto
-rw-r--r-- 1 root root  232328 Nov 22 06:08 mosquitto.so
und nu ?

DeBaschdi
Beiträge: 228
Registriert: Mo 10. Aug 2020, 08:13
Hat sich bedankt: 12 Mal
Danksagung erhalten: 40 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von DeBaschdi »

kannst du bitte mal händisch einen Downgrade auf 1.5.7 des php Moduls versuchen und mir Feedback geben ?

Innerhalb des Containers :

Code: Alles auswählen

cd /solaranzeige
wget http://ftp.de.debian.org/debian/pool/main/m/mosquitto/libmosquitto1_1.5.7-1+deb10u1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/m/mosquitto/libmosquitto-dev_1.5.7-1+deb10u1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/m/mosquitto/mosquitto-clients_1.5.7-1+deb10u1_amd64.deb

apt update
apt install -qy build-essential make
dpkg -i libmosquitto1_1.5.7-1+deb10u1_amd64.deb
dpkg -i libmosquitto-dev_1.5.7-1+deb10u1_amd64.deb
dpkg -i mosquitto-clients_1.5.7-1+deb10u1_amd64.deb

pecl install -f mosquitto-alpha
apt -qy --fix-broken install
anschließend checken ob die Erweiterung in 1.5.7 geladen wurde :

Code: Alles auswählen

root@Cloudserver:/solaranzeige# php -i |grep mosquitto
/etc/php/7.3/cli/conf.d/20-mosquitto.ini,
mosquitto
libmosquitto version => 1.5.7
Wenn dem so ist, bitte mosquitto testen,
bedenke, diese modifikationen sind nur temporär, wenn das klappt kommt das ins nächste Image Update, wird seinen Grund haben wieso Ulrich die alte Version verwenden will.

robert65
Beiträge: 27
Registriert: Mi 19. Okt 2022, 23:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von robert65 »

Hallo DeBaschdi,
also ich habe das nach deiner Anleitung gemacht.

geht leider noch immer nicht allerdings gibt's nach dem Build einen Core Dump:

Build process completed successfully
Installing '/usr/lib/php/20180731/mosquitto.so'
install ok: channel://pecl.php.net/Mosquitto-0.4.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=mosquitto.so" to php.ini
Segmentation fault (core dumped)

root@11b97143f97f:/solaranzeige# php -i |grep mosquitto
/etc/php/7.3/cli/conf.d/20-mosquitto.ini,
mosquitto
libmosquitto version => 1.5.7

Fehlermeldung ist aber im PHP-log dieselbe

DeBaschdi
Beiträge: 228
Registriert: Mo 10. Aug 2020, 08:13
Hat sich bedankt: 12 Mal
Danksagung erhalten: 40 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von DeBaschdi »

Uff,
dann erstmal danke fürs Testen..
Leider gehen mir nun die Ideen aus :/

robert65
Beiträge: 27
Registriert: Mi 19. Okt 2022, 23:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von robert65 »

schwieriges Problem, funktioniert das eigentlich mit dem nicht-legacy Docker-Container?

Ich hatte mit diesem ja auch PHP-Probleme.

Leider kann ich momentan am PI keine Tests durchführen, ich denke da hat die SD-Karte aufgegeben.

Lg.
Robert

robert65
Beiträge: 27
Registriert: Mi 19. Okt 2022, 23:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: MQTT Client geht im Legacy Container nicht

Beitrag von robert65 »

Habe jetzt mal den amd64/latest Container ausprobiert, hier tritt der selbe Fehler auf:
25-Nov-2022 17:34:02 Europe/Berlin] PHP Fatal error: Uncaught Mosquitto\Exception: The client is not currently connected. in /var/www/html/mqtt_prozess.php:115
Stack trace:
#0 /var/www/html/mqtt_prozess.php(115): Mosquitto\Client->loop()
#1 {main}
thrown in /var/www/html/mqtt_prozess.php on line 115

allerdings konnte ich den Container nicht vom Scratch installieren da trat schon ein Fehler beim install auf:
PHP Warning: fopen(/var/www/log/update.log): failed to open stream: No such file or directory in /usr/local/sbin/steuerung.setup on line 329
PHP Warning: fwrite() expects parameter 1 to be resource, bool given in /usr/local/sbin/steuerung.setup on line 260
PHP Warning: fopen(/var/www/log/update.log): failed to open stream: No such file or directory in /usr/local/sbin/steuerung.setup on line 329
PHP Warning: fopen(/var/www/log/update.log): failed to open stream: No such file or directory in /usr/local/sbin/steuerung.setup on line 329
PHP Warning: chmod(): No such file or directory in /usr/local/sbin/steuerung.setup on line 266
PHP Warning: fclose() expects parameter 1 to be resource, bool given in /usr/local/sbin/steuerung.setup on line 271
PHP Warning: fopen(/var/www/log/update.log): failed to open stream: No such file or directory in /usr/local/sbin/steuerung.setup on line 329
PHP Warning: fclose() expects parameter 1 to be resource, bool given in /usr/local/sbin/steuerung.setup on line 300
PHP Warning: fclose() expects parameter 1 to be resource, bool given in /usr/local/sbin/steuerung.setup on line 301
PHP Warning: closedir(): supplied resource is not a valid Directory resource in /usr/local/sbin/steuerung.setup on line 302
PHP Warning: fopen(/var/www/log/update.log): failed to open stream: No such file or directory in /usr/local/sbin/steuerung.setup on line 329

Update ist beendet.
Bitte den weiteren Anweisungen im Dokument Automation.pdf folgen.
Ein 'sudo reboot' ist nicht nötig
Nicht vergessen, CRONTAB muss noch geändert werden!

create new files/directories...
Cloning into 'solar_config'...
remote: Enumerating objects: 361, done.
remote: Counting objects: 100% (361/361), done.
remote: Compressing objects: 100% (231/231), done.
remote: Total 361 (delta 130), reused 296 (delta 93), pack-reused 0
Receiving objects: 100% (361/361), 3.85 MiB | 2.01 MiB/s, done.
Resolving deltas: 100% (130/130), done.
mv: cannot stat '/solaranzeige/solaranzeige_cron': No such file or directory
wenn jedoch der Folder Solaranzeige mit den scripts schon vorhanden ist startet der Container und lest auch den WR aus.
Lg.
Robert

Antworten