Fritzbox: WLAN ein/ausschalten: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „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/…“)
 
(FHEM(R))
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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.
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 fhem-Standard. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_WLANswitch($)'''
'''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.
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>
  <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: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");;