Seite 1 von 2

MQTT Broker Startet nicht

Verfasst: 19. Mai 2023 17:10
von PeterA
Hallo zusammen.

Nun hat es mich bzw. die SD-Karte auch erwischt. Defekt. Immerhin hat die Karte ca. 5 Jahre gehalten!
Ich hatte eine zweite SD Card im Raspi stecken und habe alle 4 Wochen (zusätzlich zum Backup über die Console)
die SD Karte geklont.

Also, geklonte Karte gesteckt und siehe da OpenHab war wieder am "Start".
Nur bekomme ich im Log folgende Fehlermeldung:

Code: Alles auswählen

2023-05-19 17:05:48.599 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'localhost'. Next attempt in 10000ms

==> /var/log/openhab2/events.log <==

2023-05-19 17:05:48.609 [hingStatusInfoChangedEvent] - 'mqtt:broker:3448a27a' changed from OFFLINE (COMMUNICATION_ERROR): Verbindung zu Server kann nicht hergestellt werden to OFFLINE

==> /var/log/openhab2/openhab.log <==

2023-05-19 17:05:48.619 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'localhost' with clientid paho1646168798585 and file store '/var/lib/openhab2/mqtt/localhost'

==> /var/log/openhab2/events.log <==

2023-05-19 17:05:48.651 [hingStatusInfoChangedEvent] - 'mqtt:broker:3448a27a' changed from OFFLINE to OFFLINE (COMMUNICATION_ERROR): Verbindung zu Server kann nicht hergestellt werden
Wo muss ich da noch mal nachsehen ?

Gruß
Peter

Re: MQTT Broker Startet nicht

Verfasst: 19. Mai 2023 17:39
von PeterA
Auweia...
Ist ja nun auch schon ne "weile" her :)
Ich habe einfach mit:

Code: Alles auswählen

[17:36:30] openhabian@openHABianPi:~$ mosquitto
Den Broker noch Starten müssen. Kann man den auch Automatisch Starten lassen ?

Gruß Peter

Re: MQTT Broker Startet nicht

Verfasst: 19. Mai 2023 20:59
von peter-pan
...geht das nicht mit

Code: Alles auswählen

sudo systemctl enable mosquitto
?
Hab's auch schon länger nicht mehr gemacht.

Re: MQTT Broker Startet nicht

Verfasst: 19. Mai 2023 21:10
von udo1toni
genau. mosquitto sollte als Dienst eingerichtet sein. Das seltsame dabei: Wenn die Karte geklont ist, muss der Dienst ebenso mit geklont worden sein.

Re: MQTT Broker Startet nicht

Verfasst: 20. Mai 2023 10:08
von PeterA
Tja wenn ich nur noch wüsste wie ich das Damals gemacht habe.
Da war ich noch blutiger Anfänger :D

Zunächst hatte ich in der Konsole eingegeben:

Code: Alles auswählen

 sudo systemctl enable mosquitto 
Da Starte ein Mosquitto mit Version 3.x. Damit konnte aber
OpenHab nix Anfangen.

Dann habe ich einfach nur "Mosquitto" eingeben.
Hier startete dann ein Broker mit V 1.x. Das war dann der richtige.
Musste aber das Terminal Fenster so wie es war schließen damit der Broker weiter lief.

Viel wichtiger finde ich das es mir der geklonten SD (fast) einfach so weiter ging. Den ich habe noch einen ModBus HAT mit entsprechender Config auf dem Raspi.

Jetzt tut's.

Gruß Peter

Re: MQTT Broker Startet nicht

Verfasst: 20. Mai 2023 10:45
von peter-pan
Hallo Peter,
das "enable" bedeutet, wie Udo auch anmerkte, das der Dienst aktiviert wird. Das (erstmalige) Starten sollte dann so passieren wie du es gemacht hast, oder evtl. mit

Code: Alles auswählen

sudo systemctl start mosquitto oder
sudo restart mosquitto
Damit wird m.W. der Dienst immer beim Starten des Systems aktiviert.

oder wenn du den Dienst mal stoppen willst

Code: Alles auswählen

sudo systemctl stop mosquitto
Das gleiche Verfahren nutze ich auch beim Starten/Wiederstarten und Stoppen von "openhab".( Ich hab das jetzt absichlich in Kleinbuchstaben geschrieben). Lediglich der Name ändert sich beim "systemctl-Kommando".

Gruß - Peter

Re: MQTT Broker Startet nicht

Verfasst: 20. Mai 2023 10:52
von peter-pan
Habe gerade noch das mit den Versionen gelesen. Zur Info - mein Mosquitto ist:

Code: Alles auswählen

hab3@oh3ssd:~ $ mosquitto -h
mosquitto version 2.0.11

mosquitto is an MQTT v5.0/v3.1.1/v3.1 broker.

