Gäste WLAN (FRITZ!Box) de-aktivieren on demand

Hallo zusammen,

der Helle hatte die Idee, dass es doch cool wäre, dass Gäste WLAN nur zu aktivieren, wenn es auch wirklich erst benötigt wird (on Demand). Um das über die FRITZ!Box machen zu können, muss man sich normalerweise jedes mal auf der FRITZ!Box anmelden, in den WLAN Reiter gehen, das Gäste WLAN de-aktvieren und auf den Speicher Button drücken. Die alternative wäre, die Zipabox APP öffnen und auf den Schalter Guest_WLAN on/off drücken :).

Gaeste_WLAN

Was passiert nun im Hintergrund, wenn ich auf den on/off Button drücke in der Zipato GUI/APP. Wir haben auf unserem Raspberry Pi Server einen Apache Server laufen der ein CGI Skript zur Verfügung stellt. Dieses CGI Skript bekommt einen Wert „0 = off | 1 = on“ geliefert von der Zipabox GUI / APP, also durch zwei entsprechende Hausregeln. Mit diesem gelieferten Wert greift das Python CGI Skript auf die FRITZ!Box zu und de-aktiviert das Gäste WLAN auf eurer Box und das wars auch schon. Also keine wirklich grosse bzw. komplexe Magie die hier im Hintergrund statt findet.

Wichtig:
Was man aufjedenfall wissen sollte ist, dass wenn das Gast-WLAN de-aktiviert wird, wird das „WLAN-Modul“ auf der FRITZ!Box neugestartet. Das heisst das auch euer „Privater“-WLAN Zugang für ca. 2-3 Sekunden weg ist. Soweit ich es beurteilen kann, ist das eine Limitierung in der FRITZ!Box.

Voraussetzung:

Wir benötigen dafür eine FRITZ!Box die Gast WLAN generell unterstützt und einen Server in meinem Fall ein Raspberry Pi 2, worauf z.B. Raspbian läuft.

Installation und Konfiguration (Raspbian / Ubuntu / Debian):

Installiert auf eurem Server das Apache Paket, aktiviert das CGI Modul für den Apache Server und restartet den Dienst.

sudo apt-get install apache2
sudo a2enmod cgi
sudo service apache2 restart

Im nächsten Schritt, muss das folgende TAR File heruntergeladen guest_wlan_on_off_01 werden und anschliessend auf eurem Server kopiert und entpackt werden. Hier ist das Kommando zum entpacken.

tar xvf guest_wlan_on_off_01.tar

Jetzt solltet Ihr zwei Python Skripte sehen.

  • fritzconnection.py – Eine Python Helper Library, die verwendet wird, um die Änderungen auf der FRITZ!Box durchzuführen.
  • guest_wlan_on_off.py – Das CGI Skript, dass den Wert von der Zipato API/GUI erhält und den entsprechenden Wert in der FRITZ!Box setzt.

In dem Skript „guest_wlan_on_off.py“ Zeile 12, muss das Passwort der FRITZ!Box gesetzt werden. Bitte das Passwort in SingleQuota ‚ ‚ eintragen.

password='PASSWORD'

Anschliessend müssen beide Skripte in das folgende Verzeichniss verschoben werden.

sudo mv fritzconnection.py guest_wlan_on_off.py /usr/lib/cgi-bin/

Prüft im letzten Schritt, dass die Permissions und Berechtigungen der Dateien stimmen.

ls -la
total 32
drwxr-xr-x 2 root root 4096 Apr 4 20:43 .
drwxr-xr-x 46 root root 4096 Apr 4 19:35 ..
-rw-r--r-- 1 root root 18590 Mar 24 18:38 fritzconnection.py
-rwxr-xr-x 1 root root 689 Apr 4 20:28 guest_wlan_on_off.py

Erstellt euch nun ein „virtual Device – Virtual Switch“ in der Zipabox und vergibt einen entsprechenden Namen, z.B. „Gast_WLAN“. Es fehlen nun nur noch die beiden Hausregeln, die wie folgt aussehen.

gast_wlan_on_off

In der Hausregel GASTWLAN AKTIVIEREN – HTTP-ANFORDERUNG KONFIGURIEREN, füllt Ihr nun die folgenden Felder aus:

Methode: POST

URL: http://192.168.178.40/cgi-bin/guest_wlan_on_off.py?state=1

 

Enstprechend in der Hausregel GASTWLAN DEAKTIVIEREN – HTTP-ANFORDERUNG KONFIGURIEREN den Wert 1 durch eine 0 ersetzen:

Methode: POST

URL: http://192.168.178.40/cgi-bin/guest_wlan_on_off.py?state=0

 

Beachtet natürlich, dass Ihr hier eure IP Adresse von eurem Server verwenden müsst, anstatt meine „192.168.178.40“. Sobald der Switch und die Regeln erstellt wurden, muss anschliessend die Zipabox synchronisiert werden.

Ich wünsche euch viel Spaß bei der Umsetzung und falls Ihr Fragen / Hilfe braucht, dann hinterlasst ein Kommentar.

Viele Grüße,
Gregor

14 thoughts on “Gäste WLAN (FRITZ!Box) de-aktivieren on demand”

  1. wolf sagt:

    Hi,

    bedenken muss man hierbei nur, dass in der FritzBox komplett alle WLANs neu gestartet werden. Also wenn man das so ausführt im Zusammenhang mit dem Anwesenheits-Skript, ist man mal vorrübergehend kurz nicht da und wieder da.

    Wenn man das mit Regeln verknüpft hat, könnte einiges verrückt spielen.

    Oder wie lässt sich das umgehen?

    Grüße

  2. gregor sagt:

    Hallo Wolf,

    danke für das Feedback. Ich habe das erst vor ein paar Tagen implementiert und mir ist das noch gar nicht aufgefallen, dass das Primary WLAN immer neugestartet wird. Ich schaue es mir heute Abend einmal an, aber ich kann mich nicht erinnern, dass ich noch andere Möglichkeiten/Optionen gesehen habe die zur Verfügung stehen über die FRITZ!Box API.

    VG

  3. wolf sagt:

    Hi,

    super! Danke!

    Skript funktioniert aber generell 😉

    Grüße

  4. DUC750 sagt:

    Super! Genau diese „kleinen“ Dinge sind es, die Einsteigern wie mir die Materie näher bringen! Absolut Top! Gerne mehr von der leichteren Kost. PS. Vermutlich bekommt man das auch auf einem Synology NAS zum laufen, oder?

  5. wolf sagt:

    Hi DUC750,

    ja klar. Auf dem Synology NAS kannst du auch einen Webserver installieren und das Script entsprechend bereitstellen.

    Grüße

  6. Thomas sagt:

    Wenn man ein Fritzfon hat, kann man das WLAN einfach damit per Tastendruck Win-Win-Situation oder ausschalten.

    1. Thomas sagt:

      Das war leider die Autokorrektur.
      Gemeint war “ per Tastendruck ein und ausschalten.“

  7. wolf sagt:

    Hi Thomas,

    das geht auch! 🙂 Aber so könnte man das mit Regeln koppeln. Ich möchte z.B. das jede Nacht gegen 2 Uhr mein Gast-WLAN ausgeschaltet wird. Weil es hier häufig vergessen wird. Dafür ist Gregors Script ideal.

    Grüße

  8. gregor sagt:

    @wolf: Im Zusammenspiel mit Connection Tracking denke ich, muss das schon ein kleiner Zufall sein, dass Du genau das Gäste-WLAN de-aktivierst, wo gerade der Abruf (ca. 1-2 sek.) auf die Fritz!Box läuft, um zu schauen, welche Geräte on-offline sind. Eine 100% Garantie ist aber definitiv nicht gegeben, da muss ich Dir schon recht geben:).
    Kann man in den Hausregel eventuell sagen wie: Wenn der Status länger als 2-3min. offline (inaktiv) ist, dann führe mir die Regel erst aus? Muss ich gleich mal schauen, ob die Zipabox sowas kann, aber ich denke schon. Das wäre denke ich eventuell eine guter „Workaround“.

    @DUC750: Wie es schon wolf erwähnt hat, sollte es auch auf einer Synology Box definitiv laufen. Man müsste nur einmal in der apache Konfig schauen, auf welches Verzeichnis der ScriptAlias zeigt und dann dort die beiden Skripte kopieren. Ansonsten einfach den Webserver starten und aus den Synology Repos Python2.7 installieren. Dann noch ssh Zugang aktivieren, damit Du die Skripte auf die Synology Box hochladen und entpacken kannst. Ich habe auch eine Synology Box und ich kann Dir weiter helfen, falls Du in Probleme läufst. Grundkenntnisse in Linux wären natürlich auch von Vorteil.

    @Thomas: Ich habe kein Fritz!Phone, daher war es mir nicht klar, dass das auch so einfach geht:). Gut zu wissen!

    VG,
    Gregor

    1. DUC750 sagt:

      @Gregor und Wolf, Klasse. Ich habe zwar noch keine synology zu Hause, steht aber ganz oben auf meiner Liste. Ansonsten hätte ich mir auch einen Pi zugelegt, mir ist es aber lieber möglichst wenige Geräte in meiner Infrastruktur zu haben. Mit Linux habe ich mich zwar nur am Rande befasst, aber was noch fehlt Google ich mir zusammen .

      PS. Habe den Eindruck hier entsteht eine richtig feine community rund um die Zipabox. Ich fände es Klasse, wenn es ein Forum zum Blog gäbe, was denkt Ihr?

      1. derHelle derHelle sagt:

        Hi DUC750,

        schau mal hier 😉 http://zipabox.de/forums/

        Gruß Helle

        1. DUC750 sagt:

          hab ich glatt übersehen, super

  9. gregor sagt:

    @DUC750: Sag bescheid wenn Du deine Synology Box hast und in Probleme läufst bzw. noch generelle Fragen hast.
    Ich kann mal mit Helle reden, wie er das Thema Forum sieht.

  10. derHelle derHelle sagt:

    Sehr geil Gregor! Hat auf Anhieb geklappt! Danke!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.