Ankündigung

Einklappen
Keine Ankündigung bisher.

fritz!Box WLAN über Bus schalten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    fritz!Box WLAN über Bus schalten

    Hallo Gemeinde,

    ich suche nach einer Möglichkeit das WLAN meiner Fritzbox 7390 anwesenheitsabhängig mittels EibPC zu schalten.
    So soll das WLAN nach Betätigung der "Gute Nacht" Taste bis zur ersten Bewegung im Haus am nächsten Morgen oder solange sich das Haus im Abwesenheitsmodus befindet ausgeschaltet werden. Die Logik mittels EibPC ist soweit trvial, was fehlt sind die Befehle, mit der ich die Fritzbox entsprechend steuern kann.

    Meine Suchen hier im Forum und im WWW haben leider noch keine brauchbaren Ergebnisse gebracht. Andererseits kann ich mir nicht vorstellen, dass das nicht möglich ist.

    Ich bitte um sachdienliche Hinweise oder Links.

    Besten Dank vorab
    Uwe

    #2
    ich "murkse" auch an diesem Thema herum - leider mit mäßigem Erfolg

    Meine Versuche gehen über telnet - manchmal kann ich mich einloggen, aber leider nicht reproduzierbar.

    Mein Murks-Code (bitte nicht prügeln)

    Code:
    //-------------------------------------------------------------------------------------------
    // Fritzbox Telnet Kommando senden
    //  las Test: echo "ATDT**9" | nc 127.0.0.1 1011 löst Klingeln aus.... (via telnet)
    // mit FB connecten
    // Steuervariable für Telnet - Aktionen INIT
    FB_telnet_state=0u08
    FB_telnet_trigger= AUS
    FB_telnet_ConnectionState=6u08
    FP_IP=192.168.1.202
    FB_telnet_Port=23u16
    FB_telnet_GET_0=$hoerb01#$
    FB_telnet_GET_1=$echo "ATDT**9" | nc 127.0.0.1 1011$
    FB_telnet_count=0
    FB_telnet_Result_Data=$$c1400
    FB_telnet_Res_Port=0u16
    FB_telnet_Res_IP=0u32
    FB_telnet_Result0=$$c1400
    FB_telnet_Result1=$$c1400
    FB_telnet_Result2=$$c1400
    FB_telnet_Result3=$$c1400
    FB_telnet_Result1_len=0u16
    
    if FB_telnet_trigger then FB_telnet_state=1;FB_telnet_count=FB_telnet_count+1 endif
    
    // wenn über FB_telnet_trigger = EIN ausgelöst, dann
    if FB_telnet_state==1 then \\
    	FB_telnet_ConnectionState=connecttcp(FB_telnet_Port, FP_IP); \\
    	FB_telnet_trigger=AUS; \\
    	endif
    
    	if event(readtcp(FB_telnet_Res_Port,FB_telnet_Res_IP,FB_telnet_Result0)) then \\
    		write('10/0/99'c14,convert(FB_telnet_Result0,$$c14));\\
    		FB_telnet_Result1_len=size(FB_telnet_Result0) endif
    
    	if after(change(FB_telnet_ConnectionState),1000u64) then \\
    		sendtcp(FB_telnet_Port, FP_IP,$hoerb01#$,13); \\
    		FB_telnet_state=2; \\
    		 endif
    
    // TCP Nachricht senden (login)
    //    if after(change(FB_telnet_state) ,2000u64) \\
    //	and FB_telnet_state == 2u08 then \\
    //	sendtcp(FB_telnet_Port, FP_IP,$hoerb01#$,13,10); \\
    //	endif
    
    	if event(readtcp(FB_telnet_Res_Port,FB_telnet_Res_IP,FB_telnet_Result1)) \\
    		and FB_telnet_Res_IP == FP_IP and FB_telnet_Res_Port == FB_telnet_Port and \\
    		FB_telnet_state==2 then \\
    		FB_telnet_state=3; \\
    		endif
    
    // Telnet Kommando senden
       if after(change(FB_telnet_state) ,1000u64) \\
    	and FB_telnet_state == 3u08 then \\
    	sendtcp(FB_telnet_Port, FP_IP, FB_telnet_GET_1,13); \\
    	FB_telnet_state=4; \\
    	endif
    
    	if event(readtcp(FB_telnet_Res_Port,FB_telnet_Res_IP,FB_telnet_Result3)) \\
    		and FB_telnet_Res_IP == FP_IP and FB_telnet_Res_Port == FB_telnet_Port and \\
    		FB_telnet_state == 4u08 then \\
    		FB_telnet_state=5; \\
    		endif
    
    // Verbindung schließen
       if (after(change(FB_telnet_state) ,1000u64) \\
    	and FB_telnet_state == 5u08) then \\
            closetcp(FB_telnet_Port,FP_IP); \\
            FB_telnet_trigger = AUS; \\
            FB_telnet_ConnectionState = 6u08; \\
    	FB_telnet_state=6; \\
        	endif
    
       if (after(change(FB_telnet_state) ,5000u64) \\
    	and FB_telnet_state >= 1u08) then \\
            closetcp(FB_telnet_Port,FP_IP); \\
            FB_telnet_trigger = AUS; \\
            FB_telnet_ConnectionState = 6u08; \\
    	FB_telnet_state=7; \\
        	endif
    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    Kommentar


      #3
      Ich hätte ne einfachere Lösung:

      Zweiten Wlan AP kaufen und darüber das WLAN laufen lassen ....
      so kann dieses Gerät mittels einer beliebigen schaltbaren Stedo....

      Wlan am Router selber dann abschalten....

      Kommentar


        #4
        Zitat von macgyver Beitrag anzeigen
        Ich hätte ne einfachere Lösung:

        Zweiten Wlan AP kaufen und darüber das WLAN laufen lassen ....
        so kann dieses Gerät mittels einer beliebigen schaltbaren Stedo....

        Wlan am Router selber dann abschalten....
        Auch eine Idee - aber ehrlich gesagt, gefällt mir der Ansatz von EPIX besser. Es muss doch ein TCP Kommando für die FB zum schalten des WLAN geben?

        Kommentar


          #5
          gibt es, aber solange das mit dem Klingeln nicht funktioniert

          /etc/init.d/rc.net wlanstop
          bzw.
          /etc/init.d/rc.net wlanstart

          ähhh eigentlich gehört das Ganze in den eibPC-Bereich
          EPIX
          ...und möge der Saft mit euch sein...
          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

          Kommentar


            #6
            Ich habe mich mal an den Suppport von AVM gewandt. Dort konnte die Frage, mit welchem Netzwerkbefehl das WLAN geschaltet werden kann, auch nicht spontan beantwortet werden. 2 Tage später erhielt ich dann die Antwort:

            "...vielen Dank für Ihre Geduld.
            Die von Ihnen gewünschte Funktion wird derzeit leider nicht unterstützt.

            Gerne habe ich Ihre Anfrage daher als Verbesserungsvorschlag an den zuständigen Produktmanager in unserem Haus weitergeleitet."


            Ich kann das nicht glauben, dass so ein vergleichsweise sinnvolles Feature von der Fritz!Box nicht unterstützt wird.


            Am Ende werde ich doch noch macgyver's gute Idee abe unsmarte Variante umsetzen müssen.

            Kommentar


              #7
              Wenn man einen PHP fähigen Webserver laufen hat dann kann man es so machen wie hier beschrieben:
              Fritz!Box API für PHP (inkl. Login-Sessions)
              Bei mir ist es ein Synology NAS auf dem schon openHAB die Steuerung übernimmt.

              Holger

              Kommentar


                #8
                Ist hier eigentlich schon mal jemand weitergekommen? Das ganze ist im Prinzip nicht auf PHP beschränkt. Derjenige hat sich halt nur für PHP entschieden, weil er es kann und ist dabei mehr oder weniger wie folgt vorgangen:

                Wie oben schon erwähnt, muss man im Webinterface beobachten, was bei der gewünschten Aktion passiert. Ältere Funktionen schicken ein POST-Request mit den Änderungen an ein zentrales Skript (etwa die Anrufbeantwortersteuerung). Neue Funktionen arbeiten mit einem speziellen LUA-Script (etwa die WLAN-Gastzugang). Man muss sich also mit dem Firebug oder ähnlichem auf die Lauer legen und schauen, was für POST-Request im Hintergrund ablaufen, während man die gewünschte Funktion im Webinterface benutzt. Das baut man dann mit einem entsprechenden Script nach. Die API hilft da nur so weit, dass sie die Sessionverwaltung übernimmt und vereinfachte Methoden für POST und GET anbietet. Den Rest schreibt man sich nach Wunsch in ein spezialisiertes Script bzw. passt eins der bestehenden entsprechend an. Nicht jeder braucht zum Beispiel ein Logging oder möchte den Erfolg der Aktion überprüfen.
                Also quasi mittels "reverse engineering" der Fritzbox Weboberfläche. Da darüber alle Funktionen der Fritzbox steuerbar sind, müssen nur die richtigen Requests abgesetzt werden. Ob die von der Fritzbox Weboberfläche kommen, oder von einem PHP-Script auf einem anderen Server oder aus einer webbasierten Visu, ist ansich völlig Schnuppe. Also, korrigiert mich, aber theoretisch müsste das gehen.

                Sind hier Programmierer im Forum? Das müsste doch theoretisch mit einer x-beliebigen Programmiersprache, die HTTP-Request senden kann, funktionieren.

                Ich hab vor Jahren mal mit .Net ein Programm geschrieben, welches einfach die Weboberfläche der Fritzbox geparst hat, dann im Login-Prompt in der entsprechenden Textbox das Passwort "eingegeben" hat, das POST des Login-Buttons ausgelöst, zur WLAN-Seite navigiert, die Checkbox für "WLAN aktiv" gesetzt hat (bzw. umgekehrt) und dann wieder den "übernehmen"-Button gedrückt hat. Quasi ne Automatisierung für die manuell durchzuführenden Schritte. Zugegeben unschön, aber tat was es sollte: Programm gestartet, zack WLAN an/aus ... dauerte nur wenige Sekunden Hat aber leider nur bei mir funktioniert und nicht bei der Fritzbox eines Kumpels und hab nie rausgefunden warum. Irgendwann hab ichs dann auch nicht mehr gebraucht, aber im Zusammenspiel mit KNX wird das Thema irgendwie wieder interessant.

                Kommentar


                  #9
                  Sollte das OpenHAB nicht schon direkt können: https://github.com/openhab/openhab/w...tz-Box-Binding

                  Ich werde es bei Gelegenheit einmal ausprobieren.

                  Gruss,

                  Matthias

                  Kommentar


                    #10
                    Über Smarthome.py klappt das wunderbar, nutze ich nun schon seit knapp einem halben Jahr stabil.

                    Kommentar


                      #11
                      bleibt nur die Frage warum es in eibPC noch Keiner geschafft hat....
                      das Timing-Verhalten beim eibPC- tcp hat ja offenbar seine Tücken (siehe auch den Thread "sendtcp..."
                      EPIX
                      ...und möge der Saft mit euch sein...
                      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                      Kommentar


                        #12
                        Hallo,

                        wer weder openHAB noch smarthome.py o.ä. im Einatz hat, kann sich meines Skriptes bedienen, welches ich vor einiger Zeit mal geschrieben habe:

                        fritzwlan.pl

                        PS: Nutze ich übrigens immer noch im Zusammenhang mit openHAB, obwohl es dort inzwischen ein natives Binding gibt.

                        Gruß,
                        thoern

                        Kommentar


                          #13
                          Auch wenn das OT ist:
                          Zitat von EPIX Beitrag anzeigen
                          bleibt nur die Frage warum es in eibPC noch Keiner geschafft hat....
                          keine Ahnung
                          das Timing-Verhalten beim eibPC- tcp hat ja offenbar seine Tücken (siehe auch den Thread "sendtcp..."
                          Das Problem dort konnte ich hier noch nicht nachvollziehen. Soviele "Tücken" hat das sicher nicht, sondern es kommt da offenbar einiges zusammen.
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            meinen "Murks"-Code habe ich am ANfang gepostet - aber ich bin da irgendwie nicht mehr weitergekommen...
                            Nachdem ich genug Zeit verschi*** habe, ist mir eine andere "Baustelle" wichtiger gewesen und ich habe mich auf die "Männer"-Visu gestürzt
                            EPIX
                            ...und möge der Saft mit euch sein...
                            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                            Kommentar


                              #15
                              Zitat von enertegus Beitrag anzeigen
                              Das Problem dort konnte ich hier noch nicht nachvollziehen. Soviele "Tücken" hat das sicher nicht, sondern es kommt da offenbar einiges zusammen.
                              Das "Problem" ist die Sache mit der SessionID und dem Access Token der dabei generiert wird. Es ist einfach schwierig das entsprechend nachzuprogrammieren, da die entsprechende Befehlssatz nicht zur Verfügung stehen um einfach durch die Authentifizierung durchzukommen und dann den Token für die einzelnen Befehle an die FB zu verwenden.
                              Der bisherige Callmanager setzte noch auf die Telnet-Hintertüre auf, ist aber Read-Only und wertet nur die Anrufe aus...

                              Kommentar

                              Lädt...
                              X