Usage: mosquitto [-c config_file] [-d] [-h] [-p port]

 -c : specify the broker config file.
 -d : put the broker into the background after starting.
 -h : display this help.
 -p : start the broker listening on the specified port.
      Not recommended in conjunction with the -c option.
 -v : verbose mode - enable all logging types. This overrides
      any logging options given in the config file.

See https://mosquitto.org/ for more information.

Re: MQTT Broker Startet nicht

Verfasst: 20. Mai 2023 15:59
von udo1toni
Es gibt kein Mosquitto v3.x (die aktuelle Version laut https://mosquitto.org/ ist 2.0.15)

Deine Aussage war doch, dass Du immer vollständige Klone Deiner SD-Karte gezogen hast, insofern ist es gar nicht möglich, dass sich die beiden Systeme voneinander unterscheiden. Vielleicht ist da schon beim Klonen etwas schief gelaufen.

mosquitto muss als Dienst gestartet werden, der Start über die GNU/Linux Shell ist Quatsch.
Ganz wichtig: wenn Du über die Shell startest, wird mosquitto mutmaßlich andere Startparameter wählen als wenn Du es als Dienst startest.
Wenn openHABian mosquitto einrichtet, wird mosquitto als Dienst mit folgendem Aufruf ausgeführt:

Code: Alles auswählen

/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
und in der Konfigurationsdatei steht dann zunächst:

Code: Alles auswählen

# 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

listener 1883
allow_anonymous true
Und hier ist der große Fehler... denn die Zeilen

Code: Alles auswählen

listener 1883
allow_anonymous true
müssen oben in der Datei stehen. Also so:

Code: Alles auswählen

# 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

listener 1883
allow_anonymous true

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
und schon wird mosquitto über das Netzwerk erreichbar sein. Falls Du User und Passwort erzwingen willst, musst Du natürlich allow_annonymous auf falste setzen.

Um den Dienst zu starten, reicht ein

Code: Alles auswählen

sudo systemctl start mosquitto.service
wobei das .service auch weggelassen werden kann.
Um den Dienst automatisch beim Systemstart mit zu starten, lautet der korrekte Befehl

Code: Alles auswählen

sudo systemctl enable mosquitto.service
wobei auch hier das .service weggelassen werden kann. Der Dienst wird NICHT automatisch gestartet, er wird nur im Autostart eingetragen (konkret wird ein symbolischer Link in /etc/systemd/system/multi-user.target.wants/ angelegt).

Re: MQTT Broker Startet nicht

Verfasst: 20. Mai 2023 16:22
von PeterA
Ok dann wirds mal Zeit das in Ordnung zu Bringen!

Aaalso:
Das läuft wohl hier:

Code: Alles auswählen

[16:05:53] openhabian@openHABianPi:~$ mosquitto -h
mosquitto version 1.4.10 (build date Wed, 13 Feb 2019 00:45:38 +0000)

mosquitto is an MQTT v3.1 broker.

Usage: mosquitto [-c config_file] [-d] [-h] [-p port]

 -c : specify the broker config file.
 -d : put the broker into the background after starting.
 -h : display this help.
 -p : start the broker listening on the specified port.
      Not recommended in conjunction with the -c option.
 -v : verbose mode - enable all logging types. This overrides
      any logging options given in the config file.

See http://mosquitto.org/ for more information.
Wenn ich aber die "mosquitto.conf" bearbeiten möchte denn der "listener" usw Teil fehlt kommt die Meldung das die Datei
Schreibgeschützt ist.

Code: Alles auswählen

-rw-r--r-- 1 root root  348 Apr 27  2019 mosquitto.conf
Edit.... Ich Idiot :) sudo nano usw.... dann gehts. Wenn man das nicht alle Tage macht :)

Re: MQTT Broker Startet nicht

Verfasst: 20. Mai 2023 20:21
von PeterA
udo1toni hat geschrieben: 20. Mai 2023 15:59
Um den Dienst zu starten, reicht ein

Code: Alles auswählen

sudo systemctl start mosquitto.service
wobei das .service auch weggelassen werden kann.
Um den Dienst automatisch beim Systemstart mit zu starten, lautet der korrekte Befehl

Code: Alles auswählen

sudo systemctl enable mosquitto.service
wobei auch hier das .service weggelassen werden kann. Der Dienst wird NICHT automatisch gestartet, er wird nur im Autostart eingetragen (konkret wird ein symbolischer Link in /etc/systemd/system/multi-user.target.wants/ angelegt).
Ok hab ich alles gemacht.

Code: Alles auswählen

[20:17:54] openhabian@openHABianPi:/etc/mosquitto$ sudo systemctl enable mosquitto.service
mosquitto.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mosquitto
Dann hoffen wir mal das das jetzt so richtig ist.

Gruß Peter