openHab3 Grafische Channel Konfig für einen mqtt Dimmer
-
- Beiträge: 2
- Registriert: 18. Feb 2022 09:26
openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Hallo zusammen,
Bin frisch in OH3 eingestiegen, und habe mich einfacherweise an eine Konfig über die Oberfläche gehalten.
Meine Hardware:
Raspberry4 mit OpenHab und Mosquitto. Funktioniert
Eingerichteter und Installiert Zigbee Stick CC2531 mit zigbee2mqqt
Über mqtt (ESP87266) bekomm ich die Lichtstärke. (danach soll später über ein Script die Leuchte gedimmt werden)
Steuern will ich ein: Osram Zigbee 3.0 DALI CONV LI über Zigbee2Mqtt.
Schalten funktioniert 1A. Den Lux Wert habe ich auch im System.
Aber nun komme ich nach Tagen mit der Dimmung einfach nicht weiter.
Item Konfig im Channel fürs schalten:
Folgend:
MQTT Command Topic
zigbee2mqtt/DALI Deckenleuchte 1/set
Custom On/Open Value
ON
Custom OFF/Open Value
OFF
Konfig Channel und ITEM fürs Dimmen
Der mqtt Befehl lauet:
MQTT Command Topic
zigbee2mqtt/DALI Deckenleuchte 1/set
wenn ich mit MQTT.fx
{"brightness":156,"transition":3}
sende.
Funktioniert das auch.
Ich habe Channel mit Number Value angelegt.
Aber wie muss ich die Variable eintragen damit mit dem Befehl die Zahlen weiter gegeben werden?
Der dimmer kann von 0-255.
Es müsste in diesem Channel eine Varaible eingtragen werden?
Und übersetzt OH automatisch den Wert 0-255 zu 1-100%
Oder bin ich total auf dem Holzweg?
Bin frisch in OH3 eingestiegen, und habe mich einfacherweise an eine Konfig über die Oberfläche gehalten.
Meine Hardware:
Raspberry4 mit OpenHab und Mosquitto. Funktioniert
Eingerichteter und Installiert Zigbee Stick CC2531 mit zigbee2mqqt
Über mqtt (ESP87266) bekomm ich die Lichtstärke. (danach soll später über ein Script die Leuchte gedimmt werden)
Steuern will ich ein: Osram Zigbee 3.0 DALI CONV LI über Zigbee2Mqtt.
Schalten funktioniert 1A. Den Lux Wert habe ich auch im System.
Aber nun komme ich nach Tagen mit der Dimmung einfach nicht weiter.
Item Konfig im Channel fürs schalten:
Folgend:
MQTT Command Topic
zigbee2mqtt/DALI Deckenleuchte 1/set
Custom On/Open Value
ON
Custom OFF/Open Value
OFF
Konfig Channel und ITEM fürs Dimmen
Der mqtt Befehl lauet:
MQTT Command Topic
zigbee2mqtt/DALI Deckenleuchte 1/set
wenn ich mit MQTT.fx
{"brightness":156,"transition":3}
sende.
Funktioniert das auch.
Ich habe Channel mit Number Value angelegt.
Aber wie muss ich die Variable eintragen damit mit dem Befehl die Zahlen weiter gegeben werden?
Der dimmer kann von 0-255.
Es müsste in diesem Channel eine Varaible eingtragen werden?
Und übersetzt OH automatisch den Wert 0-255 zu 1-100%
Oder bin ich total auf dem Holzweg?
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Herzlich willkommen im Forum!
Zuerst einmal ist es wichtig, wenn Du mit einer Konfiguration Probleme hast, konkret die Konfiguration zu zeigen, und nicht zu beschreiben, was Du konfiguriert hast.
Es gibt zwei verschiedene Möglichkeiten, die Anbuindung an openHAB zu konfigurieren, als Text oder über die UI. Ich gehe stark davon aus, dass Du über die Main UI konnfiguriert hast. Dann kannst Du einfach in der Thing-Konfiguration auf den rechten Karteireiter (Code) wechseln und den dort abgebildeten Code einfach über die Zwischenablage hier ins Forum kopieren. Da es sich um YAML Code handelt, sind die Indentation (Einrückungen) wichtig, deshalb ist es enorm wichtig, den Code hier im Forum auch mit Code Tags zu versehen. Einfach den Vollständigen Editor aufrufen und dort die Schaltfläche </> anklicken. Alternativ kannst Du die Tags auch einfach hinschreiben.
Zuerst einmal ist es wichtig, wenn Du mit einer Konfiguration Probleme hast, konkret die Konfiguration zu zeigen, und nicht zu beschreiben, was Du konfiguriert hast.
Es gibt zwei verschiedene Möglichkeiten, die Anbuindung an openHAB zu konfigurieren, als Text oder über die UI. Ich gehe stark davon aus, dass Du über die Main UI konnfiguriert hast. Dann kannst Du einfach in der Thing-Konfiguration auf den rechten Karteireiter (Code) wechseln und den dort abgebildeten Code einfach über die Zwischenablage hier ins Forum kopieren. Da es sich um YAML Code handelt, sind die Indentation (Einrückungen) wichtig, deshalb ist es enorm wichtig, den Code hier im Forum auch mit Code Tags zu versehen. Einfach den Vollständigen Editor aufrufen und dort die Schaltfläche </> anklicken. Alternativ kannst Du die Tags auch einfach hinschreiben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 2
- Registriert: 18. Feb 2022 09:26
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Hallo,
vielen Dank für den herzlichen Empfang.
Ja ich habe das Thing über die MainUI konfiguriert.
Mit der vorhergehenden Thema dachte ich tatsächlich so wäre es einfacher zu verstehen was ich gemacht habe.
Wenn ich jetzt nicht auf dem Holzweg bin muss das mqtt commando
zigbee2mqtt/DALI Deckenleuchte 1/set
{"brightness":156,"transition":3}
in die Konfiguration eintragen werden.
Da habe ich mich versucht zu helfen.
Leider reicht mein English für das Grße Buch von Openhab nicht aus.
Wenn es die Große Hilfe auch in Deutsch verfügbar wäre..... das wäre zu geil.
Mein Zigbee2MQTT Log zeigt beim ändern des dimm Status invalid message.
Ich verstehe nicht wie ich den JSON Code eintragen muss.
Weil wie im Code eingtragen habe ich die brightness auf 156 festgelegt.
Aber das muss ja von Openhab kommen.
vielen Dank für den herzlichen Empfang.
Ja ich habe das Thing über die MainUI konfiguriert.
Mit der vorhergehenden Thema dachte ich tatsächlich so wäre es einfacher zu verstehen was ich gemacht habe.
Code: Alles auswählen
UID: mqtt:topic:GoetzBalze:64652e9750
label: ZigBeeDaliDimmen
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:GoetzBalze
location: Büro Marvin
channels:
- id: DimmungDali1
channelTypeUID: mqtt:colorHSB
label: Dimmung Deckenleuhcten
description: ""
configuration:
commandTopic: zigbee2mqtt/DALI Deckenleuchte 1/get
colorMode: XYY
zigbee2mqtt/DALI Deckenleuchte 1/set
{"brightness":156,"transition":3}
in die Konfiguration eintragen werden.
Da habe ich mich versucht zu helfen.
Leider reicht mein English für das Grße Buch von Openhab nicht aus.
Wenn es die Große Hilfe auch in Deutsch verfügbar wäre..... das wäre zu geil.
Mein Zigbee2MQTT Log zeigt beim ändern des dimm Status invalid message.
Ich verstehe nicht wie ich den JSON Code eintragen muss.
Weil wie im Code eingtragen habe ich die brightness auf 156 festgelegt.
Aber das muss ja von Openhab kommen.
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Das Problem dabei: die Dokumentation wird vollautomatisch generiert. (aus den Sourcen). Und da die Maintainer explizit keine Übersetzung der Doku wünschen (es wurde/wird befürchtet, dass dann einzelne Bindings plötzlich nicht mehr international zur Verfügung stehen, weil nur auf deutsch/französisch/whatever), ist es auch nicht einfach, Änderungen mitzubekommen. Man bräuchte schon ein großes Team an Leuten, um eine solche Übersetzung der Doku allzeit aktuell zu halten.
Grundsätzlich gibt es bei mqtt immer zwei Topics, denn die Kommunikation findet gerichtet statt. Der Status (mutmaßlich das Topic mit get am Ende) gehört ins stateTopic. Die Steuerbefehle werden dann an set gesendet (das hast Du ja schon feststellen können...)
Jetzt wäre aber zuerst mal die Frage, handelt es sich nun um ein Color Gerät (also RGB Leuchte) oder um einen Dimmer? Es wäre schon wichtig, den korrekten Channeltypen zu verwenden..
Wenn ein spezielles Payload gesendet werden muss (JSON o.Ä.) muss der entsprechende String zusammengesetzt werden. Das geht über das Outgoing Value Format. Solltest Du diesen Parameter nicht sehen, müsstest Du oben rechts auf show advanced klicken

