FHEM Forum

FHEM - Hardware => FRITZ!Box => Thema gestartet von: pappn am 26 September 2013, 22:49:19

Titel: FB via telnet steuern und werte auslesen
Beitrag von: pappn am 26 September 2013, 22:49:19
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
Titel: Aw: FB via telnet steuern und werte auslesen
Beitrag von: PeMue am 04 Oktober 2013, 16:41:05
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
Titel: Aw: FB via telnet steuern und werte auslesen
Beitrag von: pappn am 07 Oktober 2013, 11:49:16
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
Titel: Aw: FB via telnet steuern und werte auslesen
Beitrag von: Harald am 07 Oktober 2013, 17:22:14
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
Titel: Aw: FB via telnet steuern und werte auslesen
Beitrag von: pappn am 07 Oktober 2013, 23:43:53
Danke Harald.

Pappn
Titel: Antw:FB via telnet steuern und werte auslesen
Beitrag von: Mitch am 15 Oktober 2013, 12:57:33
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!
Titel: Antw:FB via telnet steuern und werte auslesen
Beitrag von: hckoe am 16 Oktober 2013, 15:47:29
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
Titel: Antw:FB via telnet steuern und werte auslesen
Beitrag von: Mitch am 16 Oktober 2013, 16:03:47
Danke Helmut, aber das Problem bleibt bestehen: Unknown command FB_WLANswitch
Titel: Antw:FB via telnet steuern und werte auslesen
Beitrag von: pappn am 16 Oktober 2013, 19:06:43
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