Der Shelly ist ein exzellentes Beispiel, wie man als Entwickler (bei Shelly) etwas nachhaltig kaputt machen kann
Geliefert wird für den Status
true oder
false, als Befehl wird jedoch
on oder
off erwartet.
Geht aber trotzdem, ist halt nur etwas umständlich:
Code: Alles auswählen
UID: mqtt:topic:82898c0db2:GAR_GAR_TUER
label: Garten Gartentuer (Shelly mini1)
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:82898c0db2
location: Garten
channels:
- id: GAR_GARTUER_SWITCH
channelTypeUID: mqtt:switch
label: Garten Gartentuer
description: ""
configuration:
qos: 1
commandTopic: shelly1minig3-gartentuer/command/switch:0
stateTopic: shelly1minig3-gartentuer/status/switch:0
transformationPattern: JSONPATH:$.output∩MAP:false_true.map
off: "off"
on: "on"
Ein ankommendes stateTopic wird zunächst mit JSON decodiert, im Anschluss wird es durch das Mapping geschickt (dabei wird aus true on und aus false off).
Zum Abschluss wird das Ergebnis dieser Operation über die Substitution der beiden angegebenen Parameter on und off ersetzt, wobei der on-Wert mit ON ersetzt wird und der off-Wert mit OFF. also aus {"output":true} wird über das TransformataionPattern zunächst true, dann über das Mapping on und schließlich durch die Ersetzung ON.
In der Gegenrichtung wird aus ON der Wert on, welcher dann ans commandTopic gesendet wird. Da der Wert nicht weiter formatiert werden muss, braucht es auch keine weiteren Parameter (wie z.B.
formatBeforePublish)
Das Zeichen ∩ findest Du im Hilfstext zum Transformation Pattern, im englischen heißt es korrekt Intersection, leider hat Microsoft das falsch eingedeutscht, mit "Durchschnitt", statt "Schnittmenge"
In der Windows Zeichentabelle kannst Du das Zeichen also nur unter dem falschen Namen finden
Nur der Vollständigkeit halber: sowohl JSONPATH als auch MAP müssen als Transformation Service installiert sein.
Die Namenskonventionen in openHAB empfehlen CamelCase oder auch Snake_Case (also z.B. nicht
GAR_GAR_TUER sondern
garGarTuer oder
gar_Gar_Tuer)
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.8, LXC), mit openHABian eingerichtet