WLAN per FHEM ein- und ausschalten

Begonnen von sylvester, 03 Oktober 2013, 12:06:17

Vorheriges Thema - Nächstes Thema

sylvester

Hallo zusammen,

ich weiß, dass es schon einige Anfragen zu dem Thema gibt, aber so eine aktuelle, umfassende habe ich noch nicht gefunden. Vielleicht wird dieser Thread ja so etwas ...

Also:
Mein FHEM läuft auf einem TuxRadio V2. Mein WLAN kommt von einer Fritz!Box 7390.
Nun würde ich gerne das normale WLAN (nicht Gast-WLAN) per FHEM ein- und ausschalten (beispielsweise in der Nacht oder bei Abwesenheit).

Wenn man im Netz sucht, finden sich da mehrere Möglichkeiten:

1. Möglichkeit:
FHEM kann die Telefonsignale nutzen.
http://www.fhemwiki.de/wiki/Fritzbox:_WLAN_ein/ausschalten

2. Möglichkeit:
FHEM kann Telnet nutzen.
http://forum.fhem.de/index.php?t=msg&goto=96344&rid=0&srch=wlan%20schalten&SQ=&#msg_96344

3. Möglichkeit:
FHEM kann ein php-Script nutzen.
http://www.fhemwiki.de/wiki/Fritzbox_via_URL_(http)_steuern


4. Möglichkeit:
???

Nun habe ich verstanden, dass die erste Möglichkeit zumindest bei mir ausscheidet, da mein FHEM nicht auf der Fritzbox läuft.
Die zweite Möglichkeit ist mir vom Umfang am sympathischsten, ich weiß allerdings nicht, ob auf dem TuxRadio Telnet läuft und durch FHEM nutzbar ist.
Bleibt also ggf. die dritte Möglichkeit mit php-Script. Wobei ich hier schon daran scheitere, dass ich nicht weiß, in welches Verzeichnis die php-Dateien gehören ...

Gibt es hier jemanden mit einer ähnlichen Konfiguration (FHEM nicht auf Fritzbox, offizielle Fritzbox-Firmware), der einen Weg schon erfolgreich umgesetzt hat? Wie sind die Vor- und Nachteile der einzelnen Möglichkeiten?

Ich würde mich freuen, wenn ihr mich auf den richtigen Pfad bringen könntet ...

Vielen Dank und viele Grüße

Stephan

PeMue

Hallo Stephan,

Zitat... da mein FHEM nicht auf der Fritzbox läuft.
korrekt.

Zitat... Telnet läuft und durch FHEM nutzbar ist.
So wie ich den Thread verstanden habe, brauchst Du nicht das telnet (was Du auf der Tux Kommandozeile mit der Eingabe von telnet testen könntest), sondern die Perl telnet Module. Wie die installiert werden, weiß ich momentan leider auch nicht.

Zu 3. bzw. 4. kann ich leider auch nichts sagen.

Falls Du eine Löstung hättest, könnte mich aber als Tester (telnet auf der FritzBox vom Raspberry Pi an- bzw. abschalten) zur Verfügung stellen ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

sylvester

Hallo,

ich habe mal ein wenig probiert.

Zunächst habe ich hier das Telnet-Perl-Modul herunter geladen.
Die Datei Telnet.pm habe ich dann in folgendem Pfad abgelegt: /opt/fhem/www/lib/Net

Dann habe ich noch ein paar Änderungen an meiner Datei "99_myUtils.pm" durchgeführt:
Zunächst das neue Telnet-Perl-Script einbinden:
use lib "/opt/fhem/www/lib/";

Und natürlich die Routine zum ein- und ausschalten des WLANs von der Fritzbox.
Die habe ich eigentlich 1:1 von pappn übernommen. Nur der Beispielaufruf in seinem Code ist falsch ...

sub FB_WLANswitch (@) {
my ($ip,$password,$cmd) = @_;
use Net::Telnet;
my $telnet = new Net::Telnet ( Timeout=>15, Errmode=>'die');
$telnet->open($ip);
$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');
}


In meiner fhem.cfg-Datei steht dann folgendes:

# WLAN
#######
define WLAN_OnOff dummy
attr WLAN_OnOff devStateIcon [Oo]n:WLAN_Status.1 [Oo]ff:WLAN_Status.0
attr WLAN_OnOff fp_Grundriss 160,265,1,WLAN
attr WLAN_OnOff room R_Arbeitszimmer
attr WLAN_OnOff setList on off
attr WLAN_OnOff webCmd on:off
define FileLog_WLAN_OnOff FileLog ./log/WLAN_OnOff-%Y.log WLAN_OnOff
attr FileLog_WLAN_OnOff logtype text
attr FileLog_WLAN_OnOff room Sys_Logs
define WLAN_OnOff_Schalten notify WLAN_OnOff { if (Value("WLAN_OnOff") =~ /[Oo]n/) {FB_WLANswitch("192.168.178.1","GanzGeheimesPasswort","on") } else {FB_WLANswitch("192.168.178.1","GanzGeheimesPasswort","off") }}
attr WLAN_OnOff_Schalten room hidden


Das scheint zu funktionieren. Nicht so schön ist natürlich, dass das Passwort dort in Klartext steht ...

Viele Grüße

Stephan