Seite 2 von 2
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 31. Dez 2019 18:16
von udo1toni
Ja und nein. Es gibt kein stat/backlog Topic. backlog ist ein Topic, mittels dem man mehrere Befehle hintereinander absetzen kann, oder (in diesem Fall) ein Teiltopic mit Payload senden. Du könntest vermutlich ebensogut Haus/sonoff_bridge/cmnd/RfCode als Topic verwenden und dann in on und Off nur "#405014" bzw. die anderen Nummern angeben, kann ich aber mangels Sonoff RF Bridge nicht sicher sagen.
Du brauchst ein Topic, über das die RFCodes herein kommen, vermutlich wird das Haus/sonoff_bridge/stat/RfCode oder Haus/sonoff_bridge/stat/RESULT sein.
Die Rule sieht dann so aus:
Code: Alles auswählen
rule "rf bridge receive"
when
Item RFbridgeReceive received command
then
val String sRcv = transform("REGEX",".*Data:\"(.*)\".*",receivedCommand)
switch(sRcv.toString) {
case "bla": {
Garden_Weihnac_Light1.postUpdate(ON)
}
case "bli": {
Garden_Weihnac_Light1.postUpdate(OFF)
}
case "blub": {
Garden_Weihnac_Light2.postUpdate(ON)
}
case "0815": {
Garden_Weihnac_Light2.postUpdate(OFF)
}
case "4711": {
Garden_Weihnac_Light3.postUpdate(ON)
}
case "irgendwas": {
Garden_Weihnac_Light3.postUpdate(OFF)
}
}
end
Für das Schalten sollte keine Rule notwendig sein, stattdessen sendest Du einfach ON bzw. OFF an das Item, welches dann den Befehl an den Channel weiterreicht. Die Rule dient nur dazu, wenn jemand mit einer RF Fernbedienung die Steckdosen umschaltet, die Items auf den korrekten Zustand zu setzen.
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 2. Jan 2020 14:27
von djuscha
Freues Neues

endich die Feiertage rum

