Also Folgendes; du musst natürlich das Dummy Item als "Props" eingeben.
Ich habe die Regel nochmal abgeändert und mit einem "True/False"-Item bearbeitet.
Ich gehe mal davon aus, dass deine Werte über MQTT nach OH kommen. Deshalb hab ich mir das Item(mein Test-Item) nochmal im Original als Thing-Channel angelegt, damit ich dein SetUp "nachahmen" kann.
.things
Code: Alles auswählen
Thing mqtt:topic:danny:snzb0301 "Bewegungs-Sensor SZNB-03-01" (mqtt:broker:danny ) @ "zigbee2mqtt"
[ availabilityTopic="zigbee2mqtt/snzb_03_01/availability", transformationPattern="JSONPATH:$.state", payloadNotAvailable="offline", payloadAvailable= "online" ]
{
Channels:
Type number : voltage "SNZB-03-01 Spannung" [ stateTopic="zigbee2mqtt/snzb_03_01/voltage", unit="mV" ]
Type number : battery "SNZB-03-01 Batterie" [ stateTopic="zigbee2mqtt/snzb_03_01/battery", unit="%" ]
Type contact : batterylow "SNZB-03-01 Batterie Niedrig" [ stateTopic="zigbee2mqtt/snzb_03_01/battery_low", on="true", off="false" ]
Type switch : occupancy "SNZB-03-01 Bewegung" [ stateTopic="zigbee2mqtt/snzb_03_01/occupancy", on="true", off="false" ]
Type contact : tamper "SNZB-03-01 Sabotage" [ stateTopic="zigbee2mqtt/snzb_03_01/tamper", on="true", off="false" ]
Type number : linkquality "SNZB-03-01 Empfangsstäreke LQI" [ stateTopic="zigbee2mqtt/snzb_03_01", transformationPattern="JSONPATH:$.linkquality", unit="lqi" ]
Type switch : reachable "SNZB-03-01 Reachable" [ stateTopic="zigbee2mqtt/snzb_03_01/availability", transformationPattern="JSONPATH:$.state", on="online", off="offline" ]
Type string : octest "SNZB-03-01 Bewegung-Test" [ stateTopic="zigbee2mqtt/snzb_03_01", transformationPattern="JSONPATH:$.occupancy" ] // Das ist nur für Test
}
Die entsprechenden Kanäle sind "occupancy" und als Test "octest". "octest" gibt den original Wert zurück. Die beiden Channel sind unterschiedlich. Der eine ist ein Switch- und der andere ist ein String-Channel. Ich bin da zwar kein Experte, aber das hat wohl was mit dem "Enum"-Wert (true/false) zu tun.
die Items dazu sehen so aus.
.items
Code: Alles auswählen
Switch snzb03_01_occupancy "Bewegung SNZB-03 01 Bewegung" <motion> (gsnzb03_01,gMoSo) ["Presence","Status"] { channel="mqtt:topic:danny:snzb0301:occupancy" }
String snzb03_01_octest "Bewegung SNZB-03 01 Test [%s]" <motion> (gsnzb03_01) ["Presence","Status"] { channel="mqtt:topic:danny:snzb0301:octest" }
Schau mal deine Item-Types auf diese Bedingungen hin an.
Die Regel sieht so aus, wenn ich einen True/False-Trigger (snzb03_01_octest ) verwende.
Code: Alles auswählen
rule "Test Reed"
when
Item snzb03_01_octest changed from "false" to "true" // Das ist dein Reed-Kontakt
then
Dummy_11.sendCommand(ON) //Das ist der Dummy-Schalter
end
Das Widget hat jetzt folgenden Yaml-Code:
Code: Alles auswählen
uid: Post_da2
tags: []
props:
parameters:
- context: item
label: Dummy Item
name: dummy
required: true
type: TEXT
- label: Titel
name: title
required: false
parameterGroups: []
timestamp: Mar 23, 2026, 5:45:22 PM
component: f7-card
config:
style:
background: linear-gradient(to top right,#FA8072 30%,#00FFFF 60%)
stylesheet: |
@keyframes blinker {
50% { opacity: 0; }
} .blink-active {
animation: blinker 1s linear infinite;
}
title: =props.title
slots:
default:
- component: oh-icon
config:
action: command
actionCommand: "false"
actionItem: =(props.dummy)
class: '=(items[props.dummy].state === "ON") ? "blink-active" : ""'
icon: '=(items[props.dummy].state === "OFF") ?
"f7:exclamationmark_triangle_fill" : "f7:house"'
size: 80
style:
color: '=(items[props.dummy].state === "ON") ? "green" : "red"'
margin-left: 20px
- component: Label
config:
style:
font-weight: bold
margin-left: 20px
text: '=(items[props.dummy].state === "ON") ? "Post da" : "Keine Post"'
- component: f7-col
config: {}
slots:
default:
- component: oh-toggle
config:
color: blue
item: =(props.dummy)
Und das Ganze als Snapshot:
Eingabe des Dummy-Items
input.jpg
Keine Post
keinePost.jpg
Post ist da
PostDa.jpg
Den Hintergrund kannst du ja wieder rausnehmen oder ändern, wenn er dir nicht gefällt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.