FHEM Tutorial-Reihe - Part 56: Sonoff RF-Bridge
Hier kommt ein Video, auf welches viele von Euch schon lange gewartet haben: Die Ansteuerung von Intertechno-Steckdosen über die RF-Bridge in fhem. Ich habe jetzt alle meine Intertechno-Lampen (welche ich vorher mit einem 868MHz-CUL geschaltet habe) gelöscht. Diese werden nun alle über die Bridge gesteuert. Dafür legen wir diverse Dummy-Devices an, zwei verschiedene Notify, welche das Ganze dann steuern werden. Auch, wenn Du kein Sonoff im Einsatz hast, bin ich mir sehr sicher, dass Du in diesem Video noch etwas lernen kannst. Immerhin wird hier sehr generisch gezeigt, wie man so ein Problem lösen kann, ohne für jedes Gerät ein DOIF oder Notify anlegen zu müssen.
Was wird benötigt?
- Eine FHEM-Installation
- Eine Sonoff-RF-Bridge (433 MHz), welche per MQTT integriert ist
Video
Befehle
define BridgeSonoff TASMOTA_DEVICE Bridge /SmartHome/Interface/%topic%/%prefix%
define WZ_SchrankLichtProxy dummy
attr WZ_SchrankLichtProxy userattr bridgeOn bridgeOff
attr WZ_SchrankLichtProxy DbLogExclude .*
attr WZ_SchrankLichtProxy bridgeOff 501014
attr WZ_SchrankLichtProxy bridgeOn 501015
attr WZ_SchrankLichtProxy setList on:noArg off:noArg
attr WZ_SchrankLichtProxy webCmd on:off
define n_SonoffBridgeCode notify BridgeSonoff:result-rfreceived-data:.* {}
attr n_SonoffBridgeSend alias Sonoff Bridge: RfCode per Bridge senden wenn an oder aus geschaltet wird
{
fhem("setstate a:bridgeOff=" . $EVTPART1 . ":FILTER=STATE=on off");
fhem("setstate a:bridgeOn=" . $EVTPART1 . ":FILTER=STATE=off on");
}
setstate WZ_SchrankLichtProxy on
list a:bridgeOff=501014:FILTER=STATE=off
define n_SonoffBridgeSend notify .*:(on|off) {}
attr n_SonoffBridgeSend alias Sonoff Bridge: RfCode per Bridge senden wenn an oder aus geschaltet wird
{
if ($EVTPART0 eq "on") {
my $bridgeOn = AttrVal($NAME, "bridgeOn", "");
if ($bridgeOn ne "") {
fhem("set BridgeSonoff cmd RfCode #" . $bridgeOn);
}
}
if ($EVTPART0 eq "off") {
my $bridgeOff = AttrVal($NAME, "bridgeOff", "");
if ($bridgeOff ne "") {
fhem("set BridgeSonoff cmd RfCode #" . $bridgeOff);
}
}
}
Das wars - ziemlich elegant, oder? Besonders den Teil mit dem devspec finde ich sehr spannend. So kann man sich sehr viel Programmierarbeit sparen. Wir lassen einfach fhem das richtige Gerät anhand des Attributes suchen und schalten dieses dann direkt an oder aus.