hab jetzt weiter probiert und hab paar Probleme
things hab ich jetzt so geändert
Code: Alles auswählen
Type string : recieveddata "RF Bridge Received Data"
[ stateTopic="Haus/sonoff_bridge/tele/RESULT", transformationPattern="JSONPATH:$.RfReceived.Data"]
//v Topic, über das die RFCodes herein kommen, wenn ich taste an der Fernbedienung drücke
Type switch : button1_2 "Fernbed Status Taste 1_2"
[ stateTopic="Haus/sonoff_bridge/cmnd/RfCode", on="RfCode #405015" , off="RfCode #405014" ]
Type switch : button3_4 "Fernbed Status Taste 3_4"
[ stateTopic="Haus/sonoff_bridge/cmnd/RfCode", on="RfCode #401015" , off="RfCode #401014" ]
Type switch : button5_6 "Fernbed Status Taste 5_6"
[ stateTopic="Haus/sonoff_bridge/cmnd/RfCode", on="RfCode #550515" , off="RfCode #550514" ]
items
Code: Alles auswählen
String RfBridge_Data "RF Bridge Data" {channel="mqtt:topic:mosquitto:RfBridge:recieveddata"}
String Garden_Weihnac_Light1 "Licht Weihnacht Baumvorne1" {channel="mqtt:topic:mosquitto:RfBridge:taste1"}
String Garden_Weihnac_Light2 "Licht Weihnacht Baumvorne2" {channel="mqtt:topic:mosquitto:RfBridge:taste2"}
String Garden_Weihnac_Light3 "Licht Weihnacht Baumvorne3" {channel="mqtt:topic:mosquitto:RfBridge:taste3"}
Switch Weihnac_Light1 "Licht Weihnacht 1" <light> {channel="mqtt:topic:mosquitto:RfBridge:button1_2"}
Switch Weihnac_Light2 "Licht Weihnacht 2" <light> {channel="mqtt:topic:mosquitto:RfBridge:button3_4"}
Switch Weihnac_Light3 "Licht Weihnacht 3" <light> {channel="mqtt:topic:mosquitto:RfBridge:button5_6"}
rules
Code: Alles auswählen
rule "rf bridge receive"
when
Item RfBridge_Data received command
then
val String sRcv = transform("REGEX",".*Data:\"(.*)\".*",receivedCommand)
switch(sRcv.toString) {
case "405015": {
Garden_Weihnac_Light1.postUpdate(ON)
}
case "405014": {
Garden_Weihnac_Light1.postUpdate(OFF)
}
case "401015": {
Garden_Weihnac_Light2.postUpdate(ON)
}
case "401014": {
Garden_Weihnac_Light2.postUpdate(OFF)
}
case "550515": {
Garden_Weihnac_Light3.postUpdate(ON)
}
case "550514": {
Garden_Weihnac_Light3.postUpdate(OFF)
}
}
end
bekomme ich Fehlermeldung im Visual Studio
Code: Alles auswählen
{
Type mismatch: cannot convert from Command to String
receivedCommand ist markiert
Code: Alles auswählen
Haus/sonoff_bridge/tele/RESULT = {"Time":"2020-01-02T14:30:16","RfReceived":{"Sync":11370,"Low":420,"High":1130,"Data":"415014","RfKey":"None"}}
ist result Topic wenn ich Fernbedienung benutze
muss in der rule nicht stehen?
Code: Alles auswählen
val String sRcv = transform("RfReceived",".*Data:\"(.*)\".*",receivedCommand)
switch(sRcv.toString)
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 2. Jan 2020 18:03
von udo1toni
Ah. Wenn es eh schon ein JSON Objekt ist, brauchst Du das Transform nicht. Wie erwähnt hab ich das Teil nicht und nur aus dem Wiki gelesen, was da angeblich zurück kommt. Als JSON Objekt ist es natürlich viel schöner. receivedCommand sollte in diesem Fall direkt den String enthalten, dann kannst Du einfach statt switch(sRcv.toString) switch(receivedCommand) schreiben. Notfalls kannst Du auch switch(receivedCommand.toString) angeben, das sollte so oder so gehen.
Die Variable sRcv brauchst Du dann natürlich nicht

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 2. Jan 2020 19:14
von djuscha
irgendwo mache ich noch Fehler

rule ist jetzt so
Code: Alles auswählen
rule "rf bridge receive"
when
Item RfBridge_Data received command //RFbridgeReceive
then
switch(receivedCommand.toString){
case "405015": {
Garden_Weihnac_Light1.postUpdate(ON)
}
case "405014": {
Garden_Weihnac_Light1.postUpdate(OFF)
}
case "401015": {
Garden_Weihnac_Light2.postUpdate(ON)
}
case "401014": {
Garden_Weihnac_Light2.postUpdate(OFF)
}
case "550515": {
Garden_Weihnac_Light3.postUpdate(ON)
}
case "550514": {
Garden_Weihnac_Light3.postUpdate(OFF)
}
}
end
hab auch mit switch(receivedCommand) probiert, immer noch keine Anzeige in der Sitemap
in der konsole steht das wenn ich mit Fernbedienung schalte
Code: Alles auswählen
18:57:24 MQT: Haus/sonoff_bridge/tele/RESULT = {"Time":"2020-01-02T18:57:24","RfReceived":{"Sync":9480,"Low":440,"High":1100,"Data":"405014","RfKey":8}}
18:57:39 MQT: Haus/sonoff_bridge/tele/RESULT = {"Time":"2020-01-02T18:57:39","RfReceived":{"Sync":11470,"Low":430,"High":1110,"Data":"405015","RfKey":7}}
18:58:22 MQT: Haus/sonoff_bridge/tele/RESULT = {"Time":"2020-01-02T18:58:22","RfReceived":{"Sync":11380,"Low":450,"High":1090,"Data":"405014","RfKey":8}}
18:59:28 MQT: Haus/sonoff_bridge/tele/RESULT = {"Time":"2020-01-02T18:59:28","RfReceived":{"Sync":11420,"Low":440,"High":1100,"Data":"405015","RfKey":7}}
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 2. Jan 2020 20:54
von udo1toni
Hmm... bau mal bitte ein logInfo ein (Ausgabe erfolgt in openhab.log):
Code: Alles auswählen
rule "rf bridge receive"
when
Item RfBridge_Data received command //RFbridgeReceive
then
logInfo("rfBridge","received command: {}",receivedCommand)
switch(receivedCommand.toString){
case "405015": {
Garden_Weihnac_Light1.postUpdate(ON)
}
case "405014": {
Garden_Weihnac_Light1.postUpdate(OFF)
}
case "401015": {
Garden_Weihnac_Light2.postUpdate(ON)
}
case "401014": {
Garden_Weihnac_Light2.postUpdate(OFF)
}
case "550515": {
Garden_Weihnac_Light3.postUpdate(ON)
}
case "550514": {
Garden_Weihnac_Light3.postUpdate(OFF)
}
}
end
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 2. Jan 2020 22:23
von djuscha
keine reaktion im log:( als ob Item RfBridge_Data received command nicht reagiert
Code: Alles auswählen
2020-01-02 22:20:00.173 [vent.ItemStateChangedEvent] - RfBridge_Data changed from 405014 to 405015
2020-01-02 22:21:56.243 [vent.ItemStateChangedEvent] - RfBridge_Data changed from 405015 to 405014
steht ja im log drin
irgendwie war das mit MQTT1 einfacher

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 3. Jan 2020 04:54
von udo1toni
Dann benutze bitte received update als Trigger. In der Folge müssen wir dann natürlich den Status des Items verwenden:
Code: Alles auswählen
rule "rf bridge receive"
when
Item RfBridge_Data received update //RFbridgeReceive
then
logInfo("rfBridge","received command: {}",RfBridge_Data.state)
switch(RfBridge_Data.state.toString){
case "405015": {
Garden_Weihnac_Light1.postUpdate(ON)
}
case "405014": {
Garden_Weihnac_Light1.postUpdate(OFF)
}
case "401015": {
Garden_Weihnac_Light2.postUpdate(ON)
}
case "401014": {
Garden_Weihnac_Light2.postUpdate(OFF)
}
case "550515": {
Garden_Weihnac_Light3.postUpdate(ON)
}
case "550514": {
Garden_Weihnac_Light3.postUpdate(OFF)
}
}
end
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 3. Jan 2020 12:36
von djuscha
Vielen Dank Udo!
jetzt funktioniert alles so wie ich das wollte .Nächste Weihnachten ist geretet

so ist jetzt
things
Code: Alles auswählen
Thing topic RfBridge "RF Bridge" (mqtt:broker:mosquitto) @ "MQTT" {
Type string : devicestate "RF Bridge State"
[stateTopic="Haus/sonoff_bridge/tele/LWT"]
Type string : wifi-rssi "RF Bridge RSSI"
[stateTopic="Haus/sonoff_bridge/tele/STATE",transformationPattern="JSONPATH:$.Wifi.RSSI"]
Type string : recieveddata "RF Bridge Received Data"
[ stateTopic="Haus/sonoff_bridge/tele/RESULT", transformationPattern="JSONPATH:$.RfReceived.Data"]
Type switch : button1_2 "Fernbed Status Taste 1_2"
[ stateTopic="Haus/sonoff_bridge/cmnd/RfCode", on="RfCode #405015" , off="RfCode #405014",commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #405015" , off="RfCode #405014" ]
Type switch : button3_4 "Fernbed Status Taste 3_4"
[ stateTopic="Haus/sonoff_bridge/cmnd/RfCode", on="RfCode #401015" , off="RfCode #401014",commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #401015" , off="RfCode #401014" ]
Type switch : button5_6 "Fernbed Status Taste 5_6"
[ stateTopic="Haus/sonoff_bridge/cmnd/RfCode", on="RfCode #550515" , off="RfCode #550514",commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #550515" , off="RfCode #550514" ]
}
items
Code: Alles auswählen
String RfBridge_WifiRssi "RF Bridge RSSI [%d %%] "<network> {channel="mqtt:topic:mosquitto:RfBridge:wifi-rssi"}
String RfBridge_DeviceState "RF Bridge State"<qualityofservice> {channel="mqtt:topic:mosquitto:RfBridge:devicestate"}
String RfBridge_Data "RF Bridge Data" {channel="mqtt:topic:mosquitto:RfBridge:recieveddata"}
Switch Weihnac_Light1 "Licht Weihnacht 1" <light> {channel="mqtt:topic:mosquitto:RfBridge:button1_2"}
Switch Weihnac_Light2 "Licht Weihnacht 2" <light> {channel="mqtt:topic:mosquitto:RfBridge:button3_4"}
Switch Weihnac_Light3 "Licht Weihnacht 3" <light> {channel="mqtt:topic:mosquitto:RfBridge:button5_6"}
sitemap
Code: Alles auswählen
Switch item=Weihnac_Light1
Switch item=Weihnac_Light2
Switch item=Weihnac_Light3
Text item=RfBridge_WifiRssi
Text item=RfBridge_DeviceState
Text item=RfBridge_Data
rule
Code: Alles auswählen
rule "rf bridge receive"
when
Item RfBridge_Data received update
then
logInfo("rfBridge","received command: {}",RfBridge_Data.state)
switch(RfBridge_Data.state.toString){
case "405015": {
Weihnac_Light1.postUpdate(ON)
}
case "405014": {
Weihnac_Light1.postUpdate(OFF)
}
case "401015": {
Weihnac_Light2.postUpdate(ON)
}
case "401014": {
Weihnac_Light2.postUpdate(OFF)
}
case "550515": {
Weihnac_Light3.postUpdate(ON)
}
case "550514": {
Weihnac_Light3.postUpdate(OFF)
}
}
end
jetzt kann ich wieder mit Fernbedienung schalten mit rückmeldung in der sitemap und über sitemap kann ich auch schalten in der rule benutze ich einfach Switch Weihnac_Light so war es mit MQTT1 auch so
noch mal Vielen Dank!
Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.
Verfasst: 4. Jan 2020 21:36
von udo1toni
Gerne. Freut mich, dass Du es hinbekommen hast.