openHAB2 und MQTT 2.4

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
atk69
Beiträge: 98
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: openHAB2 und MQTT 2.4

Beitrag von atk69 »

Hallo zusammen
Danke für das Feedback.
@udo1toni:
Ich habe oft in den Anleitungen den "Embedded Broker" gesehen, aber im OH2 ist er nicht unter Addons zu finden ?????
@peter-pan:
falsche Ordner und dergleichen ist ausgeschlossen. Ich habe von der alten Installation (2.5.1) einfach den conf-ordner rüberkopiert.
Und dann mit den Anpassungen begonnen.
Zuerest hatte ich ja alles mit Mosquitto 1.4.10 laufen. "MQTT Broker Moquette" war nur ein alternativer versuch.
Dazu noch eine Frage: "MQTT Actions" wird wohl nicht mehr benötigt ?

Ich denke, mein Hauptproblem liegt bei dem Thema "system broker" und "embedded Broker":
Installiere ich das MQTT Binding wird ja folgendes angelegt:
(siehe Anhang)
wenn ich hier nichts konfiguriere, passiert auch weiter nichts (Keine things gefunden)
Trage ich hier die Werte wie user, localhost, passwort ein, wird automatisch ein System Broker gefunden ???

Ohne Config der Connection und nur mit dem mqtt.things läuft nüscht ?!

Mein Fehler liegt wohl im Oberstübchen ;-(

Gruss
Andreas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
and IT works ;)

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

Re: openHAB2 und MQTT 2.4

Beitrag von udo1toni »

Nein, der Punkt ist, warum wählst Du im mqtt Binding den SystemBroker aus? Das ist verkehrt, Du möchtest eine Verbindung zu einem Broker herstellen, nicht zum SystemBroker.
Es spielt keine Rolle, ob Du mosquitto oder Moquette verwendest, beides sind Broker, also musst Du eine Bridge zu einem Broker anlegen.
Der SystemBroker ist eine komplett andere Funktion.

Moquette ist ein embedded Broker, er hat den Vorteil, dass er als Addon mit openHAB mitgeliefert wird, er hat aber reduzierte Funktionalität, Du kannst keine User Credentials hinterlegen, kein TLS verwenden, keine Zertifikate... Im Heimbereich geht das aber in Ordnung, solange Du Deinem Netzwerk und den Mitspielern trauen kannst. Die Kommunikation mit openHAB ist aber identisch mit der von mosquitto, das heißt, Du musst genauso im mqtt Binding eine Bridge zum Broker erstellen, welche genauso auf Port 1883 mit localhost, 127.0.0.1 oder auch der eigenen "externen" IP des openHAB-Rechners spricht. Auf Client-Seite (also die anderen Geräte) ist die Konfiguration identisch mit mosquitto.

Wenn Du per things-Datei konfigurierst, nimm einfach mqtt:broker: statt mqtt:systembroker:
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: openHAB2 und MQTT 2.4

Beitrag von peter-pan »

...gerade komme ich vom "Gassi-Gehen" mit meinem Hündchen heim und wollte dir meinen Post zu Ende schreiben, da er unbedingt raus wollte :D (Herrchen auch) und ich deswegen unterbrechen musste. Udo war in der Zwischenzeit schon am Werk und hat das Ganze auf den Punkt gebracht (wie immer Klasse).

Denk aber immer dran, die richtige Syntax zu verwenden, wenn du Bridge und Thing/Channels in einer .things-Datei verwendest. Ich meine auch, dass mindestens ein Thing vorhanden sein muss, damit der Broker und das Thing in der Paper UI sichtbar werden.

Die MQTT-Actions gibt es in MQTT2 so nicht mehr. Schau mal hier unetr Rule-Actions nach.

Und noch ein kleines Beispiel aus meinem SetUp:

Code: Alles auswählen

....................
val actionsBroker = getActions("mqtt","mqtt:broker:hans")                            // mqtt2
    for (String device_id : tasmota_device_ids) {
          actionsBroker.publishMQTT( "cmnd/" + device_id + "/status", "2")               // mqtt2
          actionsBroker.publishMQTT( "cmnd/" + device_id + "/status", "5")               // mqtt2
          logInfo(rulename, "Sonoff Maintenance: " + device_id)
    }
   ............
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

atk69
Beiträge: 98
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: openHAB2 und MQTT 2.4

Beitrag von atk69 »

Hallo Ihre Beiden :-)
dank dem "kräftigen" Schubser von udo und den detailierten Angaben von Peter-Pan habe ich es nun geschafft !!!
Allles nochmal auf Null.
Binding installiert und die MQTT Broker in der Inbox erstmal ignoriert.
mqtt.things korrigiert und siehe da, die Steckdose taucht in der PaperUI auf.
Channel in der GUI eingerichtet und das item korrigiert > läuft :-)
mal sehen ob der Rest auch klappt...

Code: Alles auswählen

Bridge mqtt:broker:MosquittoMqttBroker "Mosquitto MQTT Broker" @ "MQTT2" [ host="localhost", secure=false, port=1883, clientID="OH2_atk" ]


 { // Switch Gang_Dose_1
 Thing topic sonoff-0002A "Switch Gang_Dose_1" @ "MQTT2"  {
    
    Channels:
       Type switch : Gang_Dose_1 "Gang S20 Steckdose_1" [ stateTopic="stat/sonoff-0002A/POWER", commandTopic="cmnd/sonoff-0002A/POWER" ]
	   
    }
}

Code: Alles auswählen

Switch Gang_Dose_1 "Gang S20 Steckdose_1" <Gang> ["Switchable"] {channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:switch"}
Vielen Dank für eure "Schubser"
Gruss
Andreas
and IT works ;)

atk69
Beiträge: 98
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: openHAB2 und MQTT 2.4

Beitrag von atk69 »

sonoff.png
EInen habe doch noch ;-)
offenbar komm ich mit items und things noch nicht ganz klar.
Es geht jetzt nur um eine Sonoff-Steckdose mit angeschlossenen Sensor (Druck, temp, feuchte)
Es ist mir auch nicht ganz klar, warum ich sowohl im mqtt.things wie auch im Sonoff.items alles angeben muss:
sonoff.items

Code: Alles auswählen

Switch Gang_Dose_1 "Gang S20 Steckdose_1" (Gang) ["Switchable"] 		 {channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:switch"}
Number Gang_Dose_1_humidity 	 "Luftfeuchtigkeit [%.1f %%]" (Gang)    	 {channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:SENSOR:state:JSONPATH($.BME280.Humidity)"}
Number Gang_Dose_1_temperature "Temperatur [%.2f °C]" (Gang)  		  	 {channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:SENSOR:state:JSONPATH($.BME280.Temperature)"}
Number Gang_Dose_1_pressure	 "Luftdruck [%.0f hPa]" (Gang)			 {channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:SENSOR:state:JSONPATH($.BME280.Pressure)"}
Number Gang_Dose_1_dataPresSL  "Luftdruck Meereshoehe [%.1f hPa]" (Gang)	 {channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:SENSOR:state:JSONPATH($.BME280.SeaPressure)"}
mqtt.things

Code: Alles auswählen

Bridge mqtt:broker:MosquittoMqttBroker "Mosquitto MQTT Broker" @ "MQTT2" [ host="localhost", secure=false, port=1883, clientID="OH2_atk" ]


 { // Switch Gang_Dose_1
 Thing topic sonoff-0002A "Switch Gang_Dose_1" @ "MQTT2"  {
    
    Channels:
       Type switch : Gang_Dose_1 			 "Gang S20 Steckdose_1" (Gang)	   [ stateTopic="stat/sonoff-0002A/POWER", commandTopic="cmnd/sonoff-0002A/POWER" ]
	   Type Number : Gang_Dose_1_humidity 	 "Luftfeuchtigkeit [%.1f %%]" (Gang) 	   [ stateTopic="tele/sonoff-0002A/SENSOR:state:JSONPATH($.BME280.Humidity)]
	   Type Number : Gang_Dose_1_temperature "Temperatur [%.2f °C]" (Gang)		   [ stateTopic="tele/sonoff-0002A/SENSOR:state:JSONPATH($.BME280.Temperature)]
	   Type Number : Gang_Dose_1_pressure	 "Luftdruck [%.0f hPa]" (Gang)	           [ stateTopic="tele/sonoff-0002A/SENSOR:state:JSONPATH($.BME280.Pressure)]
	   Type Number : Gang_Dose_1_dataPresSL	 "Luftdruck Meereshoehe [%.1f hPa]" (Gang) [ stateTopic="tele/sonoff-0002A/SENSOR:state:JSONPATH($.BME280.SeaPressure)]
	   
    }
}
ohne Sensoren funktioniert der Switch einwandfrei. Bei den Sensoren habe ich wohl einen Syntaxfehler ?
sonoff.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
and IT works ;)

atk69
Beiträge: 98
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: openHAB2 und MQTT 2.4

Beitrag von atk69 »

Jetzt habe ich den passenden Syntax:
sonoff_gang.items

Code: Alles auswählen

Switch Gang_Dose_1 "Gang S20 Steckdose_1" <Gang> ["Switchable"] 		{channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:switch"}
Number Gang_Dose_1_humidity 	 "Luftfeuchtigkeit [%.1f %%]"    		{channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:$.BME280.Humidity"}
Number Gang_Dose_1_temperature	 "Temperatur [%.2f °C]" <Gang> 	  		{channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:$.BME280.Temperature"}
Number Gang_Dose_1_pressure 	 "Luftdruck [%.0f hPa]" <Gang>   		{channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:$.BME280.Pressure"}
Number Gang_Dose_1_dataPresSL 	"Luftdruck Meereshoehe [%.1f hPa]" 		{channel="mqtt:topic:MosquittoMqttBroker:sonoff-0002A:$.BME280.SeaPressure" }

Number Chart_Zeitraum_D_W_M_Y
mqtt.things

Code: Alles auswählen

Bridge mqtt:broker:MosquittoMqttBroker "Mosquitto MQTT Broker" @ "MQTT2" [ host="localhost", secure=false, port=1883, clientID="OH2_atk" ]


 { // Switch Gang_Dose_1
 Thing topic sonoff-0002A "Switch Gang_Dose_1" @ "MQTT2"  {
    
    Channels:
       Type switch : Gang_Dose_1 "Gang S20 Steckdose_1"					 [ stateTopic="stat/sonoff-0002A/POWER", commandTopic="cmnd/sonoff-0002A/POWER" ]
	   Type number : Gang_Dose_1_humidity 	 "Luftfeuchtigkeit [%.1f %%]"    	 [ stateTopic="tele/sonoff-0002A/SENSOR", transformationPattern="JSONPATH:$.BME280.Humidity"]
	   Type number : Gang_Dose_1_temperature "Temperatur [%.2f °C]"   		[ stateTopic="tele/sonoff-0002A/SENSOR", transformationPattern="JSONPATH:$.BME280.Temperature"]
	   Type number : Gang_Dose_1_pressure "Luftdruck [%.0f hPa]"  			[ stateTopic="tele/sonoff-0002A/SENSOR", transformationPattern="JSONPATH:$.BME280.Pressure"]
	   Type number : Gang_Dose_1_dataPresSL "Luftdruck Meereshoehe [%.1f hPa]" [ stateTopic="tele/sonoff-0002A/SENSOR", transformationPattern="JSONPATH:$.BME280.SeaPressure"]
    }
}
Dannach erscheint alles in der PaperUI. Noch in den Channels linken und fertig :-)

Puuh, eine schwere Geburt. Alles anders als im alten Binding.
and IT works ;)

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

Re: openHAB2 und MQTT 2.4

Beitrag von udo1toni »

Schon sehr interessant, was es alles für falsche Schreibweisen gibt, die dann trotzdem zum gewünschten Ergebnis führen...
mqtt.things

Code: Alles auswählen

Bridge mqtt:broker:mosquitto "Mosquitto MQTT Broker" @ "MQTT2" [
    host="localhost", 
    secure=false, 
    port=1883, 
    clientID="OH2_atk"
    ]
 { // Switch Gang_Dose_1
 Thing topic sonoff-0002A "Switch Gang_Dose_1" @ "MQTT2"  
    {
    Channels:
        Type switch : switch      "Gang S20 Steckdose 1"       [ stateTopic="stat/sonoff-0002A/POWER", 
                                                               commandTopic="cmnd/sonoff-0002A/POWER" ]
        Type number : humidity    "Luftfeuchtigkeit [%.1f %%]" [ stateTopic="tele/sonoff-0002A/SENSOR", 
                                                                           transformationPattern="JSONPATH:$.BME280.Humidity"]
        Type number : temperature "Temperatur [%.2f °C]"       [ stateTopic="tele/sonoff-0002A/SENSOR", 
                                                                           transformationPattern="JSONPATH:$.BME280.Temperature"]
        Type number : pressure    "Luftdruck [%.0f hPa]"       [ stateTopic="tele/sonoff-0002A/SENSOR", 
                                                                           transformationPattern="JSONPATH:$.BME280.Pressure"]
        Type number : dataPresSL  "Luftdruck NN [%.1f hPa]"    [ stateTopic="tele/sonoff-0002A/SENSOR", 
                                                                           transformationPattern="JSONPATH:$.BME280.SeaPressure"]
    }
 }
Bei den Labeln bin ich mir nicht mal sicher, ob die Angabe der Formatierung überhaupt Auswirkungen hat (vom Gefühlt möchte ich behaupten: Nein.
Nun die Items:

Code: Alles auswählen

Switch Gang_Dose_1             "Gang S20 Steckdose_1"       <Gang> ["Switchable"] { channel="mqtt:topic:mosquitto:sonoff-0002A:switch" }
Number Gang_Dose_1_humidity    "Luftfeuchtigkeit [%.1f %%]"                       { channel="mqtt:topic:mosquitto:sonoff-0002A:humidity" }
Number Gang_Dose_1_temperature "Temperatur [%.2f °C]"       <Gang>                { channel="mqtt:topic:mosquitto:sonoff-0002A:temperature" }
Number Gang_Dose_1_pressure    "Luftdruck [%.0f hPa]"       <Gang>                { channel="mqtt:topic:mosquitto:sonoff-0002A:pressure" }
Number Gang_Dose_1_dataPresSL  "Luftdruck NN [%.1f hPa]"                          { channel="mqtt:topic:mosquitto:sonoff-0002A:dataPresSL" }
Die Einrückungen sind natürlich optional, das ist ein Stück weit Geschmacksache. Allerdings kannst Du so schön sehen, welche Teile der Channel gleich sind, hier im Forum muss man aber nicht all zu weit seitlich scrollen...
Bei den Items kannst Du aber sehen, dass die ChannelIDs anders aussehen als von Dir gedacht. Die kannst Du auch über Paper UI raussuchen, oder Du nutzt VisualStudio Code (Bitte nicht mit VisualStudio verwechseln), dort kannst Du Dir Items komplett automatisch passend zu den Channeln eines Things generieren lassen. Ich habe die Teilstrings der ChannelIDs etwas eingekürzt. Die ChannelIDs sind trotzdem eindeutig.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

atk69
Beiträge: 98
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: openHAB2 und MQTT 2.4

Beitrag von atk69 »

Hallo Udo
vielen Dank für deinen Input. Habe es 1:1 umgesetzt und es funktioniert.
We gesagt, mit dem Syntax habe ich nicht viel braubares gefunden. Jeder macht da anscheinend sein eigenes Süppchen ;-(
Interessant, dass es dennoch funktioniert.
Werde mich möglichst an deine Info halten.
Sind ja noch einige things einzubauen.
Das schwiriegste Stück habe ich aber zum Glück schon am laufen: die Rolläden
things

Code: Alles auswählen

// Rollershutter
		Thing topic Roll_WZ_W_li "Rolladen WZ Wi links" {
	
	Channels:
		Type rollershutter : Roll_WZ_W_li "Rolladen WZ Wi links" [stateTopic="stat/jarolift/shutter/1", commandTopic="cmd/jarolift/shutter/1/command"]
	}
	// Rollershutter
		Thing topic Roll_WZ_W_re "Rolladen WZ Wi rechts" {
	
	Channels:
		Type rollershutter : Roll_WZ_W_re "Rolladen WZ Wi rechts" [stateTopic="stat/jarolift/shutter/0", commandTopic="cmd/jarolift/shutter/0/command"]
	}
items

Code: Alles auswählen

Switch Rollershutter Roll_WZ_W_li "Rolladen WZ Wi links" <rollershutter> (gShutter, Wohnzimmer) [ "Switchable" ] {channel="mqtt:topic:MosquittoMqttBroker:jarolift/shutter/1:command"}
Switch Rollershutter Roll_WZ_W_re "Rolladen WZ Wi rechts" <rollershutter> (gShutter, Wohnzimmer) [ "Switchable" ] {channel="mqtt:topic:MosquittoMqttBroker:jarolift/shutter/0:command"}
morgen passe ich das mal an deine Schreibweise an ;-)

Gruss und Dank
Andreas
and IT works ;)

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: openHAB2 und MQTT 2.4

Beitrag von peter-pan »

...das wundert mich auch ein bisschen, dass du in der Syntaxschreibweise ein Ergebnis erzielt hast :) . Da sieht man mal wie gnädig OH an manchen Stellen ist. ;) .

Am Anfang scheint die neue Codierungsart der Things in MQTT2 im Verhältnis zu MQTT1(da gab's keine) etwas umständlich zu sein, aber das entspricht halt der eigentlichen Logik von OH2.
Aber wenn du mal dein erstes Device angelegt hast und die Kanäle mit den entsprechenden Items verlinkt hast, geht der Rest dann fast wie von selbst, vor allem, wenn man die Schreibweise übersichtlich strukturiert. Da kann man dann viel mit Copy/Paste machen.

Viel Spass weiterhin.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

atk69
Beiträge: 98
Registriert: 15. Jan 2019 19:07
Answers: 1
Wohnort: Weil am Rhein

Re: openHAB2 und MQTT 2.4

Beitrag von atk69 »

Jetzt muss ich mich nochmal melden.
Nach dem Umzug auf OH2.5 und MQTT-Binding 2.5.2 bekomme ich den obigen Befehl nicht mehr zum laufen.

Rolläden hoch/runter funktioniert aber SHADE klappt nicht. Die Übergabe des Strings schlägt fehl:

Code: Alles auswählen

[WARN ] [rest.core.internal.item.ItemResource] - Received HTTP POST request at 'items/Roll_WZ_W_li' with an invalid status value 'SHADE'.
mein item:

Code: Alles auswählen

String Rollershutter Roll_WZ_W_li "Rolladen WZ Wi links shadow" <rollershutter> (gShutter, Wohnzimmer) [ "Switchable" ] {channel="mqtt:topic:MosquittoMqttBroker:jarolift/shutter/1:command"}
String Rollershutter Roll_WZ_W_re "Rolladen WZ Wi rechts shadow" <rollershutter> (gShutter, Wohnzimmer) [ "Switchable" ] {channel="mqtt:topic:MosquittoMqttBroker:jarolift/shutter/0:command"}
Ich hatte das ursprünglich Thema auf dem Board des "Jarolift-Addons" mal behandelt.
http://www.bastelbudenbuben.de/forum/to ... postid-591
Es geht wohl wieder um die Umstellung von MQTT ;-)
Gruss

Andreas
and IT works ;)

Antworten