Seite 1 von 1
openhab3 MQTT publishen
Verfasst: 15. Nov 2022 17:50
von EberhardK
Hallo, liebe Spezialisten.
Ich arbeite schon seit einigen Monaten mit Openhab3. Ich frage diverse Sensoren über MQTT ab und auch aus der Heizung (ETA Pelletheizung ohne MQTT) habe ich einige Parameter abrufen und grafisch darstellen können.
Mein Problem: ich möchte den Zustand der Saugturbine der Heizung abfragen und diesen Wert zum MQTT-Broker schicken.
Dazu habe ich ein Item (saug) erstellt, welches mir den Wert 950 (Turbine aus) bzw. 951 (Turbine ein) liefert.
Dann habe ich ein "Generic MQTT Thing" erstellt mit der "MQTT Broker Bridge". Dazu ein Channel mit dem "MQTT Command Topic" "vibra".
Weiterhin habe ich eine Rule erstellt: Wenn "saug" updated, dann soll auch "vibra" updaten. Der Wert kommt auch bei vibra an aber er wird nicht zum Broker unter dem Topic vibra geleitet (getestet mit mosquitto).
Als zweiten Versuch habe ich die Rule rausgenommen und "saug" direkt mit "vibra" verlinkt. Wert kommt an aber nicht zum Broker.
Dann habe ich mal aus Verzweiflung aus "vibra" ein Switch-Item gemacht und mit verschiedenen Zahlen für an und aus versehen. Wenn ich den Schalter betätige, kommen die entsprechenden Werte auch am Broker an.
Ich habe auch mehrmals die Dokumentation zu MQTT in Openhab gelesen und zu versucht zu verstehen. Die Beispieltexte scheinen sich dort auf Openhab2 zu beziehen. Nun stecke ich mit meinen Ideen fest. Ich hoffe, dass es nur ein Denkfehler von mir ist und die Lösung doch grafisch möglich ist.
Vielen Dank für eure Mühen.
Eberhard
Re: openhab3 MQTT publishen
Verfasst: 15. Nov 2022 21:14
von udo1toni
Es wäre gut gewesen, Du hättest konkrete Rules gepostet

