MQTT nicht erreichbar

Hallo,
ich übertrage Daten von meinem Balkonsolar-Inverter bzw. Stromzähler auf einen VPS-Server mit Ubuntu 22.04.

Vor ein paar Tagen hatte ich Probleme mit InfluxDB. Hier hatte der Public Key nicht gepasst. Nach viel herumprobieren (am Ende einige Deinstallationen und Neuinstallationen) geht das nun wieder und die alten Daten können per Grafana angeschaut werden. Leider funktioniert nun auch MQTT nicht mehr. Kann mir jemand einen Tipp geben, wie ich das wieder zum laufen bekomme?

Aktuelle Situation:

  1. Daten vom Stromzähler sind verfügbar und werden mit einem ESP8266 ins WLAN übertragen bzw. parallel alle 60s per MQTT versandt. Zugriff per lokaler IP auf den ESP funktioniert und es werden sinnvolle Daten angezeigt.

  2. Per MQTT-Explorer kann ich mich nicht auf den Server verbinden. Nutzername und Passwort sollte auch stimmen. Validate Certificate und Encrption habe ich ausgeschalten (wobei ich es auch mit den Buttons angeschalten versucht habe).

  3. Port 1883 in MQTT-Explorer eingegeben und der Port ist auch in meiner Firewall freigeschalten.

  4. per test.mosquitto.org funktioniert der MQTT-Explorer.

  5. Die Daten werden auch nicht über das Node-Red in meine InfluxDB übertragen, daher keine Speicherung/Darstellung der aktuellen Werte in Grafana

  6. systemctl status mosquitto zeigt an, dass mosquitto activ wäre

Hat jemand eine Idee, wie ich meien Datenübertragung per Mosquitto wieder zum laufen bekomme?

VG Stefan

Vermutlich ein Problem mit Username oder Passwort, hast du die Config vom MQTT Broker schon überprüft?

Die Config sieht eigentlich ok aus und hat ja bisher auch immer gut funktioniert. Ich habe eher Bedenken, dass ich an anderer Stelle im System was zerstört habe, was mir hier jetzt Probleme macht.

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /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

#Login nur mit Passwort moeglicho
password_file /etc/mosquitto/passwd
allow_anonymous false
listener 1883

Am WE hatte ich nach meinen Problemen mit der InfluxDB wohl Probleme mit den Zugriffsrechten, aber jetzt scheint das wieder ok zu sein. Hier der log:

1720455611: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1720455611: Error saving in-memory database, unable to remove /var/lib/mosquitto//mosquitto.db.new.
1720455611: Error: Permission denied.
1720456562: mosquitto version 2.0.11 terminating
1720456562: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1720456562: Error saving in-memory database, unable to remove /var/lib/mosquitto//mosquitto.db.new.
1720456562: Error: Permission denied.
1720456665: mosquitto version 2.0.11 starting
1720456665: Config loaded from /etc/mosquitto/mosquitto.conf.
1720456665: Opening ipv4 listen socket on port 1883.
1720456665: Opening ipv6 listen socket on port 1883.
1720456665: mosquitto version 2.0.11 running
1720456679: New connection from 127.0.0.1:44434 on port 1883.
1720456679: New client connected from 127.0.0.1:44434 as nodered_c71282da7a3d12ec (p1, c1, k60, u'home').
1720458465: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1720458679: mosquitto version 2.0.11 terminating
1720458679: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1720458696: mosquitto version 2.0.11 starting
1720458696: Config loaded from /etc/mosquitto/mosquitto.conf.
1720458696: Opening ipv4 listen socket on port 1883.
1720458696: Opening ipv6 listen socket on port 1883.
1720458696: mosquitto version 2.0.11 running
1720458710: New connection from 127.0.0.1:36000 on port 1883.
1720458710: Client <unknown> closed its connection.
1720458710: New connection from ::1:49784 on port 1883.
1720458710: New client connected from ::1:49784 as nodered_5d7653ae55766e35 (p1, c1, k60, u'home').
1720460263: mosquitto version 2.0.11 terminating
1720460263: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1720460278: mosquitto version 2.0.11 starting
1720460278: Config loaded from /etc/mosquitto/mosquitto.conf.
1720460278: Opening ipv4 listen socket on port 1883.
1720460278: Opening ipv6 listen socket on port 1883.
1720460278: mosquitto version 2.0.11 running
1720460296: New connection from 127.0.0.1:51200 on port 1883.
1720460296: New client connected from 127.0.0.1:51200 as nodered_be7f2595ced0d04a (p1, c1, k60, u'home').
1720461178: mosquitto version 2.0.11 terminating
1720461178: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1720461222: mosquitto version 2.0.11 starting
1720461222: Config loaded from /etc/mosquitto/mosquitto.conf.
1720461222: Opening ipv4 listen socket on port 1883.
1720461222: Opening ipv6 listen socket on port 1883.
1720461222: mosquitto version 2.0.11 running
1720461223: New connection from 127.0.0.1:60998 on port 1883.
1720461223: New client connected from 127.0.0.1:60998 as nodered_be7f2595ced0d04a (p1, c1, k60, u'home').
1720461313: mosquitto version 2.0.11 terminating
1720461313: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.

Ich habe in der config jetzt auf folgendes geändert (Slash am Ende entfernt):

persistence_location /var/lib/mosquitto

In der Log-Datei wird es nach Stop/Start von Mosquitto aber immer noch gleich angezeigt.

Kann vielleicht jemand eine andere mögliche Ursache aus dem Log lesen?

Ok: gerade festgestellt:

mosquitto_passwd -c /etc/mosquitto/passwd testuser
Password:
Reenter password:
Error: Unable to open file /etc/mosquitto/passwd for writing. Permission denied.

Das könnte natürlich ein Grund sein, wenn hier kein Zugriff auf die Passwort-Datei besteht. Wobei ich lesend einfach so in die Passwort-Datei komme ohne root. Wenn ich ein sudo davor setze, konnte ich auch den testuser anlegen. Mit dem Passwort komme ich dann aber auch nicht über den MQTT-Explorer rein.

VG Stefan

Moin,

Ich kenne das nicht, VPS Server, das ist ein Server bei einem Anbieter?
Wenn, ja, welcher Art ist der Server, ein Root Server, wo Du Root Zugang hast?

Oder musst Du alles per sudo machen, denn dann wäre es so korrekt

# sudo mosquitto_passwd -c /etc/mosquitto/passwd testuser
...

Wie bist Du auf dem Server unterwegs, als welcher User?
Die Verzeichnisse und Dateien im /etc/... sind für normale User meist nur lesbar, Dateien mit Passwörtern, aber nur als root oder die Applikation (User), zu welcher die Datei gehört.

Wie geschrieben ich kenne mich mit Mietservern nicht aus und es fehlen die nötigen Informationen dazu.

VG
Bernd

Hallo,
ist ein virtueller Server bei einem Anbieter. Also kein ganzer für mich, sondern der wird per Software aufgeteilt, da ich nur relativ wenig Ressourcen brauche und es so günstiger wird. verhält sich sonst aber wie ein eigener Server. Habe auch root-Rechte, logge mich allerdings als normaler User ein und mache wenn möglich alles per sudo.

VG Stefan

Hallo,
ich habe das ganze jetzt nochmal lokal getestet, hier scheint es zu funktionieren, dass Nachrichten gesendet und empfangen werden können mit dem Usernamen und Passwort. Mit falschem Username kommt auch eine Fehlermeldung.

Terminal 1:

mosquitto_sub -u username -P YOUR_PASSWORD -t "home/lights/kitchen"

Terminal 2:

mosquitto_pub -u username -P YOUR_PASSWORD -m "ON" -t "home/lights/kitchen"

Im Terminal 1 kommt die Meldung “ON” auch an. Prinzipiell scheint MQTT also zu laufen. Nur scheine ich von extern nicht da drauf zu kommen. Wie geschrieben komme ich über den MQTT-Explorer nicht drauf und von meinen Sensoren (AHOY-DTU für Balkonsolar, Temperatursensor in ESP8266, Stromzähler-Sensor auf ESP8266/Tasmota) werden auch keine Daten mehr aufgezeichnet.

Der Weg sollte sein: Sensor → MQTT → NodeRed → InfluxDB → Grafana

Bis ich InfluxDB neu installiert habe, hatte das auch alles ohne Probleme funktioniert. Ich denke, dass ich beim Update irgendwas zerstört habe.

Im Server ist der Port 1883 freigeschalten, d.h. an der Firewall sollte es nicht liegen.

Hat noch jemand eine Idee, woran das ganze noch liegen kann? Kann ein Port innerhalb von Linux gesperrt sein, dass ich von extern nicht drauf komme?

Edit:
Offenbar ist der Port auch offen:

$ netstat -4tnl | grep ":1883 .* LISTEN"
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN

Ich weiß leider nicht mehr weiter. Hat noch jemand eine andere Idee?

VG Stefan

Hat sich erledigt. War am Ende wohl ein Problem der Firewall. Hatte die auch vorher schonmaö ausgeschaltet und es brachte keinen Erfolg. Beim letzten Mal ging es dann nach aus- und neu einschalten der Firewall …

VG Stefan