Dort kann nun ein String angegeben werden, mit einem passenden Platzhalter, der für den übermittelten Wert steht.
Da Du einen Faktor 2,55 benötigst, um aus dem Prozentwert einen 8-Bit-Wert zu machen, musst Du vermutlich noch eine Outgoing Value Transformation einfügen, und zwar JS (JavaScript). Das sieht dann so aus, dass Du eine Datei faktor255.js im Ordner /etc/openhab/transform/ anlegst. In dieser Datei landet ein Script:
Code: Alles auswählen
(function(percent){
var value = percent * 255 / 100
return value;
})(input)
Weiter geht's, wenn wir die Transformation nutzen wollen, muss sie auch installiert sein. Wird gerne vergessen...
Und im Channel trägst Du bei Outgoing Value Transformation JS:faktor255.js ein.
Der Weg des Signals ist immer, zunächst wird der Wert transformiert, dann wird der über das Format angepasst (eigentlich logisch...).
Der erste Schritt wäre aber, das passende Format unter Outgoing Value Format einzutragen und zu testen. Der Dimmer wird dann zwar nur bis knapp 40% kommen, aber Du siehst schon mal, dass die Steuerbefehle ankommen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 4
- Registriert: 1. Mär 2022 19:03
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Mir ist die Logik mit der ich einen Json Payload in einen Openhab String umwandle auch noch nicht ganz klar...
Ich habe hier z.B. ein Switch Item bei dem ich für ON diesen Payload und für OFF diesen Payload senden muss.
Wie müsste denn jetzt der String für Custom On/Open Value bzw. für Custom Off/Closed Value aussehen?
Und vor allem wie setzt er sich zusammen?
Bei einem Number Item habe ich folgende Jsonpath Expression erfolgreich zusammengebastelt: aber diese Logik (Filter) funktioniert hier leider nicht.
Ich habe hier z.B. ein Switch Item bei dem ich für ON diesen Payload
Code: Alles auswählen
'{"channel": 0, "value": true}'
Code: Alles auswählen
'{"channel": 0, "value": false}'
Und vor allem wie setzt er sich zusammen?
Bei einem Number Item habe ich folgende Jsonpath Expression erfolgreich zusammengebastelt:
Code: Alles auswählen
$..[?(@.channel=='1')].voltage
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Es ist nicht hilfreich, den selben Post unter diverse Threads zu hängen. Wenn Du es nicht eindeutig zuordnen kannst, mach lieber einen neuen Thread auf.
Zu Deinem Problem: Über welches Binding möchtest Du die Payload senden?
Zu Deinem Problem: Über welches Binding möchtest Du die Payload senden?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 4
- Registriert: 1. Mär 2022 19:03
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Ja sry, ich hatte erst den ersten Thread gefunden, fand aber diesen hier sinnvoller für meine Frage.
Das Ganze soll über das MQTT Binding ein Tinkerforge Quad Relais steuern.
Mit Mosquitto würde der funktionierende String so aussehen:
Das Ganze soll über das MQTT Binding ein Tinkerforge Quad Relais steuern.
Mit Mosquitto würde der funktionierende String so aussehen:
Code: Alles auswählen
mosquitto_pub -h localhost -t tinkerforge/request/industrial_quad_relay_v2_bricklet/<UID>/set_selected_value -m '{"channel": 0, "value": true}'
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Mit mqtt ist das easy 
Du brauchst das mqtt Addon sowie die jsonpath transformation.
Mosquitto läuft bereits?
Du benötigst ein MQTT Broker Thing (bitte nicht das System Broker Thing nutzen).
Darunter legst Du ein Thing für das Quad Relais an.
Da es sich um vier Relais handelt, benötigen wir (ohne weitere Spezialitäten) vier Channel, die im Prinzip bis auf ein Detail identisch sein können.
Es fehlt noch ein weiteres Topic, welches den aktuellen Status der Relais liefert, vermutlich wird das ein Topic für alle Relais gemeinsam sein. Die Sende-Seite müsste so aussehen (In Things-Datei-Notation):
Falls Du das Thing lieber über die UI anlegen willst, kannst Du das leicht aus der Text Definition ableiten. Um formatBeforeBublish setzen zu können, musst Du Show Advanced" anhaken (Der Parameter heißt dann Outgoing Value Format)
Ein Switch Item, welches mit dem Channel verlinkt ist, sendet den Befehl ON bzw. OFF. Daraus macht der Parameter Custom On- bzw. Custom Off Value true bzw. false. Je nachdem, mit welchem Channel das Item verlinkt ist, wird die Payload mit dem formatBeforePublish noch formatiert, so dass ein gültiges JSON Objekt entsteht. Gesendet wird jeweils an das selbe Topic.
Ankommend muss das dann entsprechend ähnlich gelöst werden. Es ist jeweils das stateTopic zu setzen, sowie das JSONPATH Ausdruck, um aus der Payload den Channel Status auszulesen (der hoffentlich ebenfalls als true bzw. false geliefert wird).
Die Zeilenumbrüche sind nicht zwingend notwendig und dienen hier nur der besseren Lesbarkeit.

Du brauchst das mqtt Addon sowie die jsonpath transformation.
Mosquitto läuft bereits?
Du benötigst ein MQTT Broker Thing (bitte nicht das System Broker Thing nutzen).
Darunter legst Du ein Thing für das Quad Relais an.
Da es sich um vier Relais handelt, benötigen wir (ohne weitere Spezialitäten) vier Channel, die im Prinzip bis auf ein Detail identisch sein können.
Es fehlt noch ein weiteres Topic, welches den aktuellen Status der Relais liefert, vermutlich wird das ein Topic für alle Relais gemeinsam sein. Die Sende-Seite müsste so aussehen (In Things-Datei-Notation):
Code: Alles auswählen
Bridge mqtt:broker:bridge "Mosquitto" [
host="localhost",
port=1883,
clientID="openHAB2-2"
] {
Thing topic tinkerquad_1 "Tinkerforge Quad 1" [
]{
Channels:
Type switch : ch1 "Channel 1" [ commandTopic="tinkerforge/request/industrial_quad_relay_v2_bricklet/<UID>/set_selected_value",
formatBeforePublish='{"channel": 0, "value": %s}',
on="true",
off="false"
]
}
Type switch : ch2 "Channel 2" [ commandTopic="tinkerforge/request/industrial_quad_relay_v2_bricklet/<UID>/set_selected_value",
formatBeforePublish='{"channel": 1, "value": %s}',
on="true",
off="false"
]
}
Type switch : ch3 "Channel 3" [ commandTopic="tinkerforge/request/industrial_quad_relay_v2_bricklet/<UID>/set_selected_value",
formatBeforePublish='{"channel": 2, "value": %s}',
on="true",
off="false"
]
}
Type switch : ch4 "Channel 4" [ commandTopic="tinkerforge/request/industrial_quad_relay_v2_bricklet/<UID>/set_selected_value",
formatBeforePublish='{"channel": 3, "value": %s}',
on="true",
off="false"
]
}
}
Ein Switch Item, welches mit dem Channel verlinkt ist, sendet den Befehl ON bzw. OFF. Daraus macht der Parameter Custom On- bzw. Custom Off Value true bzw. false. Je nachdem, mit welchem Channel das Item verlinkt ist, wird die Payload mit dem formatBeforePublish noch formatiert, so dass ein gültiges JSON Objekt entsteht. Gesendet wird jeweils an das selbe Topic.
Ankommend muss das dann entsprechend ähnlich gelöst werden. Es ist jeweils das stateTopic zu setzen, sowie das JSONPATH Ausdruck, um aus der Payload den Channel Status auszulesen (der hoffentlich ebenfalls als true bzw. false geliefert wird).
Die Zeilenumbrüche sind nicht zwingend notwendig und dienen hier nur der besseren Lesbarkeit.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 4
- Registriert: 1. Mär 2022 19:03
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
WOW, vielen Dank für die Mühe, das hat mir den Tag gerettet!
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: openHab3 Grafische Channel Konfig für einen mqtt Dimmer
Die Sache mit dem Status hast Du selbst hinbekommen?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet