...also ich hab noch mal in "alten" Spielereien geschaut, da ich so etwas auch mal probiert habe. So wie ich das sehe meinst du einen Trigger-Channel ohne Item.
Da ich das ganze immer noch in Text-Files konfiguriere, hier ein Thing mit zwei Trigger-Channels:
Code: Alles auswählen
Thing mqtt:topic:claudi:s2007 "Sonoff S20 07" (mqtt:broker:claudi ) @ "MQTT2" {
Channels:
Type switch : power "Power " [ stateTopic="stat/schaltdose07/POWER", commandTopic="cmnd/schaltdose07/POWER" ]
Type number : rssi "WiFi Signal Strength" [ stateTopic="tele/schaltdose07/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
Type string : version "Firmware Version " [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
Type switch : reachable "Reachable" [ stateTopic="tele/schaltdose07/LWT",transformationPattern="MAP:reachable.map" ]
Type string : hardware "Chip Set " [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
Type string : ipaddress "IP Address " [ stateTopic="stat/schaltdose07/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]
Type switch : powerx "Power X" [ stateTopic="stat/schaltdose07/POWER", trigger=true ] // Trigger Channel; no need to define an item
Type string : versionx "Version X" [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version", trigger=true ] // Trigger Channel; no need to define an item
}
Die zwei letzten Channels sind die Trigger-Channels.
Das Ganze als Yaml-Code(nur die zwei letzten Channels):
Code: Alles auswählen
......
- id: powerx
channelTypeUID: mqtt:switch
label: Power X
description: null
configuration:
retained: false
postCommand: false
trigger: true
formatBeforePublish: "%s"
stateTopic: stat/schaltdose07/POWER
- id: versionx
channelTypeUID: mqtt:string
label: Version X
description: null
configuration:
retained: false
postCommand: false
trigger: true
formatBeforePublish: "%s"
stateTopic: stat/schaltdose07/STATUS2
transformationPattern: JSONPATH:$.StatusFWR.Version
D.h. du musst deinen Channel noch mal überarbeiten. Channel-Type ist vermutlich "String". Aber was auch noch wichtig ist "trigger:true", also dieser Parameter muss aktiviert werden.
Jetzt noch die Regeln:
Code: Alles auswählen
//===============================================================================
rule "test Channel-Trigger s2007_power"
when
Channel 'mqtt:topic:claudi:s2007:powerx' triggered
then
logInfo("test_s2007_power", " Channel has triggerd : {} {}", receivedEvent, triggeringChannel)
end
//===============================================================================
rule "test Channel-Trigger s2007_version"
when
Channel 'mqtt:topic:claudi:s2007:versionx' triggered
then
logInfo("test_s2007_version", " Channel has triggerd : {} {}", receivedEvent, triggeringChannel)
end
//===============================================================================
und zu guter Letzt die Logs dazu in OH:
Code: Alles auswählen
2022-01-18 15:11:51.253 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test_channel_triggers.rules'
2022-01-18 15:13:06.920 [INFO ] [b.core.model.script.test_s2007_power] - Channel has triggerd : ON mqtt:topic:claudi:s2007:powerx
2022-01-18 15:13:09.033 [INFO ] [b.core.model.script.test_s2007_power] - Channel has triggerd : OFF mqtt:topic:claudi:s2007:powerx
2022-01-18 15:13:33.095 [INFO ] [core.model.script.test_s2007_version] - Channel has triggerd : 10.1.0(tasmota) mqtt:topic:claudi:s2007:versionx
Viel Spass beim umsetzen.