Ankündigung

Einklappen
Keine Ankündigung bisher.

FritzBox Anruf per GA (Türklingel) Plugin

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] FritzBox Anruf per GA (Türklingel) Plugin

    UPDATE
    Nach diversen Firmware-Updates funktioniert das Plugin wie unten angegeben nicht mehr. Die angepasste und funktionsfähige Version gibt es hier: LINK


    Tag zusammen,

    nachdem ich feststellen musste das AVM in neueren Firmwares für die FritzBoxen den Login-Mechanismus geändert hat habe ich mich für meine Haustür mal drangemacht, das in ein Plugin zu gießen.

    Das Plugin löst bei einer 1 auf der definierten Gruppenadresse auf der definierten FritzBox einen Anruf aus. Anruf-Absender und Empfänger können dabei im Gegensatz zur Telnet-Variante beide konfiguriert werden.

    Funktioniert hier tatellos, bei Fragen und Anregungen versuche ich natürlich gern behilflich zu sein :-)

    PHP-Code:
    ##################
    # Fritz-Box GA-Wähler#
    ##################
    # Wiregate-Plugin
    # (c) 2012 Amaridian under the GNU Public License

    use LWP;
    use 
    Digest::MD5 'md5_hex';

    # Definitionen
    my $klingel_ga "1/2/3";
    my $fritz_ip '192.168.2.1';
    my $fritz_pw  '0815';
    my $call_from '50';
    my $call_to '**610';

    # Plugin an Gruppenadresse "anmelden"
    $plugin_subscribe{$klingel_ga}{$plugname} = 1;
    $plugin_info{$plugname.'_cycle'} = 0;

    # Nur bei einer gesendeten 1 reagieren
    if ($msg{'apci'eq "A_GroupValue_Write" && $msg{'dst'eq $klingel_ga) {
    if (
    int($msg{'data'}) == ) {

    # Login-Challenge und evtl. vorhandene Session-ID holen
    my $user_agent LWP::UserAgent->new;
    my $http_response $user_agent->post('http://'.$fritz_ip.'/cgi-bin/webcm',
    [
    'getpage' => '../html/login_sid.xml',
    'sid' => defined($plugin_info{$plugname.'_sid'}) ? $plugin_info{$plugname.'_sid'} : '0',
    ],
    );
    $http_response->content =~ /<SID>(\w+)<\/SID>\s*<Challenge>(\w+)<\/Challenge>/and my $sid = $and my $challengeStr = $2;

    # Wenn noch eine gültige Session da ist, nehmen wir die
    if($sid eq '0000000000000000'){
    # Challenge zusammen mit PW hashen laut http://www.avm.de/de/Extern/files/session_id/AVM_Technical_Note_-_Session_ID.pdf
    my $ch_Pw "$challengeStr-$fritz_pw";
    $ch_Pw =~ s/(.)/$chr(0)/eg;
    my $md5 lc(md5_hex($ch_Pw)); #warum auch immer AVM hier UTF16LE haben möchte...
    my $challenge_response "$challengeStr-$md5";

    # Mit der frisch errechneten Challenge-Response die Session-ID abholen
    $http_response $user_agent->post('http://'.$fritz_ip.'/cgi-bin/webcm', [
    "login:command/response" => $challenge_response,
    'getpage' => '../html/de/menus/menu2.html',
    ],
    );
    $http_response->content =~ /<input type="hidden" name="sid" value="(\w+)" id="uiPostSid">/and $sid = $1;
    $plugin_info{$plugname.'_sid'} = $sid;
    }

    # den gewünschten Wählbefehl absetzen
    $http_response $user_agent->post('http://'.$fritz_ip.'/cgi-bin/webcm',
    [
    'getpage' => '../html/login_sid.xml',
    'sid' => $sid,
    'telcfg:settings/UseClickToDial' => 1,
      
    'telcfg:command/Dial'            => $call_to,
      
    'telcfg:settings/DialPort'       => $call_from,
    ],
    );
    return 
    " Klingel betätigt und Ruf abgesetzt"
    }

    Über telcfg und Konsorten hat man dann Zugriff auf so ziemlich jede Funktion und Einstellung die eine moderne Fritzbox so bietet. Zum Einlesen kann man z.B. hier mal anfangen: Telcfg - Fritz!Box

    Ich bin drauf und dran meine Starface rauszuschmeißen und Wiregate samt Fritzbox den Job zu geben...

    Grüße
    Christian
    Zuletzt geändert von amaridian; 05.01.2017, 10:09.

    #2
    Sieht schlüssig aus, nicht vergessen, für die Nachwelt irgendwie bitte ins SVN

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      So reiche er mir die Zugangsdaten :-)

      Kommentar


        #4
        Einfach: Account auf Sourceforge anlegen, Chris M. oder mir diesen "bescheid" sagen..

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #5
          Auflegen

          Wie lange klingelt das Telefon?
          Gibt es einen Timeout oder muss noch der Befehl zum Auflgen geschickt werden.

          Gruß

          Kommentar


            #6
            Zitat von johnson Beitrag anzeigen
            Wie lange klingelt das Telefon?
            Bei mir klingelt mein Gigaset-Mobilteil 5 Mal. Ich hab mir für den internen Ruf einen anderen Rufton eingestellt, damit man Telefon von Tür unterscheiden kann...

            Zitat von johnson Beitrag anzeigen
            Gibt es einen Timeout oder muss noch der Befehl zum Auflgen geschickt werden.
            Soweit ich weiß gibt es keinen Timeout. Falls die Voreinstellung zu lang ist kann man mit "Hangup" den Ruf vorzeitig beenden. (siehe Telcfg - Fritz!Box)

            Kommentar


              #7
              Hallo Christian,

              geht das mit jeder Fritzbox Fon ? ich habe eine 6370. Diese hat jedoch nur einen FON ausgang. Ich meine gelesen zu haben, dass man eine haben muss die auch FON2 hat.

              Gruß Manuel

              Kommentar


                #8
                Das hängt soweit ich weiß auch an der Firmware-Version... Wie ist die denn?

                Kommentar


                  #9
                  Hallo Christian,

                  wie groß ist die zeitliche Verzögerung von Klingel drücken bis zum Telefonklingeln in etwa?

                  Gruß
                  Andreas

                  Kommentar


                    #10
                    Nicht schlecht, welche Türklingel/station ist denn hier im Einsatz?

                    Grüße

                    Kommentar


                      #11
                      Wir haben uns bei der Haustürklingel erstmal gegen eine Türstation und für die klassische Türklingel entschieden. Das Klingelschild habe ich von Klingelplatte und Türklingel kaufen - Mabea-Edelstahlklingeln.de

                      Vom Drücken der Klingel bis zum Klingeln des Telefons vergeht etwa eine Sekunde.

                      Kommentar


                        #12
                        Sprich der Taster an der Haustüre hängt an einem Binäreingang. Beim Drücken wird eine GA (auf 1) gesetzt und mit dem Plugin ruft das Wiregate die Fritzbox an!

                        Ergo wäre eine Sprechverbindung nicht möglich!

                        Kommentar


                          #13
                          Im Moment ist das so umgesetzt, ja. Das war aber eher eine Kosten- als eine Wunsch-Entscheidung :-)

                          Sollte mir irgendwann der Sinn nach Sprechverbindung kommen dann kommt der Kasten in den Installationskasten hinterm Klingelschild:

                          SIP paging snom PA1 Durchsagesystem 

                          Dafür gibt es vom Hersteller eine "Türstation"-Firmware, womit auf Knopfdruck eine definierte Nummer antelefoniert wird. Hier kann dann per DTMF einer der vier vorhandenen IOs angesprochen werden um z.B. den Türöffner zu betätigen.

                          Kommentar


                            #14
                            wird also doch mal Zeit die Klingel auf den Bus zu bringen
                            Hatte ich schon lange vor ... fehlt bloss gerade der Aktor damit auch der klassische Gong noch funktioniert.

                            Eine Sekunde find ich überhaupt nicht kritisch.
                            Umgezogen? Ja! ... Fertig? Nein!
                            Baustelle 2.0 !

                            Kommentar


                              #15
                              Hallo,

                              die Version ist :

                              Firmware: FRITZ!OS 05.22
                              Firmware-Version: 111.05.22

                              Gruß Manuel

                              Kommentar

                              Lädt...
                              X