Herzlich willkommen im openHAB Forum!
Das Problem bei einem Channel ist: beide Richtungen (ankommend/abgehend) müssen
identische Werte liefern. Bei einem Switch Item, verknüpft mit einem switch Channel, sind das die Werte ON und OFF.
Shelly liefert den Zustand des Switches über das Topic
status/switch:0, und zwar als JSON. Das bedeutet, Du musst als
transformationPattern einfach
JSONPATH:$.output setzen. Das Ergebnis ist dann
true oder
false.
Damit steht fest, was als
on und
off gesetzt werden muss, damit aus diesen beiden Werten ON bzw. OFF wird.
Zum Senden muss nun das ausgehende Kommando noch formatiert werden, das geschieht über den Parameter
formatBeforePublish. Hier wird das abgehende JSON angegeben, wobei der Wert true/false mit dem Platzhalter
%s übergeben wird. Dein Thing müsste also so aussehen:
Code: Alles auswählen
UID: mqtt:topic:mqtt_binding:heizung_eltern
label: Heizung Eltern
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:mqtt_binding
location: Elternzimmer
channels:
- id: schalten_heizung_eltern
channelTypeUID: mqtt:switch
label: Schalten Heizung Eltern
description: ""
configuration:
commandTopic: shellyplus1pm-eltern/rpc
postCommand: false
stateTopic: shellyplus1pm-eltern/status/switch:0
transformationPattern: JSONPATH:$.output
off: 'false'
on: 'true'
formatBeforePublish: '{"method": "Switch.Set", "params": {"id": 0, "on": %s}}'
Tipp zu den UIDs:
mqtt_binding ist kein günstiger Name für die mqtt Bridge. Besser wäre
broker (um den handelt es sich ja), oder meinetwegen mosquitto.
Als UID für den Channel erscheint
schalten_heizung_eltern reichlich doppelt gemoppelt. Die UID des Channels lautet dann vollständig
mqtt:topic:mqtt_binding:heizung_eltern:schalten_heizung_eltern dabei wäre
mqtt:topic:mosquitto:heizung_eltern:schalten genauso aussagekräftig, nur ohne den Ballast.
Deine Konfiguration liefert ankommend über das Mapping die Werte
on und
off. Diese Werte werden anschließend mit dem Inhalt von on und off verglichen. Dort steht aber
{"method":"Switch.Set","params":{"id":0,"on":false}} bzw.
{"method":"Switch.Set","params":{"id":0,"on":true}}, was etwas anderes als
on bzw.
off ist. Im Übrigen müsste wenn, dann
ON bzw.
OFF geliefert werden, aber wie oben erwähnt, ist die saubere Lösung eine andere...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet