OpenHAB 2.5 --> MQTT ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: OpenHAB 2.5 --> MQTT ?

Beitrag von udo1toni »

Nein, bitte immer daran denken, es gibt zwei übliche Wege der Konfiguration, Textdateien oder Paper UI. Beide Wege sind möglich.

Ich bin mir allerdings nicht sicher, ob der Broker einfach so gefunden wird.

Ich beziehe mich jetzt mal auf das Ursprungsposting: Was ist oh-config? So etwas gibt es nicht!
Ich könnte mir einzig vorstellen, dass Du openhabian-config meinst.

Die notwendigen Schritte für die Nutzung von mqtt sind sehr überschaubar. Für den Fall, dass openHAB ansonsten schon läuft:

1. Mosqitto installieren. Wenn man das System mit openHABian eingerichtet hat, kann man einfach die entsprechende Option
in openhabian-config auswählen (Punkt 20->23) Es kommt eine Warnmeldung, dass openHAB einen eigenen Broker mitbringt, der den Port blockieren wird. Das ist mit Verlaub mindestens missverständlich, vermutlich aber einfach nur Schwachsinn, insbesondere, weil in dieser Warnmeldung explizit vom mqtt V2 Binding die Rede ist. Ich nutze mqtt2 mit mosqitto und das funktioniert hervorragend :) Also einfach auswählen, mosquitto zu installieren.
Alternativ kann man auch den in openHAB mitgelieferten embedded Broker Moquette installieren (NEIN, das ist NICHT das mqtt2 Binding!!!) und dies ist dann die Stelle, wo man sich selbst blockieren kann, denn Moquette nutzt in der Tat Port 1883, den auch mosquitto nutzt. Also entweder mosquitto oder Moquette, niemals beide Broker gleichzeitig installieren. (Es sei denn, man ändert bei einem der beiden den Port..., aber dann weiß man eh genau, was man tut.)

2. Das mqtt Binding installieren. Man kann mqtt1 oder/und mqtt2 installieren (JA, man kann beide Versionen parallel installieren und nutzen), allerdings gibt es meines Wissens keinen triftigen Grund mehr, dies zu tun. Ich habe das bei mir so laufen, weil ich seit der Einführung von mqtt2 noch keine Zeit gefunden habe, alle Devices vollständig mit mqtt2 zu steuern. Wenn man mit dem Thema neu anfängt, sollte man mqtt1 links liegen lassen, da es in openHAB3 definitiv nicht mehr funktionieren wird.

3. Wenn mosquitto (oder Moquette) läuft und das mqtt2 Binding isntalliert ist, kann man über Paper UI eine Bridge für mqtt anlegen (add manually -> MQTT broker). Bitte nicht mit dem System MQTT Broker verwechseln!
Diese Bridge stellt die Verbindung openHAB <-> MQTT Broker dar, hier sind also IP-Adresse, Port, User und Passwort einzutragen.

4. Anschließend kann man Generic MQTT Things anlegen und diese dem Broker zuordnen. Ein Thing entspricht dabei einem Device, das ist aber nicht zwingend, da die Struktur von MQTT nicht sicher nach Devices getrennt aufgebaut ist.

5. Unterhalb eines Things legt man dann Channel an, in denen die Topics für dne Channel anzugeben sind.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

KlausGünther
Beiträge: 143
Registriert: 16. Jul 2018 08:57
Answers: 0
Wohnort: Werl
Kontaktdaten:

Re: OpenHAB 2.5 --> MQTT ?

Beitrag von KlausGünther »

Nur um die Sache hier mal abschließend zu beenden, DANKE FÜR DIE HILFE. LÄUFT :-)

pampulea
Beiträge: 12
Registriert: 5. Mär 2019 19:03
Answers: 0

Re: OpenHAB 2.5 --> MQTT ?

Beitrag von pampulea »

Hallo udo1toni,

habe nach deiner Anleitung hier auf einen neue (test) Installation OpenHAB 2.5 der MQTT Brocker installiert. Nach einer Weile mit Fehler kam irgendwie das "tatata" und funktionierte!
Ich hatte aber am Ende keine Ahnung wie ich es geschafft habe! Habe mir geschrieben alle Schritte die ich gemacht hatte! Natürlich alles was ich noch nicht vergessen hatte.
Habe danach eine neue Installation gemacht und nach "meine" Anleitung nochmal versucht MQTT am Laufen zu kriegen! Schaffe ich aber nicht.
Also:
1. Installiere mosquitto
2. Installiere MQTT2 Binding
3. MQTT Brocker installiere
4. Things-Datei per ftp kopieren

Code: Alles auswählen

Bridge mqtt:broker:mosquitto "MQTT VZ" [ host="localhost", secure=false, username="openhabian", password="mosq", clientID="vali" ]
{
  Thing topic gaestezimmer "Gaestezimmer Things" {
    Channels:
    Type number : temperature "Temperature" [ stateTopic="gaestezimmer/temperature" ]
    Type number : humidity "Humidity" [ stateTopic="gaestezimmer/humidity" ]
  }
}
Und dann: Generic MQTT Things legt sich automatisch an!!!
5. Items-Datei per ftp kopieren

Code: Alles auswählen

Number		Gaeste_temp		"Gaestezimmer Temperature [%.1f °C]"		<temperature>		{ channel="mqtt:topic:mosquitto:gaestezimmer:temperature" }
Number		Gaeste_humi		"Gaestezimmer Feuchtigkeit [%.1f %%]"		<humidity>		{ channel="mqtt:topic:mosquitto:gaestezimmer:humidity" }
6. Sitemap-Datei per ftp kopieren

Code: Alles auswählen

// Name of file and name of sitemap has to be the same
sitemap gaeste label="Gaestezimmer"
{
        Frame label="Gaestezimmer" 
	{
            	Text item=Gaeste_temp
	    	Text item=Gaeste_humi
        }
}
Ergebnis: alles laufen (also sind online) aber keine Daten kommen an. Ich weiß nicht wie man hier Bilder einfügt sonst hätte ich eingefügt
Fehlermeldung in ssh-console :

Code: Alles auswählen

2020-03-26 18:17:37.933 [hingStatusInfoChangedEvent] - 'mqtt:broker:f32cc3f6' changed from ONLINE to OFFLINE
2020-03-26 18:17:37.963 [hingStatusInfoChangedEvent] - 'mqtt:broker:f32cc3f6' changed from OFFLINE to ONLINE

==> /var/log/openhab2/openhab.log <==
2020-03-26 18:17:47.942 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'localhost'. Next attempt in 60000ms

==> /var/log/openhab2/events.log <==
2020-03-26 18:17:47.950 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from ONLINE to OFFLINE

==> /var/log/openhab2/openhab.log <==
2020-03-26 18:17:47.951 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'localhost' with clientid vali

==> /var/log/openhab2/events.log <==
2020-03-26 18:17:47.960 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:gaestezimmer' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2020-03-26 18:17:47.998 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from OFFLINE to ONLINE
2020-03-26 18:17:48.007 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:gaestezimmer' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
Wenn ich den mosquitto manuell abfrage kommt:

Code: Alles auswählen

[18:32:57] openhabian@test:~$ mosquitto_sub -h localhost -v -t gaestezimmer
Connection Refused: not authorised.
Was mache ich falsch?
Ich bitte nicht nur um Lösung sondern möchte verstehen wie mqtt funktioniert!
Vielen Dank!

Valentin

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

Re: OpenHAB 2.5 --> MQTT ?

Beitrag von udo1toni »

Die Fehlermeldung in der ssh-Konsole ist ja Text, warum kopierst Du nicht einfach den Text und fügst ihn hier als Code ein?
Als Schritt 3 führt Du auf, MQTT Broker installieren. Das hast Du aber schon mit Schritt 1 erledigt. mosquitto ist der Broker. Falls Du also z.B. über Paper UI nun noch zusätzlich Moquette als Broker einrichtest, hast Du ein Problem.

Hast Du denn einen User/Passwort für mosquitto angelegt? das müsstest Du bei mosquitto_sub natürlich mit angeben. Ein User openhabian ist aber sicher nicht von openhabian angelegt, allenfalls vielleicht ein User openhab, was mir aber auch nicht bewusst wäre.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

pampulea
Beiträge: 12
Registriert: 5. Mär 2019 19:03
Answers: 0

Re: OpenHAB 2.5 --> MQTT ?

Beitrag von pampulea »

Hallo udo1toni,

danke für Hinweise!
Neue Vorgehensweise:
1.Neue Installation -(also neue openHAB 2.5 installation)
2. mosquitto installieren (ohne User und Pass)
3. MQTT Binding installieren
4. Things-Datei kopieren  Danach werden die Channels automatisch angelegt
5. Items-Datei kopieren
6. Gaestezimmer Things (in PaperUI) – Config (Bleistift drucken) – SHOW MORE- Availability Topic – „Gaestezimmer“ eintragen
Es funktioniert!

Aber bekomme irgendwelche Java Fehler:
2020-03-28 08:00:29.908 [WARN ] [.transport.mqtt.MqttBrokerConnection] - Failed subscribing to topic +/+/$homie
java.util.concurrent.CompletionException: com.hivemq.client.mqtt.exceptions.MqttSessionExpiredException: Session expired as connection was closed.
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292) ~[?:1.8.0_222]
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308) ~[?:1.8.0_222]
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593) ~[?:1.8.0_222]
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577) ~[?:1.8.0_222]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) ~[?:1.8.0_222]
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) ~[?:1.8.0_222]
at com.hivemq.client.internal.mqtt.mqtt3.Mqtt3AsyncClientView.lambda$handleSubAck$0(Mqtt3AsyncClientView.java:64) ~[?:?]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760) [?:1.8.0_222]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736) [?:1.8.0_222]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) [?:1.8.0_222]
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) [?:1.8.0_222]
at com.hivemq.client.rx.FlowableWithSingle$SingleFutureSubscriber.onError(FlowableWithSingle.java:395) [bundleFile:?] …
Und noch eine Frage: Warum startet alles je 10 Sek:
2020-03-28 08:00:19.681 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'localhost'. Next attempt in 60000ms

==> /var/log/openhab2/events.log <==
2020-03-28 08:00:19.690 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from ONLINE to OFFLINE
2020-03-28 08:00:19.695 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:gaestezimmer' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

==> /var/log/openhab2/openhab.log <==
2020-03-28 08:00:19.719 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'localhost' with clientid vali

==> /var/log/openhab2/events.log <==
2020-03-28 08:00:19.819 [vent.ItemStateChangedEvent] - Gaeste_temp changed from 26.30 to 26.50
2020-03-28 08:00:19.822 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from OFFLINE to ONLINE
2020-03-28 08:00:19.829 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:gaestezimmer' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
2020-03-28 08:00:19.835 [vent.ItemStateChangedEvent] - Gaeste_humi changed from 39.90 to 39.10

==> /var/log/openhab2/openhab.log <==
2020-03-28 08:00:29.825 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'localhost'. Next attempt in 60000ms

==> /var/log/openhab2/events.log <==
2020-03-28 08:00:29.832 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from ONLINE to OFFLINE
2020-03-28 08:00:29.845 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:gaestezimmer' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

==> /var/log/openhab2/openhab.log <==
2020-03-28 08:00:29.852 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'localhost' with clientid vali

==> /var/log/openhab2/events.log <==
2020-03-28 08:00:29.892 [hingStatusInfoChangedEvent] - 'mqtt:broker:mosquitto' changed from OFFLINE to ONLINE
2020-03-28 08:00:29.897 [hingStatusInfoChangedEvent] - 'mqtt:topic:mosquitto:gaestezimmer' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

Vielen Dank und ein schönes Wochenende!
Bleiben Sie gesund,
Valentin

Antworten