[gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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)

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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 ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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}}

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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 :(

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag 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!

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [gelöst] Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag von udo1toni »

Gerne. Freut mich, dass Du es hinbekommen hast.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten