Hallo zusammen,
ich hatte das Problem, daß ich das WLAN meiner Slave FB von meiner Master FB mit FHEM schalten wollte, um beide WLAN Netze leichzeitig ein und auschalten zu können. Aus verschiedenen Quellen habe ich mir nun eine Funktion in 99_myUtils erstellt, mit der sich dies via telnet erledigen lässt. Funktioniert auf der 7390, da Modul net::Telnet vorhanden.
Es ergibt sich gleichzeitig die Möglichkeit die Funktion anzupassen um weitere Werte der FB zu setzen oder zu lesen.
Das Prinzip lässt sich auch auf andere Geräte mit Telnet Interface anpassen.
In der 99_myUtils sieht das so aus:
######## Remote_FB_WLANswitch ############################################
# What : Switches Remote FB WLAN on or off
# Call : { Remote_FB_WLANswitch("xxx.xxx.xxx.xxx","password","on") } or
# { Remote_FB_WLANswitch("xxx.xxx.xxx.xxx","user,"password","on") }
#
sub Remote_FB_WLANswitch (@) {
my ($ip,$password,$cmd) = @_;
# my ($ip,$user,$password,$cmd) = @_; #Wenn User und PW erforderlich
use Net::Telnet;
my $telnet = new Net::Telnet ( Timeout=>15, Errmode=>'die');
$telnet->open($ip);
# $telnet->waitfor('/Fritz!Box user: $/i'); #Wenn User und PW erforderlich
# $telnet->print($user); #Wenn User und PW erforderlich
# $telnet->waitfor('/# $/i'); #Wenn User und PW erforderlich
$telnet->waitfor('/password: $/i');
$telnet->print($password);
$telnet->waitfor('/# $/i');
if ($cmd =~ m"on"i) { # on or ON
$telnet->print('ctlmgr_ctl w wlan settings/ap_enabled 1');}
if ($cmd =~ m"off"i) { # off or OFF
$telnet->print('ctlmgr_ctl w wlan settings/ap_enabled 0');}
Log 3, "Remote_FB_WLANswitch($cmd)";
$telnet->waitfor('/# $/i');
$telnet->print('exit');
}
Wenn die FB für User und PW configuriert ist, kann man den Befehl login verwenden oder die auskommentierten Zeilen anpassen.
Mit Zeilen wie:
$test = $telnet->cmd("ctlmgr_ctl w wlan settings/ap_enabled");
return $test;
lässt sich z.B. der Status des WLAN auslesen (ein=1/aus=0) oder Rückgabewerte anderer FB Funktionen übernehmen. Details zu den mit "ctlmgr_ctl" auf der FB nutzbaren Befehlen finden sich
hier: http://www.wehavemorefun.de/fritzbox/Ctlmgr_ctl (http://www.wehavemorefun.de/fritzbox/Ctlmgr_ctl)
und hier: http://www.wehavemorefun.de/fritzbox/User-Interface-Module (http://www.wehavemorefun.de/fritzbox/User-Interface-Module)
Über z.B. ein notify in der fhem.cfg lässt sich das Ganze an alles mögliche anbinden. Von meinem FHEM auf der einer 7390 funktioniert es zuverlässig um das WLAN der im Netz hängenden 7270 zu schalten.
Vielleicht hilft es ja jemandem weiter oder gibt einen Denkanstoss.
beste Grüße
Christof
Hallo Christof,
ich weiß, das ist ein bisschen off topic, aber ich versuche die Funktion auf dem Raspberry Pi zu installieren. Dummerweise weiß ich nicht, wie man das Net::Telnet (//search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm) Perl Module auf dem Raspberry Pi nachinstalliert.
Hat mir jemand einen Tipp?
Gruß PeMue
Hallo PeMue,
wenn ich das ganze aus dem FHEM Howto richtig interpretiere, sollte die Nachinstallation des Moduls mittels CPAN möglich sein. Im Howto ist ein Beispiel bzlg. cpan zur Nachinstallation dargestellt. Danach sollte es evtl. mit dem Befehl "sudo cpan Net::Telnet" gehen.
Ich habe mit cpan selbst allerdings noch nicht experimentiert. Aber einen Versuch ist es sicher wert.
Gruß
Christof
Hallo zusammen,
Jörg hat hier (http://forum.fhem.de/index.php?topic=13305.msg87200#msg87200) angegeben, wie's geht:
sudo apt-get install libnet-telnet-perl
Ich habe das so gemacht und es hat problemlos funktioniert. Ich kann jetzt vom RasPi an meine 7170 Befehle senden.
Ich hoffe, ich konnte Euch auchmal helfen.
Viele Grüße
Harald
Danke Harald.
Pappn
Hallo,
beim Aufruf: FB_WLANswitch("xxx.xxx.xxx.xxx","user,"password","on")
bekomme ich immer unknow command?
Kann es sein, dass mit Remote_FB_WLANswitch aufrufen muss?
Was mach ich denn falsch?
Danke!
Hallo Mitch,
die Funktion FB_WLANswitch ist in FritzBoxUtils.pm definiert. Da dieses Modul nicht automatisch geladen wird, mußt Du in Deiner 99_myUtils.pm folgende Zeile eintragen:
use FritzBoxUtils;
Gruß
Helmut
Danke Helmut, aber das Problem bleibt bestehen: Unknown command FB_WLANswitch
Hallo Mitch,
die Funtion heißt Remote_FB_WLANswitch und ist in 99_myUtils abgelegt und wird auch so aufgerufen.
Mit "Remote_FB_WLANswitch("xxx.xxx.xxx.xxx","user,"password","on")" sollte es funktionieren.
Sorry, war mein Fehler, da der Aufruf in meinem Code falsch beschrieben war. Ist jetzt korrigiert.
FritzBoxUtils brauchst du dann nicht.
Gruß
Pappn