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

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

fkempter
Beiträge: 46
Registriert: 6. Jan 2018 13:59
Answers: 0

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

Beitrag von fkempter »

Hallo,
ich habe eine Sonoff RF Bridge (Tasmota) und eine Intertechno Funk-Steckdose.
Wenn ich die Funkfernbedienung drücke bekomme ich diesen Code 001015

Code: Alles auswählen

15:44:32 MQT: tele/sonoffRF01/RESULT = {"RfReceived":{"Sync":11820,"Low":380,"High":1160,"Data":"001015","RfKey":1}}
Nun möchte ich diese mit Openhab/MQTT diese schalten. (Aber nicht mit RFKey)
Ich sende den Code (RfCode 1015) über MQTT.fx aber die Funksteckdose reagiert nicht doch der RFSniffer erkennt das richtige Signal.
siehe hier:

Code: Alles auswählen

15:59:40 MQT: stat/sonoffRF01/RESULT = {"RfCode":1015}
Über den angelernten Key1 funktioniert die Steckdose:

Code: Alles auswählen

15:58:30 CMD: rfkey1 5
15:58:30 MQT: stat/sonoffRF01/RESULT = {"RfKey1":{"Sync":11800,"Low":370,"High":1160,"Data":"001015"}}
Und wer weiß die Syntax damit ich der RF Bridge den Code für die Funkstekcdose senden kann?

Code: Alles auswählen

