Fritzbox: WLAN ein/ausschalten: Unterschied zwischen den Versionen
(→Aufruf) |
Krikan (Diskussion | Beiträge) (FHEM(R)) |
||
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Um auf der Fritzbox, auf der | Um auf der Fritzbox, auf der FHEM läuft, Firmwareversions-unabhängig das WLAN ein- und ausschalten zu können, nutzt dieses script die Möglichkeit, das ein/ausschalten über das Telefon zu erledigen. | ||
Getestet auf einer FB7390; auf anderen Modellen mögen die Codes zum einschalten (#96*1*) und ausschalten (#96*0*) anders lauten, bitte im Handbuch nachschauen. | Getestet auf einer FB7390; auf anderen Modellen mögen die Codes zum einschalten (#96*1*) und ausschalten (#96*0*) anders lauten, bitte im Handbuch nachschauen. | ||
'''Seit 10/2012 ist diese Routine Teil des | '''Seit 10/2012 ist diese Routine Teil des FHEM-Standard. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_WLANswitch($)''' | ||
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von | Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von FHEM geladen. FHEM muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (zB in 99_myUtils.pm) die Zeile | ||
use FritzBoxUtils; | |||
einfügen. | |||
Zeile 30: | Zeile 32: | ||
== Aufruf == | == Aufruf == | ||
<nowiki>define WLANschalten notify btn {doWLANswitch(" | <nowiki>define WLANschalten notify btn {doWLANswitch("$EVENT")}</nowiki> | ||
[[Kategorie:Code Snippets]] | |||
[[Kategorie:FritzBox]] | |||
Ich habe den Aufruf etwas erweitert, um außer WLAN auch Gast-WLAN, Capi und TelNet schalten zu können | |||
== Code für WLAN, Gast-WLAN, Capi und TelNet in 99_myUtils_irgendwas.pm == | |||
<nowiki>sub doswitch($$) { | |||
my ($cmd, $what) = @_; | |||
my $number = ""; | |||
my $ret = ""; | |||
if ($what =~ m"G_WLAN"i) { | |||
if ($cmd =~ m"on"i) {qx(/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 1)}; | |||
if ($cmd =~ m"off"i) {qx(/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 0)}; | |||
Log 1, "doswitch($cmd,$what)"; | |||
} else { | |||
if ($what =~ m"WLAN"i && $cmd =~ m"on"i) { $number = "ATD#96*1*"; }; | |||
if ($what =~ m"WLAN"i && $cmd =~ m"off"i) { $number = "ATD#96*0*"; }; | |||
if ($what =~ m"Capi"i && $cmd =~ m"on"i) { $number = "ATD#96*3*"; }; | |||
if ($what =~ m"Capi"i && $cmd =~ m"off"i) { $number = "ATD#96*2*"; }; | |||
if ($what =~ m"TelNet"i && $cmd =~ m"on"i) { $number = "ATD#96*7*"; }; | |||
if ($what =~ m"TelNet"i && $cmd =~ m"off"i) { $number = "ATD#96*8*"; }; | |||
$ret .= "ATD: " . `echo $number | nc 127.0.0.1 1011`; | |||
sleep 1; | |||
$ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011`; | |||
$ret =~ s,[\r\n]*,,g; # remove CR from return-string | |||
Log 1, "doswitch($cmd,$what) returned: $ret"; | |||
}; | |||
}</nowiki> | |||
== Code für WLAN, Gast-WLAN, Capi und TelNet in irgendwas.cfg == | |||
Als Beispiel WLAN mit Dummy zum Anklicken, die anderen drei entsprechend. Nicht vergessen, die geänderte 99_myUtils_irgendwas.pm mit reload neu zu laden. | |||
<nowiki> | |||
define D_WLAN FS20 1234 92 | |||
attr D_WLAN IODev CUL_0 | |||
attr D_WLAN devStateIcon on:WLAN_Status.1 off:WLAN_Status.0 | |||
attr D_WLAN dummy 1 | |||
attr D_WLAN group Dummy_FS20 | |||
attr D_WLAN icon icoFritz.png | |||
attr D_WLAN room 08_FritzBox | |||
define act_on_WLAN notify D_WLAN {doswitch("$EVENT","WLAN");;fhem("setstate D_WLAN $EVENT")}</nowiki> | |||
== Aufruf für WLAN, Gast-WLAN, Capi und TelNet == | |||
<nowiki>fhem("set D_WLAN off");;</nowiki> | |||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] | ||
[[Kategorie:FritzBox]] | [[Kategorie:FritzBox]] |
Aktuelle Version vom 27. Januar 2017, 16:15 Uhr
Um auf der Fritzbox, auf der FHEM läuft, Firmwareversions-unabhängig das WLAN ein- und ausschalten zu können, nutzt dieses script die Möglichkeit, das ein/ausschalten über das Telefon zu erledigen.
Getestet auf einer FB7390; auf anderen Modellen mögen die Codes zum einschalten (#96*1*) und ausschalten (#96*0*) anders lauten, bitte im Handbuch nachschauen.
Seit 10/2012 ist diese Routine Teil des FHEM-Standard. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_WLANswitch($) Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von FHEM geladen. FHEM muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (zB in 99_myUtils.pm) die Zeile
use FritzBoxUtils;
einfügen.
Code
######## Switch FB WLAN on/off ############ # call from notify with {doWLANswitch("%")} sub doWLANswitch($) { my $cmd = shift; my $ret = ""; if ($cmd =~ m"on"i) { # on or ON $ret .= "ATD: " . `echo "ATD#96*1*" | nc 127.0.0.1 1011` ; sleep 1 ; $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ; } if ($cmd =~ m"off"i) { # off or OFF $ret .= "ATD: " . `echo "ATD#96*0*" | nc 127.0.0.1 1011` ; sleep 1 ; $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011` ; } $ret =~ s,[\r\n]*,,g; # remove CR from return-string Log 1, "doWLANswitch($cmd) returned: $ret"; }
Aufruf
define WLANschalten notify btn {doWLANswitch("$EVENT")}
Ich habe den Aufruf etwas erweitert, um außer WLAN auch Gast-WLAN, Capi und TelNet schalten zu können
Code für WLAN, Gast-WLAN, Capi und TelNet in 99_myUtils_irgendwas.pm
sub doswitch($$) { my ($cmd, $what) = @_; my $number = ""; my $ret = ""; if ($what =~ m"G_WLAN"i) { if ($cmd =~ m"on"i) {qx(/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 1)}; if ($cmd =~ m"off"i) {qx(/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 0)}; Log 1, "doswitch($cmd,$what)"; } else { if ($what =~ m"WLAN"i && $cmd =~ m"on"i) { $number = "ATD#96*1*"; }; if ($what =~ m"WLAN"i && $cmd =~ m"off"i) { $number = "ATD#96*0*"; }; if ($what =~ m"Capi"i && $cmd =~ m"on"i) { $number = "ATD#96*3*"; }; if ($what =~ m"Capi"i && $cmd =~ m"off"i) { $number = "ATD#96*2*"; }; if ($what =~ m"TelNet"i && $cmd =~ m"on"i) { $number = "ATD#96*7*"; }; if ($what =~ m"TelNet"i && $cmd =~ m"off"i) { $number = "ATD#96*8*"; }; $ret .= "ATD: " . `echo $number | nc 127.0.0.1 1011`; sleep 1; $ret .= " ATH: " . `echo "ATH" | nc 127.0.0.1 1011`; $ret =~ s,[\r\n]*,,g; # remove CR from return-string Log 1, "doswitch($cmd,$what) returned: $ret"; }; }
Code für WLAN, Gast-WLAN, Capi und TelNet in irgendwas.cfg
Als Beispiel WLAN mit Dummy zum Anklicken, die anderen drei entsprechend. Nicht vergessen, die geänderte 99_myUtils_irgendwas.pm mit reload neu zu laden.
define D_WLAN FS20 1234 92 attr D_WLAN IODev CUL_0 attr D_WLAN devStateIcon on:WLAN_Status.1 off:WLAN_Status.0 attr D_WLAN dummy 1 attr D_WLAN group Dummy_FS20 attr D_WLAN icon icoFritz.png attr D_WLAN room 08_FritzBox define act_on_WLAN notify D_WLAN {doswitch("$EVENT","WLAN");;fhem("setstate D_WLAN $EVENT")}
Aufruf für WLAN, Gast-WLAN, Capi und TelNet
fhem("set D_WLAN off");;