Robins Blog – Technik und Multimedia

Fhem: Sonoff-RF-Bridge 433 Mhz mit Tasmota – ein Erfahrungsbericht

Update 12.12.2018 Erweiterung Blog-Beitrag für verschiedene Fernbedienungen
Update 12.02.2018 Erweiterung Blog-Beitrag

Ich habe die 433 MHz Technologie seit über 4 Jahren im Einsatz. Damit schalte ich die Baumarkt-Steckdosen (-> hier) , und empfange auch Signale von Tür-Fenster-Kontakt-Sensoren (-> hier). Bewegungsmelder sind natürlich auch dabei (-> hier). Wie man einen 433 MHz Sender für Fhem an einem Raspi anschließt, habe ich (-> hier) beschrieben.
Leider ist die Hardware dafür etwas umständlich: Man benötigt einen guten 433 MHz Receiver, am Besten mit Superhet (-> amazon-link hier) und einen 433 MHz Sender (-> amazon: hier). Mit einigen Frickeleien und Probieren bekommt man dann auch gute Ergebnisse. Wenns einmal läuft, dann läufts.

Aber es geht besser und eleganter: Seit einiger Zeit gibt es von Sonoff ein Modul, welches gleichzeitig im 433 MHz Bereich Senden UND Empfangen kann. Auf dem Modul ist standardmäßig eine China-Firmware drauf, welche meine Meinung nach auch nicht schlecht ist. Sie arbeitet autark und ohne Hausautomations-System. Man ruft eine App auf und lernt die Baumarkt-Steckdosen (-> amazon: Steckdosen) an. Danach kann man sie problemlos auch per Smartphone schalten.

Sonoff 433 MHz Bridge: Die Hardware ist ein schwarzes, unscheinbares Kästchen, welches mit 5 V USB gepowert wird. In meiner Version leuchtet ständig der Schriftzug Sonoff in grün. Daneben gibt es eine Reset- Taste und 2 LEDs, eine blaue und eine rote. Die blaue zeigt die Verbindung zum WLAN an, die rote LED flackert kurz auf, wenn ein 433 MHz Signal gesendet oder empfangen wurde. Preislich gelegen ist dieses Modul billiger als die einzelnen 433 MHz Sender und Empfänger.

Tasmota-Firmware für die Sonoff 433 MHz Bridge: Nachteilig bei der China-Firmware ist, das sie angeblich nach China telefonieren soll und keinerlei Interfaces zu einem Hausautomation-System (wie Fhem) hat. Abhilfe schafft hier die Tasmota-Firmware. Ich hatte damals schon mal über die  Tasmota Steckdose und über den POW-Schalter gebloggt. Diese muss einmalig auf dem Gerät geflashed und konfiguriert werden.

Vergleich: 433 MHz-Sender und Empfänger mit der Sonoff 433 Mhz Bridge. Ich habe auch etwas lange gehadert, auf die Sonoff Bridge umzustellen. Ist auch ziemlich arbeitsaufwendig, sämtliche Baumarkt-Steckdosen und auch die LEDs meines Bilderrahmens einzeln umzuprogrammieren.

Ich habe aber mal die Vorteile zusammengestellt:
Sonoff-RF-Bridge hat WLAN-Zugang, Aufstellort also variabel
Sonoff-RF-Bridge hat ein eigenes Webinterface, leichte Kontrolle möglich
Sonoff-RF-Bridge benötigt für das Senden und Empfangen lediglich 5 V USB Spannung.
Sonoff-RF-Bridge benötigt keinen Eingriff ins Fhem und der Konsole, lediglich Mosquitto Broker
Sonoff-RF-Bridge benötigt keine Rechte von Fhem
Sonoff-RF-Bridge lernt Steckdosen, PIR (Bewegungsmelder) und TFK (Tür-Kontakt-Sensoren)
Sonoff-RF-Bridge ist preisgünstig.

Update 12.12.2018: RAW Ausgabe der Daten: Durch ein Update und einer kleinen Änderung der Hardware können jetzt auch Intertechno Fernbedienungen empfangen werden. Wie das funktioniert, steht in diesem Wiki. (Aufpreis  3 Euro, wenn ich Euch die so flashen und die Hardwareerweiterung einbauen soll.)

Angebot: Schickt mir Eure Sonoff RF-Bridge zu, für 9,80 Euro inkl. Versand flashe ich diese dann.

Für meine alten 433 MHz-Sender und Empfänger gibt es auch Blog-Beiträge, welche mittlerweile auch 4 – 5 Jahre alt sind, siehe hier und hier.

MQTT: Das perfekte Interface. Mit der Tasmota-Software und einem Moskitto-Broker ist es möglich, die 433 Mhz Sende- und Empfangssignale über MQTT zum Hausautomations-Server (hier Fhem) zu übermitteln.

Beispiel – Hinzufügen einer Baumarkt-Steckdose. Voraussetzung: Mosquitto ist installiert und lauffähig. Topic bei der Sonoff-Bridge: sonoffrf, Full-Topic: /Smarthome/Buero/%topic%/%prefix%  (alles bei den Einstellungen der sonoff-bridge).

Nun sich auf der Sonoff-Bridge verbinden und unter Konsole gehen

Man sieht möglicherweise einige Eintragungen

16:28:31 MQT: /Smarthome/Buero/sonoffrf/tele/RESULT = {"RfReceived":{"Sync":10850,"Low":350,"High":1030,"Data":"93F869","RfKey":"None"}}
16:28:36 MQT: /Smarthome/Buero/sonoffrf/tele/RESULT = {"RfReceived":{"Sync":10850,"Low":350,"High":1030,"Data":"93F869","RfKey":"None"}}
16:28:52 MQT: /Smarthome/Buero/sonoffrf/tele/RESULT = {"RfReceived":{"Sync":10850,"Low":350,"High":1030,"Data":"93F869","RfKey":"None"}}
16:30:37 MQT: /Smarthome/Buero/sonoffrf/tele/STATE = {"Time":"2018.02.10 16:30:37","Uptime":2,"Vcc":3.142,"Wifi":{"AP":1,"SSId":"DerNetteNachbar","RSSI":100,"APMac":"C8:EE:14:CC:D7:F8"}}
16:31:04 MQT: /Smarthome/Buero/sonoffrf/stat/RESULT = {"RfCode":"#141544"}
16:34:01 MQT: /Smarthome/Buero/sonoffrf/stat/RESULT = {"RfCode":"#141544"}
16:36:58 MQT: /Smarthome/Buero/sonoffrf/stat/RESULT = {"RfCode":"#141544"}
16:37:26 MQT: /Smarthome/Buero/sonoffrf/stat/RESULT = {"RfCode":"#5541"}
16:37:28 MQT: /Smarthome/Buero/sonoffrf/stat/RESULT = {"RfCode":"#5544"}

Nun die Baumarkt-Fernbedienung nehmen und die gewünschte Ein- und Austaste drücken. Es sollten dann zwei neue Eintragungen auftauchen in der Konsole. Wichtig ist hier der RfCode bzw. Data. Diese Codes merken.

Nun in fhem folgendes Script verwenden:

defmod RF_Stein MQTT_DEVICE
attr RF_Stein IODev MyBroker
attr RF_Stein alexaName Stein
attr RF_Stein alias Salzlampe
attr RF_Stein devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON Offline:rc_BLUE:OFF
attr RF_Stein event-on-change-reading state
attr RF_Stein eventMap #05541:on #05544:off
attr RF_Stein publishSet on off toggleon off toggle /Smarthome/Buero/sonoffrf/cmnd/RfCode
attr RF_Stein room Licht,MQTT,Wohnzimmer
attr RF_Stein stateFormat {ReadingsVal($name,"presence","") eq "Offline" ? "Offline" : ReadingsVal($name,"state","")}
attr RF_Stein webCmd on off toggle
setstate RF_Stein off
setstate RF_Stein 2018-02-10 16:37:28 state #05544
setstate RF_Stein 2018-02-10 16:37:28 transmission-state outgoing publish sent

Wie man sieht zum Schalten meiner Salzlampe habe ich die Codes (welche von der Fernbedienung kamen) verwendet.

Zweites Beispiel: Empfangen von 433 MHz Signalen – PIR oder TFK – und Weitergabe an Fhem.

Hier müssen die Daten von der RF-Bridge zum Fhem wandern und als Reading sichtbar gemacht werden.

defmod SonoffRF MQTT_DEVICE
attr SonoffRF IODev MyBroker
attr SonoffRF alias Sonoff RF Bridge
attr SonoffRF group RF Bridge
attr SonoffRF room MQTT
attr SonoffRF stateFormat transmission-state
attr SonoffRF subscribeReading_Sensor /Smarthome/Buero/sonoffrf/tele/RESULT

sowie

defin ej3 expandJSON SonoffRF.*:.*:.{.*}
attr ej3 alias Sonoff Tools
attr ej3 room MQTT

Es kommt vom MQTT zum Beispiel folgende Information

16:28:31 MQT: /Smarthome/Buero/sonoffrf/tele/RESULT = {"RfReceived":{"Sync":10850,"Low":350,"High":1030,"Data":"93F869","RfKey":"None"}}

und das expandJSON macht daraus Readings in der Form
RfReceived_Data
93F869
2018-02-10 16:28:52
RfReceived_High
1030
2018-02-10 16:28:52
RfReceived_Low
350
2018-02-10 16:28:52
RfReceived_RfKey
None
2018-02-10 16:28:52
RfReceived_Sync
10850
2018-02-10 16:28:52

und darauf kann man reagieren, zum Beispiel so:

define RFEvents notify SonoffRF:RfReceived_Data.* {\
if ($EVTPART1 == "93F869") {fhem('set RF_Schreibtisch on');;}\
}
attr RFEvents room MQTT

Das Script ist natürlich noch weiter ausbaubar.

Absetzen von MQTT-Kommandos: Um Kommandos mit # zu senden, habe ich eine kleine Sub geschrieben.
Hier muss man über die Komandozeile mosquitto_pub gehen

sub RFSendMQTT($) {
my ($mqttcode) = @_;
my $cmd = "mosquitto_pub -h 192.168.178.67 --quiet -t /Smarthome/Buero/sonoffrf/cmnd/RfCode -m '$mqttcode'";
system( "$cmd" );
return undef;
}

Aufgerufen wird das dann mit

{RFSendMQTT("#145154")}

Das oben in der Fhem-Kommandozeile eingegeben, könnt ihr schnell Eure Steckdosen auf Funktionsfähigkeit testen.

Ich schalte damit meine LEDs von meinem Bilderrahmen. Das Projekt dürfte schon 4 – 5 Jahre alt sein.

Heutzutage würde man das mit einem Wemos machen, siehe hier.

So ist es natürlich denkbar, das man mit einer Baumarkt-Fernbedienung ggf. eine Hue-Lampe einschaltet.
Ich hatte vor 4 Jahren mal ein Youtube video gemacht, hat natürlich keiner kapiert.

Die mobile Version verlassen