MQTT mit Mosquitto Authentifizierung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
FelixK
Beiträge: 103
Registriert: 16. Mai 2018 06:56
Answers: 0

MQTT mit Mosquitto Authentifizierung

Beitrag von FelixK »

Hallo zusammen,

nachdem meine MQTT-Skripte mittlerweile sehr gut funktionieren und ich auch wieder etwas Zeit habe, wollte ich den Mosquitto Broker (v 1.4.10) nun gerne mit Benutzername/Passwort schützen.

Hierzu habe ich unter /etc/mosquitto/conf.d eine acl.conf angelegt mit folgendem Inhalt:

Code: Alles auswählen

acl_file /etc/mosquitto/conf.d/acl
password_file /etc/mosquitto/conf.d/passwd
allow_anonymous false  # Kein Zugriff für Benutzer ohne Passwort
Über den Befehl

Code: Alles auswählen

sudo mosquitto_passwd /etc/mosquitto/conf.d/passwd <BENUTZERNAME>
habe ich u.a. einen Benutzer openhab2 angelegt, dem ich in
/etc/mosquitto/conf.d/acl
die folgenden Berechtigungen gegeben habe:

Code: Alles auswählen

user openhab2
topic read #
topic write topic/openhab2/can/write/to
Jetzt suche ich aber, wo ich unter OpenHab2 Benutzername und Passwort für den Mqtt-Account eingeben kann. Beim Googlen bin ich immer wieder über eine mqtt.cfg gestolpert, die es bei mir aber nicht gibt (ich denke, das kommt noch aus openhab1?!).

Im PaperUi habe ich unter Configuration -> Sevices -> MQTT system broker connection -> Manage zwei Parameter "username" und "password" angelegt und diesen die korrekten Werte gegeben. Allerdings hat ein Neustart inkl. Cache leeren von openhab über die Befehle

Code: Alles auswählen

sudo systemctl stop openhab2
sudo openhab-cli clean-cache
sudo systemctl start openhab2
nicht zum gewünschten Erfolg geführt. Ich habe daraufhin die acl, acl.conf und passwd Dateien in /tmp verschoben und openhab bzw. den raspberry pi neu gestartet. Nun ist der Passwortschutz offensichtlich nicht mehr aktiv, da mir unter "Things" alle Mqtt-Einträge als "Online" angezeigt werden. Was vorher nicht mehr so war. Und weshalb ich davon ausgehe, dass die von mir gesetzten Parameter "username" und "password" an der falschen Stelle sind?!

Könnt ihr mir hier bitte weiterhelfen?

Vielen Dank und viele Grüße

Felix
Viele Grüße

Felix

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: MQTT mit Mosquitto Authentifizierung

Beitrag von udo1toni »

Die Zugangsdaten musst Du in der Bridge eintragen.

Die mqtt.cfg gehört zum mqtt1 Binding, ab OH2.3 (oder war's OH2.4?) wird als Standard mqtt2 verwendet.

Falls Du die Bridge über Paper UI angelegt hast, musst Du also nach Paper UI->Configurations->Thing-><Deine MQTT Bridge>->Edit und dort in den passenden Feldern Deine Zugangsdaten hinterlegen.
Falls Du MQTT über eine Things-Datei angelegt hast, musst Du die Konfiguration der Bridge dort ergänzen:

Code: Alles auswählen

Bridge mqtt:mroker:<deineBridge> [
    host="ip oder fqdn", 
    username="user", 
    password="password",
    clientID="openHAB2"
] {
Thing ...
}
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

FelixK
Beiträge: 103
Registriert: 16. Mai 2018 06:56
Answers: 0

Re: MQTT mit Mosquitto Authentifizierung

Beitrag von FelixK »

Hallo udo1toni,

vielen Dank mal wieder für deine tolle Hilfe. Ich hatte es in der Zwischenzeit gefunden und über die Things in PaperUi ändern können. Im großen und ganzen funktioniert es jetzt auch. Was noch nicht geht: Der Status, der von meinem "Beregnungs-Raspberry-Pi" per mqtt zurück kommt, wird nicht angezeigt und obwohl der Schieber bei z.B. Ventil 1 grün und an ist und die Beregnung auch läuft, steht "OFF" neben dem Schieber.

Meine Beregnung läuft so:
Raspberry Pi 1: Beheimatet OpenHab2 und Mosquitto
Raspberry Pi 2: Beheimatet das Beregnungsskript

Wenn ich nun z.B. aus der OpenHab2-iPhone-App heraus Ventil 1 meiner Beregnung öffne, dann veröffentlich Rasberry Pi 1 folgende json-Nachricht über das Thema garden/irrigation an den Broker: {"valve":"1","pin":22,"state":"ON"}.
Raspberry Pi 2 hört darauf und schaltet das Ventil an PIN 22 auf an. Wenn das erfolgreich war, wird per Mqtt eine Nachricht "ON" an das Thema garden/irrigation/valve-1-state veröffentlicht. Darauf soll eben auch der Schieber reagieren.

Im Classic Ui funktioniert der optische Status-Wechsel von OFF auf ON und umgekehrt auch sehr gut. In der App ist es oft so, dass der Schieber z.B. nach rechts geht, der Text aber OFF bleibt oder der Schieber links stehen bleibt, der Text OFF ist, aber die Beregnung läuft. Wenn ich dann nochmal draufklicke, dann fährt auch der Regler nach rechts, der Text ändert sich ab und an auch. Dann stimmt die Anzeige wieder.

Ich bilde mir ein, dass das vor der Einrichtung der Authentifizierung nicht so war. Kann das daran liegen? Ich habe aber auch OpenHab2 einige male gestoppt, den Cache geleert und wieder gestartet. Liegt es vielleicht daran?

Wenn ich neben dem Rasen stehe und die App bediene ist mir das halbwegs egal. Wenn ich aber automatisiert über Google Kalender meine Beregnung steuere und bei der Arbeit schauen möchte, ob alles läuft, dann sollte es schon angezeigt werden.

Hast du/ihr eine Idee, woran das liegen könnte?

Vielen Dank und viele Grüße

Felix
Viele Grüße

Felix

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: MQTT mit Mosquitto Authentifizierung

Beitrag von udo1toni »

Wenn stateTopic und commandTopic unterschiedliches Format haben, muss man mit mqtt2 meines Wissens zwei Channel aufmachen, eben getrennt für In und Out. Weiterhin müssen dann beide Channel mit dem selben Item verlinkt werden.
Mit der Authentifikation sollte das aber nichts zu tun haben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

FelixK
Beiträge: 103
Registriert: 16. Mai 2018 06:56
Answers: 0

Re: MQTT mit Mosquitto Authentifizierung

Beitrag von FelixK »

Hallo udo1toni,

vielen Dank für deine Antwort. Die 2 Channel habe ich und das ganze hat bis zur Einrichtung der Authentifizierung auch geklappt. Vielleicht ist es dann nur irgendwie durcheinander gekommen, da einige MQTT-Topics bis zu zur fertigen / richtigen Einrichtung der Authentifizierung ins Leere liefen.

Ich werde alles nochmal neu starten. Vielleicht klappt es dann ja wieder.
Viele Grüße

Felix

Antworten