Thing topic SonoffRF-Thing „SonsofRF“ @ „Sonoff“ {
	Channels:
		Type string : LWT 	[stateTopic=“tele/sonsoffRF01/LWT“]
		Type string : RFCode	[???]
Zuletzt geändert von fkempter am 7. Jan 2019 20:14, insgesamt 1-mal geändert.

elbombo
Beiträge: 39
Registriert: 21. Okt 2018 19:14
Answers: 0

Re: Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag von elbombo »

werden auch die richtigen Werte für Synch Hight und Low genutzt ?
Ich schalte auch InterTechno Steckdosen mit der RFBridge.... allerdings über RfKey, was du nicht möchtest.
Anfangs hatte ich nur den RfCode manuell angelernt und Rfsync RfLow RfHigh ausser Acht gelassen... und die Steckdosen reagierten nicht.
Erst nach setzen der fehlenden Daten schalteten die Steckdosen fehlerfrei.

fkempter
Beiträge: 46
Registriert: 6. Jan 2018 13:59
Answers: 0

Re: Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag von fkempter »

elbombo hat geschrieben: 7. Jan 2019 08:42 werden auch die richtigen Werte für Synch Hight und Low genutzt ?
Ich schalte auch InterTechno Steckdosen mit der RFBridge.... allerdings über RfKey, was du nicht möchtest.
Anfangs hatte ich nur den RfCode manuell angelernt und Rfsync RfLow RfHigh ausser Acht gelassen... und die Steckdosen reagierten nicht.
Erst nach setzen der fehlenden Daten schalteten die Steckdosen fehlerfrei.
Ich bin leider noch nicht ganz Fit mit Openhab.
Wie muss ich das programmieren das ich mit einem Switch im Openhab die 3 Variablen an RF senden kann.
Wäre froh wenn du oder sonst jemand mir ein kleines Beispiel hier einstellen könnte,
Für Thing bzw Item

Das Auslesen funktioniert mit:

Code: Alles auswählen

    Thing topic SonoffRF01_Thing  "SonoffRF01" @ "Sonoff" {  
     Channels:
        Type string : LWT         [stateTopic="tele/sonoffRF01/LWT"]
        Type string : Uptime      [stateTopic="tele/sonoffRF01/STATE", transformationPattern="JSONPATH:$.Uptime"]
        Type number : Signal      [stateTopic="tele/sonoffRF01/STATE",transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : Modul       [stateTopic="tele/sonoffRF01/INFO1", transformationPattern="JSONPATH:$.Module"]
        Type string : Version     [stateTopic="tele/sonoffRF01/INFO1", transformationPattern="JSONPATH:$.Version"]
        Type string : Hostname    [stateTopic="tele/sonoffRF01/INFO2", transformationPattern="JSONPATH:$.Hostname"]
        Type string : IPAdresse   [stateTopic="tele/sonoffRF01/INFO2", transformationPattern="JSONPATH:$.IPAddress"]
        Type string : RfSync      [stateTopic="tele/sonoffRF01/RESULT", transformationPattern="JSONPATH:$.RfReceived.Sync"]
        Type string : RfLow       [stateTopic="tele/sonoffRF01/RESULT", transformationPattern="JSONPATH:$.RfReceived.Low"]
        Type string : RfHigh      [stateTopic="tele/sonoffRF01/RESULT", transformationPattern="JSONPATH:$.RfReceived.High"]
        Type string : RfData      [stateTopic="tele/sonoffRF01/RESULT", transformationPattern="JSONPATH:$.RfReceived.Data"]
        Type string : RfRfKey     [stateTopic="tele/sonoffRF01/RESULT", transformationPattern="JSONPATH:$.RfReceived.RfKey"]
    }
wie muss ich das commandTopic einbauen für rfLow ,RfHigh und RFCode?

fkempter
Beiträge: 46
Registriert: 6. Jan 2018 13:59
Answers: 0

Re: Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag von fkempter »

Soweit habe ich es mit den Channel hinbekommen das dieser mit enem Switch die Codes senden kann.

Code: Alles auswählen

Type switch : button     [stateTopic="stat/sonoffRF01/RESULT", commandTopic="cmnd/sonoffRF01/RFCode", on="1015", off="1014" ]
Nun aber wie kann ich 3 CommandTopic auf einmal senden?
Habe erfolglos es so versucht.

Code: Alles auswählen

Type switch : button     [stateTopic="stat/sonoffRF01/RESULT", commandTopic="cmnd/sonoffRF01/RFCode", on="1015", off="1014" , commandTopic="cmnd/sonoffRF01/RFLow", on="410", off="420" ]
Ein Idee wäre über eine Rule die restlichen Daten zu senden aber das scheint mir ein Umweg zu sein.

Über RKey möchste ich es nich tmachen da ich mehre RF Bridge plane einzusetzten und dan jede Bridge anlernen müsste.
Oder kann ich die Codes (für RfLow,RfHigh,RfCode) über die Sonoff Konsole manuell setzten?

fkempter
Beiträge: 46
Registriert: 6. Jan 2018 13:59
Answers: 0

Re: Sonoff RF Bridge InterTechno Steckdose über Mqtt steuern.

Beitrag von fkempter »

Hab eine andere einfache Lösung gefunden.
Und zwar muß ich das # für hexadecimal vor dem Code angeben.
Ich dachte ich hatte das schon einmal ausporpiert und es hat nicht funktioniert.
Aber es kann sein das ich mich vertan hatte.

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 »

hab jetzt alten Thread rausgeholt weil ich das selbe machen möchte bzw. mit MQTT1 hab ich das ja gemacht
jetzt bin ich auf MQTT2 ungezogen alles geht jetzt nur RF Bridge nicht so ganz.
so sah bei mir mit MQTT1 aus
items

Code: Alles auswählen

Switch Garden_Weihnac_Light  "Licht Weihnacht Baumvorne"  <light>    {mqtt=">[mosquitto:cmnd/sonoff_bridge/RfCode:command:OFF:#405014],<[mosquitto:tele/sonoff_bridge/RESULT:state:OFF:.*\"RfReceived\".*\"405014\".*], <[mosquitto:stat/sonoff_bridge/RESULT:state:OFF:.*\"RfCode\".*\"#405014\".*],>[mosquitto:cmnd/sonoff_bridge/RfCode:command:ON:#405015], <[mosquitto:tele/sonoff_bridge/RESULT:state:ON:.*\"RfReceived\".*\"405015\".*], <[mosquitto:stat/sonoff_bridge/RESULT:state:ON:.*\"RfCode\".*\"#405015\".*]", autoupdate="false"}
musste nur RfCode senden und konnte die Steckdose schalten.
jetzt ist es so

Code: Alles auswählen

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 switch : taste1     "Licht Weihnacht Baumvorne"            
         [ stateTopic="Haus/sonoff_bridge/stat/RESULT", commandTopic="Haus/sonoff_bridge/cmnd/RFCode", on="RfCode #405015" , off="RfCode #405014" ]
 
und 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"}


Switch Garden_Weihnac_Light  "Licht Weihnacht Baumvorne"  <light>   {channel="mqtt:topic:mosquitto:RfBridge:taste1"}
wenn ich jetzt über BasicUi mein schalter betätige bekomme ich Fehlermeldung im log

Code: Alles auswählen


2019-12-30 12:37:02.650 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command '{"RfCode":"#405015"}' not supported by type 'OnOffValue': No enum constant org.eclipse.smarthome.core.library.types.OnOffType.{"RfCode":"#405015"}

und wenn ich nicht über rule schalte , sondern über Fernbedinung bekomme ich keine rückmeldung in der sitemap

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 »

:P Haus/sonoff_bridge/stat/RESULT liefert ja nicht ON oder OFF zurück. Im Zweifel könntest Du ein transformationPattern setzen, welches das Ergebnis entsprechend verarbeitet. Allerdings kommen ja wohl auch Befehle für andere Steckdosen an, nicht nur für die eine. Dann würde das Item auf NULL springen, da der letzte Befehl ja weder ein gültiges ON noch ein gültiges OFF für den Channel enthielt.
Vermutlich solltest Du eher ein String Item mit dem Payload von Haus/sonoff_bridge/stat/RESULT füllen und in einer Rule den Inhalt auseinander nehmen. Die Rule muss dann die entsprechenden Items per postUpdate auf den korrekten Status setzen.

Ausgehend dürfte das "RfCode " im Mapping für on und off falsch sein, zumindest hast Du es bei mqtt1 nicht verwendet.
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 »

hm also fange ich mal an
tings aus switch ..string

Code: Alles auswählen

 Type string : taste1     "Licht Weihnacht Baumvorne"            
         [ stateTopic="Haus/sonoff_bridge/stat/RESULT", commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #405015" , off="RfCode #405014" ] 
items Switch ist jetz aus Sting

Code: Alles auswählen

 String Garden_Weihnac_Light  "Licht Weihnacht Baumvorne"  <light>   {channel="mqtt:topic:mosquitto:RfBridge:taste1"}
damit kann ich jetzt über rule mit Befehl

Code: Alles auswählen

  sendCommand (Garden_Weihnac_Light,"RfCode #405015")
einschalten und mit

Code: Alles auswählen

 sendCommand (Garden_Weihnac_Light,"RfCode #405014")
ausschalten
aber wie mache ich das mit dem Switch in der Sitemap ? und wie geht das mit Rückmeldung das geschaltet oder ausgeschaltet wurde?
Im Zweifel könntest Du ein transformationPattern setzen, welches das Ergebnis entsprechend verarbeitet. Allerdings kommen ja wohl auch Befehle für andere Steckdosen an, nicht nur für die eine. Dann würde das Item auf NULL springen, da der letzte Befehl ja weder ein gültiges ON noch ein gültiges OFF für den Channel enthielt.
ist eigentlich nur eine Steckdose die anderen hatten andere "RfCode "
hatte mit mqtt1 3 Steckdosen gesteuert

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 »

djuscha hat geschrieben: 30. Dez 2019 16:34 ist eigentlich nur eine Steckdose die anderen hatten andere "RfCode "
Aber jeder empfangene RfCode kommt im selben Topic an. Wenn Du nun dieses Topic als stateTopic in mehreren Channels verwendest, bekommt jeder Channel den Payload. Wenn Du den Payload über eine Transformation auswertest, wird das dazu führen, dass der Status jedes Channels, der nicht den passenden RfCode hat, auf NULL gesetzt wird.
Wenn Du stattdessen den Payload von einer Rule auswerten lässt, kannst Du gezielt die Items einzeln setzen.
Lass das stateTopic im Channel weg (und definiere dafür einen eigenen Channel), setze den Channel auf Type switch und nutze das Backlog Topic mit den on und off Parametern, so wie Du es schon konfiguriert hast.
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 »

[/quote]
Aber jeder empfangene RfCode kommt im selben Topic an. Wenn Du nun dieses Topic als stateTopic in mehreren Channels verwendest, bekommt jeder Channel den Payload. Wenn Du den Payload über eine Transformation auswertest, wird das dazu führen, dass der Status jedes Channels, der nicht den passenden RfCode hat, auf NULL gesetzt wird.
[/quote]

das verstehe ich jetzt :)
Lass das stateTopic im Channel weg (und definiere dafür einen eigenen Channel), setze den Channel auf Type switch und nutze das Backlog Topic mit den on und off Parametern, so wie Du es schon konfiguriert hast.
meinst du so ?

Code: Alles auswählen

 
        Type string : taste1     "Licht Weihnacht Baumvorne1"            
         [ commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #405015" , off="RfCode #405014" ]
         Type string : taste2     "Licht Weihnacht Baumvorne2"            
         [ commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #401015" , off="RfCode #401014" ]
        Type string : taste3     "Licht Weihnacht Baumvorne3"            
         [ commandTopic="Haus/sonoff_bridge/cmnd/Backlog", on="RfCode #550515" , off="RfCode #550514" ]
         
         Type switch : button1_2      "Fernbed Status Taste 1_2"            
        [ stateTopic="Haus/sonoff_bridge/stat/Backlog", on="RfCode #405015" , off="RfCode #405014" ]
          Type switch : button3_4      "Fernbed Status Taste 3_4"            
        [ stateTopic="Haus/sonoff_bridge/stat/Backlog", on="RfCode #401015" , off="RfCode #401014" ]
         Type switch : button5_6      "Fernbed Status Taste 5_6"            
        [ stateTopic="Haus/sonoff_bridge/stat/Backlog", on="RfCode #550515" , off="RfCode #550514" ]

Code: Alles auswählen

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

sitemap

Code: Alles auswählen

 
        Switch item=Weihnac_Light1
        Switch item=Weihnac_Light2
        Switch item=Weihnac_Light3
Wenn Du stattdessen den Payload von einer Rule auswerten lässt, kannst Du gezielt die Items einzeln setzen.

Code: Alles auswählen

 rule "Weihnachtslicht "
    when
		Channel  'mqtt:topic:mosquitto:RfBridge:button1_2' triggered START or
        Channel  'mqtt:topic:mosquitto:RfBridge:button3_4' triggered START or
        Channel  'mqtt:topic:mosquitto:RfBridge:button5_6' triggered START
    then
 
if ( Weihnac_Light1.state == ON ) {
         sendCommand (Garden_Weihnac_Light1,"RfCode #405015")
         sendCommand (Weihnac_Light1,"ON")
          }
         else{
         sendCommand (Garden_Weihnac_Light1,"RfCode #405014")
         sendCommand (Weihnac_Light1,"OFF")
         }
if ( Weihnac_Light2.state == ON ) {
         sendCommand (Garden_Weihnac_Light2,"RfCode #401015")
         sendCommand (Weihnac_Light2,"ON")
          }
         else{
         sendCommand (Garden_Weihnac_Light2,"RfCode #401014")
         sendCommand (Weihnac_Light2,"OFF")
         }
if ( Weihnac_Light3.state == ON ) {
         sendCommand (Garden_Weihnac_Light3,"RfCode #550515")
         sendCommand (Weihnac_Light3,"ON")
          }
         else{
         sendCommand (Garden_Weihnac_Light3,"RfCode #550514")
         sendCommand (Weihnac_Light3,"OFF")
         }

         
end
meinst du so?

Antworten