Auch wenn Du alles per UI erstellst, gibt es (bis auf die Items...) eine Code-Ansicht (sowohl Things als auch Rules), anhand derer Fortgeschrittene gut nachvollziehen können, was läuft (und wo potenziell Fehler sind).
Es gibt diverse Stellen, die du nicht explizit erläutert hast:
- Wie ist das Thing definiert
- wie ist der Channel definiert
- Wie ist das Item definiert
- Wie lautet der Befehl, den Du in der Rule verwendet hast
Re: openhab3 MQTT publishen
Verfasst: 16. Nov 2022 17:16
von EberhardK
Hallo udo1toni,
vielen Dank für die orientierenden Punkte.
Das Item "saug", das den Wert liefert:
Code: Alles auswählen
UID: http:url:4c9f92d31c
label: Heizung
thingTypeUID: http:url
configuration:
authMode: BASIC
ignoreSSLErrors: false
baseURL: http://192.168.178.86:8080/user/var
delay: 0
stateMethod: GET
refresh: 30
commandMethod: GET
contentType: application/xml
timeout: 3000
bufferSize: 2048
channels:
- id: Aussentemperatur
channelTypeUID: http:number
label: Aussentemperatur
description: ""
configuration:
stateExtension: /120/10241/0/0/12197
stateTransformation: XPATH:/*[name()='eta']
- id: Kollektor
channelTypeUID: http:number
label: Kollektor
description: ""
configuration:
stateExtension: /120/10221/0/0/12275
stateTransformation: XPATH:/*[name()='eta']
- id: Speicher_unten
channelTypeUID: http:number
label: Speicher_unten
description: ""
configuration:
stateExtension: /120/10221/0/0/12781
stateTransformation: XPATH:/*[name()='eta']
- id: Speicher_oben
channelTypeUID: http:number
label: Speicher_oben
description: ""
configuration:
stateExtension: /120/10601/0/0/13144
stateTransformation: XPATH:/*[name()='eta']
- id: Kollektorpumpe
channelTypeUID: http:number
label: Kollektorpumpe
description: ""
configuration:
stateExtension: /120/10221/0/11142/0
stateTransformation: XPATH:/*[name()='eta']
- id: Abgas
channelTypeUID: http:number
label: Abgas
description: ""
configuration:
stateExtension: /40/10021/0/0/12162
stateTransformation: XPATH:/*[name()='eta']
- id: Pelletlager
channelTypeUID: http:number
label: Pelletlager
description: ""
configuration:
stateExtension: /40/10201/0/0/12015
stateTransformation: XPATH:/*[name()='eta']
- id: Pelletbehaelter
channelTypeUID: http:number
label: Pelletbehaelter
description: ""
configuration:
stateExtension: /40/10021/0/0/12011
stateTransformation: XPATH:/*[name()='eta']
- id: Aschebox
channelTypeUID: http:number
label: Aschebox
description: ""
configuration:
stateExtension: /40/10021/0/0/12013
stateTransformation: XPATH:/*[name()='eta']
- id: Speicher_mitte
channelTypeUID: http:number
label: Speicher_mitte
description: ""
configuration:
stateExtension: /120/10601/0/0/13934
stateTransformation: XPATH:/*[name()='eta']
- id: Gesamtverbrauch
channelTypeUID: http:number
label: Gesamtverbrauch
description: ""
configuration:
stateExtension: /40/10021/0/0/12016
stateTransformation: XPATH:/*[name()='eta']
- id: Saug
channelTypeUID: http:number
label: Saug
description: ""
configuration:
stateExtension: /40/10021/0/11042/2001
stateTransformation: XPATH:/*[name()='eta']
Das Item "vibra", welches den Wert publishen soll:
Code: Alles auswählen
UID: mqtt:topic:dac17a5dac:13d584210e
label: vibra
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:dac17a5dac
location: vibra
channels:
- id: vibra
channelTypeUID: mqtt:number
label: vibra
description: ""
configuration:
commandTopic: vibra
Die Rule, um den Wert von "saug" nach "vibra"transportiert:
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Heizung_Saug
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
itemName: vibra_vibra
type: core.ItemStateUpdateAction
In beiden Items erscheint der gewünschte Wert, nur bei der Abfrage des Topics "vibra" mit mosquitto_sub erscheint nichts.
Re: openhab3 MQTT publishen
Verfasst: 16. Nov 2022 23:49
von udo1toni
Ja, das ist kein Wunder, Du nutzt ItemStateUpdateAction, es muss aber ItemCommandAction verwendet werden. Du willst einen Befehl in Richtung mqtt senden, nicht den Status des Items ändern.
Re: openhab3 MQTT publishen
Verfasst: 17. Nov 2022 08:45
von EberhardK
Ich habe die Rule jetzt so geändert:
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Heizung_Saug
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
itemName: vibra_vibra
type: core.ItemCommandAction
in der Hoffnung, dass der Wert von saug zu vibra gesendet wird. Tut es aber nicht und bei mosquitto_sub im Topic "vibra" kommt auch nichts an.
Re: openhab3 MQTT publishen
Verfasst: 17. Nov 2022 12:27
von udo1toni
Ähm... das ist mir gestern gar nicht mehr aufgefallen, aber Du gibst ja gar keinen konkreten Befehl an.
Und das kannst Du auch gar nicht, weil Du ja den Wert übertragen willst.
Gehe ich recht in der Annahme, dass der Wert von Saug exakt so nach vibra übertragen werden soll, also ohne weitere Berechnungen?
Dann brauchst Du gar keine Rule. Stattdessen verlinkst Du beide Channel mit dem selben Item (z.B. Heizung_Saug) und gibst dabei bei dem Channel vibra als Profile "follow" an (Das Profile wird im Link gesetzt).
Re: openhab3 MQTT publishen
Verfasst: 17. Nov 2022 14:29
von EberhardK
Yeah!
Ich habe die Rule gelöscht, das Item "vibra" gelöscht und neu angelegt mit dem Link auf "Heizung_saug" und dem Profil "Folgen". Es hat sofort funktioniert. Nun kann ich dem Rüttler am Lager sagen (über einen Arduino), dass gerade gesaugt wird und er aktiv werden soll.
Du hast mir übrigens im KNX-Forum geholfen die Parameter aus meiner Eta-Heizung herauszukitzeln.
Ich war sehr zuversichtlich, dass du auch hier helfen kannst.
Vielen, vielen Dank für deine Hilfe.
Re: openhab3 MQTT publishen
Verfasst: 17. Nov 2022 21:06
von udo1toni
Immer gerne
