Fritzbox anbinden ohne Telnet???

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gerrit
    MS Profi
    • 26.08.2015
    • 944

    #16
    Zitat von dr_dee
    So, habe es bei mir getestet. Funktioniert leider nicht

    Es hatte bis zum Wochenende funktioniert. Ich musste die FritzBox auf Werksteinstellungen zurücksetzen. Seit dem bekomme ich es nicht mehr aktiv, obwohl er mir am Telefon aktiv anzeigt, wenn ich #96*7* wähle.
    Gibt es noch andere Wege?

    Gruß Lars
    Hi Lars,

    ich glaub hier gibts ein Missverständnis Ich sprach hier nur vom Callmonitor, da dass die einzige Komponente ist, die du du brauchst um die Anrufinformationen zu extrahieren. Telnet geht trotzdem nicht. Ich glaub du musst uns einfach aufklären, warum (!) du Telnet benötigst. Ansonsten reden wir hier glaub aneinander vorbei und keiner weiß, an welcher Stelle du Hilfe brauchst. Kannst du das bitte schreiben, was jetzt nicht mehr geht oder was du mit Telnet versuchst zu erreichen? Wie gesagt, bei mir geht die Anrufer-Signalisierung mit Loxone weiterhin auch ohne Telnet.

    Kommentar

    • dr_dee
      LoxBus Spammer
      • 10.10.2015
      • 275

      #17
      Hi Gerrit,

      ich habe mich wohl falsch ausgedrückt. Es geht mir hier nur um den Callmonitor. Ich habe da wohl was verwechselt. Sorry.
      Die Fritzbox habe ich bislang so abgefragt.


      #define RD_BLOCK_SIZE 1000
      STREAM* pTcpStream = stream_create("/dev/tcp/192.168.21.1/1012",1,0); // create tcp stream - IP-Adresse von der Fritzbox
      char szBuffer[RD_BLOCK_SIZE]; //Eingehender String z.B. Es ruft jemand an --> "09.01.13 21:51:03;RING;2;Anrufernummer;Empfängernummer;SIP 0;"
      int nCnt;
      int i;
      int pos;
      .
      .
      .

      Leider funktioniert das irgendwie nicht mehr. Ich habe auch schon den Callmonitor neu angestoßen mit #96*5*

      Ich hoffe ihr könnt mir weiterhelfen.

      Gruß
      Lars
      Wohnhaus Baujahr 2013
      2x Miniserver Go Gen. 2; 1x Miniserver Gen. 1; 5x Extensions; 4x Relay; 4x Dimmer; 1x 1-Wire; KNX-Sensorik/Aktorik; Smart Socket Air; Bewegungsmelder Air; Tür- und Fensterkontakte Air; Wassersensor Air; Touch Air; IR Control Air; Ceiling Light Air
      Loxberry (Raspberry); Philips Hue; Alexa2Lox; Shelly

      Kommentar

      • Gerrit
        MS Profi
        • 26.08.2015
        • 944

        #18
        Kannst du mal deinen ganzen Code posten? Der Anfang sieht so aus, als ob nur am Anfang eine TCP Verbindung aufgemacht wird. So eine Version hatte ich auch zu Beginn, aber die ist nicht dauerhaft stabil. Irgendwann geht die Verbindung kaputt, aber das Programm merkt nix davon (z.B. bei einem FritzBox Neustart nach einem Firmware Update , waren bei mir aber auch nicht nur Neustarts schuld). Bei meiner Version (siehe oben) wird jede Sekunde abgefragt und dazu eine neue Verbindung aufgemacht.
        Hast du schon deinen Miniserver neugestartet und bleibt das Problem dann bestehen? Wenn es dann wieder geht, musst du deinen Code anpassen.

        Kommentar

        • Gast

          #19
          Hallo zusammen,

          ich klinke mich hier mal mit ein.
          Ich würde gerne bei mir das Telefon klingeln lassen wenn jemand an der Tür die Klingel drückt. Ist das möglich? Das wäre ein Traum........
          Ich habe die Fritzbox 7490.

          Danke

          Gruß Juri

          Kommentar

          • dr_dee
            LoxBus Spammer
            • 10.10.2015
            • 275

            #20
            Gerrit hier der Code

            // write program here in PicoC
            // Fritz Box - Anrufmonitor
            // (c) Lars Diekmann - 15.02.2015

            //---------------------------------------------------------------------------
            //----- Bei Anruf!!! -----
            //----- Wenn AI1=1 wird Ausgang AQ1=1 gesetzt -----
            //----- Wenn AI2=0 wird Ausgang AQ2=1 gesetzt -----
            //----- TQ1 - Textausgang eingehender Anruf für Tracker (nur Rufnummer) -----
            //----- TQ2 - Textausgang ausgehender Anruf für Tracker (nur Rufnummer) -----
            //---------------------------------------------------------------------------


            // IP-Adresse an die der Fritz Box anpassen. Es muss auch Telnet in der Fritz Box aktiviert werden. Mit einem angeschlossenem Telefon #96*7* wählen!

            #define RD_BLOCK_SIZE 1000


            STREAM* pTcpStream = stream_create("/dev/tcp/192.168.21.1/1012",1,0); // create tcp stream - IP-Adresse von der Fritzbox
            char szBuffer[RD_BLOCK_SIZE]; //Eingehender String z.B. Es ruft jemand an --> "09.01.13 21:51:03;RING;2;Anrufernummer;Empfängernummer;SIP 0;"


            int nCnt;
            int i;
            int pos;

            char* e1; //Hilfsmerker eingehender Anruf
            char* e2; //Hilfsmerker eingehender Anruf
            char* e3; //Hilfsmerker eingehender Anruf
            int e4; //Hilfsmerker eingehender Anruf
            char e5[20]; //Hilfsmerker eingehender Anruf

            char* a1; //Hilfsmerker ausgehender Anruf
            char* a2; //Hilfsmerker ausgehender Anruf
            int a4; //Hilfsmerker ausgehender Anruf
            char a5[20]; //Hilfsmerker ausgehender Anruf

            char ps[RD_BLOCK_SIZE]; // Stream Zwischenspeichern als Kopie


            while(true)

            {nCnt = stream_read(pTcpStream,szBuffer,RD_BLOCK_SIZE,4000 );
            if(nCnt > 0)
            {ps = szBuffer;
            e1 = strstrskip(ps, "RING;0;"); //Eingehender Anruf - String vor Rufnummer abschneiden
            e2 = strstr(ps, "RING");
            e3 = strstr(ps, "RING;0;0"); //Eingehender Anruf - Prüfen ob Rufnummer vorhanden

            a1 = strstrskip(ps, ";8114609;"); //Eingehender Anruf - String vor Rufnummer abschneiden
            a2 = strstr(ps, "CALL");

            printf("%s\n",ps); //Stream aus der Fritz Box im Log anzeigen

            if (e2 != NULL) //Eingehender Anruf erkennen

            {
            e4 = strfind(e1, ";", 0); //Zeichenlänge der Rufnummer
            strncpy(e5, e1 , e4); //Rufnummer in e5 kopieren

            if (getinput(0) == 1.0) //Eingehender Anruf - Ausgang AQ1=1 wenn AI=1
            {setoutput (0,1);
            }
            else
            {setoutput (0,0);
            }
            if (getinput(1) == 0.0) //Eingehender Anruf - Ausgang AQ2=0 wenn A2=1
            {setoutput (1,1);
            }
            else
            {setoutput (1,0);
            }

            if (e3 != NULL) //Eingehender Anruf - Auswertung ob Rufnummer oder nicht.
            {setoutputtext(0,e5);
            }
            else
            {setoutputtext(0,"unbekannte Nummer");
            }
            }

            else //Werte wenn kein Anruf da ist.
            {setoutput(0,0);
            setoutput(1,0);
            setoutputtext(0,"");
            }

            if (a2 != NULL) //Ausgehender Anruf erkennen

            {a4 = strfind(a1, ";", 0); //Zeichenl?nge der Rufnummer
            strncpy(a5, a1 , a4); //Rufnummer in a5 kopieren
            setoutputtext(1,a5);
            }
            else
            {setoutputtext(1,"");
            }
            }
            }

            i++;
            sleep(1000); //Warte 1000ms bis díe Schleife wiederholt wird.


            stream_close(pTcpStream);
            }
            Wohnhaus Baujahr 2013
            2x Miniserver Go Gen. 2; 1x Miniserver Gen. 1; 5x Extensions; 4x Relay; 4x Dimmer; 1x 1-Wire; KNX-Sensorik/Aktorik; Smart Socket Air; Bewegungsmelder Air; Tür- und Fensterkontakte Air; Wassersensor Air; Touch Air; IR Control Air; Ceiling Light Air
            Loxberry (Raspberry); Philips Hue; Alexa2Lox; Shelly

            Kommentar

            • dr_dee
              LoxBus Spammer
              • 10.10.2015
              • 275

              #21
              Gerrit. Habe gerade einen Neustart des Miniservers durchgeführt. Jetzt geht es wieder. Was muss/kann ich an dem Code ändern/besser machen?
              Wohnhaus Baujahr 2013
              2x Miniserver Go Gen. 2; 1x Miniserver Gen. 1; 5x Extensions; 4x Relay; 4x Dimmer; 1x 1-Wire; KNX-Sensorik/Aktorik; Smart Socket Air; Bewegungsmelder Air; Tür- und Fensterkontakte Air; Wassersensor Air; Touch Air; IR Control Air; Ceiling Light Air
              Loxberry (Raspberry); Philips Hue; Alexa2Lox; Shelly

              Kommentar

              • Gerrit
                MS Profi
                • 26.08.2015
                • 944

                #22
                Hab jetzt gesehen, dass ich ja gar nicht immer sofort eine neue Verbindung aufmache. Er versucht es 30 Mal = ca. 30s, danach wird auf jeden Fall eine neue Verbindung aufgemacht, d.h. maximal 30s nach einem FritzBox Neustart oder Hänger geht es nicht.

                Mit der Anpassung dann dein Code:
                Code:
                #define RD_BLOCK_SIZE 1000
                
                char szBuffer[RD_BLOCK_SIZE]; //Eingehender String z.B. Es ruft jemand an --> "09.01.13 21:51:03;RING;2;Anrufernummer;Empfängernummer;SIP 0;"
                
                
                int nCnt;
                int pos;
                
                char* e1; //Hilfsmerker eingehender Anruf
                char* e2; //Hilfsmerker eingehender Anruf
                char* e3; //Hilfsmerker eingehender Anruf
                int e4; //Hilfsmerker eingehender Anruf
                char e5[20]; //Hilfsmerker eingehender Anruf
                
                char* a1; //Hilfsmerker ausgehender Anruf
                char* a2; //Hilfsmerker ausgehender Anruf
                int a4; //Hilfsmerker ausgehender Anruf
                char a5[20]; //Hilfsmerker ausgehender Anruf
                
                char ps[RD_BLOCK_SIZE]; // Stream Zwischenspeichern als Kopie
                
                
                while(true) {
                // create tcp stream
                  STREAM* pTcpStream = stream_create("/dev/tcp/192.168.21.1/1012",1,0);
                  if(pTcpStream != NULL) {
                    for(int i = 0; i < 30; i++) {
                      if(i > 0) {
                        sleeps(1);
                      }
                      nCnt = stream_readline(pTcpStream,szBuffer,RD_BLOCK_SIZE,4000);
                if(nCnt > 0)
                {ps = szBuffer;
                e1 = strstrskip(ps, "RING;0;"); //Eingehender Anruf - String vor Rufnummer abschneiden
                e2 = strstr(ps, "RING");
                e3 = strstr(ps, "RING;0;0"); //Eingehender Anruf - Prüfen ob Rufnummer vorhanden
                
                a1 = strstrskip(ps, ";8114609;"); //Eingehender Anruf - String vor Rufnummer abschneiden
                a2 = strstr(ps, "CALL");
                
                printf("%s\n",ps); //Stream aus der Fritz Box im Log anzeigen
                
                if (e2 != NULL) //Eingehender Anruf erkennen
                
                {
                e4 = strfind(e1, ";", 0); //Zeichenlänge der Rufnummer
                strncpy(e5, e1 , e4); //Rufnummer in e5 kopieren
                
                if (getinput(0) == 1.0) //Eingehender Anruf - Ausgang AQ1=1 wenn AI=1
                {setoutput (0,1);
                }
                else
                {setoutput (0,0);
                }
                if (getinput(1) == 0.0) //Eingehender Anruf - Ausgang AQ2=0 wenn A2=1
                {setoutput (1,1);
                }
                else
                {setoutput (1,0);
                }
                
                if (e3 != NULL) //Eingehender Anruf - Auswertung ob Rufnummer oder nicht.
                {setoutputtext(0,e5);
                }
                else
                {setoutputtext(0,"unbekannte Nummer");
                }
                }
                
                else //Werte wenn kein Anruf da ist.
                {setoutput(0,0);
                setoutput(1,0);
                setoutputtext(0,"");
                }
                
                if (a2 != NULL) //Ausgehender Anruf erkennen
                
                {a4 = strfind(a1, ";", 0); //Zeichenl?nge der Rufnummer
                strncpy(a5, a1 , a4); //Rufnummer in a5 kopieren
                setoutputtext(1,a5);
                }
                else
                {setoutputtext(1,"");
                }
                }
                }
                    stream_close(pTcpStream);
                  }
                }
                Zuletzt geändert von Gerrit; 01.11.2015, 08:43. Grund: Korrektur fehlerhafte Variable

                Kommentar

                • dr_dee
                  LoxBus Spammer
                  • 10.10.2015
                  • 275

                  #23
                  Gerrit Vielen Dank. Habe den Code übernommen. Funktioniert soweit. Habe nur die Zeile mit "int = i" entfernt, weil die Loxconfig das angemeckert hat.
                  Wohnhaus Baujahr 2013
                  2x Miniserver Go Gen. 2; 1x Miniserver Gen. 1; 5x Extensions; 4x Relay; 4x Dimmer; 1x 1-Wire; KNX-Sensorik/Aktorik; Smart Socket Air; Bewegungsmelder Air; Tür- und Fensterkontakte Air; Wassersensor Air; Touch Air; IR Control Air; Ceiling Light Air
                  Loxberry (Raspberry); Philips Hue; Alexa2Lox; Shelly

                  Kommentar


                  • svethi
                    svethi kommentierte
                    Kommentar bearbeiten
                    Welche Zeile mit int = i meinst Du denn?
                    Ist klar, das die angemeckert wird. Da steht ja auch int i und dabei handelt es sich um eine Variablendeklaration die der Variablen i den Wertebereich int zuweist. Die solltest Du schon wieder einsetzen

                  • Gerrit
                    Gerrit kommentierte
                    Kommentar bearbeiten
                    @svethi
                    Ne das Löschen war korrekt. Hatten den Code von Lars nicht komplett angeschaut und dort war am Anfang bereits i deklariert. Ich hab i selbst für eine Schleife deklariert und verwendet.
                • Frank71
                  Extension Master
                  • 25.08.2015
                  • 112

                  #24
                  Hallo,

                  ich hab das Script aus Post 22 bei mir verwendet ..... Hierfür Danke

                  Der Tracker auf TQ1 für eingehende Anrufe funktioniert super.
                  Leider erhalter ich auf dem Tracker bei TQ2 bei ausgehenden Anrufen kein Eintrag.

                  Muss ich hierfür noch einen Eingang beschalten oder sonst eine externe Beschaltung auflegen ?
                  Wäre für jeden Tipp dankbar.

                  Gruß Frank
                  Zuletzt geändert von Frank71; 03.11.2015, 21:37.

                  Kommentar

                  • Gerrit
                    MS Profi
                    • 26.08.2015
                    • 944

                    #25
                    Zitat von Frank71
                    ich hab das Script aus Post 10 bei mir verwendet ..... Hierfür Danke

                    Der Tracker auf TQ1 für eingehende Anrufe funktioniert super.
                    Leider erhalter ich auf dem Tracker bei TQ2 bei ausgehenden Anrufen kein Eintrag.

                    Muss ich hierfür noch einen Eingang beschalten oder sonst eine externe Beschaltung auflegen ?
                    Du meinst wahrscheinlich das Skript aus Post #22 oder? Denn meins aus Post #10 ist speziell für unsere Anbindung der Türstation etc.
                    Beide Skripte befassen sich auch generell nur mit der Registrierung von eingehenden Verbindungen. Wenn du auch ausgehende Verbindungen anzeigen willst, müsstest du dir nochmal selbst das Log-Format vom Callmonitor anschauen. Kannst dich selbst per telnet auf diesen Port verbinden um die Logzeilen am PC testweise mitzulesen (IP der FritzBox):
                    Code:
                    telnet 192.168.178.1 1012

                    Kommentar

                    • Leo Kirch
                      MS Profi
                      • 26.08.2015
                      • 831

                      #26
                      Hallo,

                      die Frage:
                      Zitat von ReneX
                      Gibt es eine Möglichkeit das WLAN an und aus zu schalten?
                      ist zwar etwas untergegangen, aber vielleicht hat hierfür dennoch jemand eine Lösung?

                      Momentan schalte ich das Wlan einer Fritzbox 7490 über die AVM-Zeitschaltung. Nach Möglichkeit würde ich dies gern abhängig vom aktuellen Betriebsmodus des Miniservers schalten.
                      Aber wie geht's?
                      -

                      Kommentar

                      • uli
                        LoxBus Spammer
                        • 30.08.2015
                        • 225

                        #27
                        Ich schließe mich Leo an, eine Lösung für das WLAN wäre klasse, ebenso wie das einfache Ein- und Ausschalten des Gastzugangs. Dass AVM da nicht einfach ein API bereitstellt verstehe ich nicht.

                        Kommentar

                        • hismastersvoice
                          Supermoderator
                          • 25.08.2015
                          • 7442

                          #28
                          Es gibt schon so was wie eine API...

                          Hier gibt es Informationen rund um die FRITZ!Box zu Schnittstellen und Protokollen. Wir freuen uns über Ihr Interesse! ✔


                          Nur ist es halt nicht möglich ohne ein weiteres Gerät z.B. Raspi das ganze per Script umzusetzen.
                          Kein Support per PN!

                          Kommentar

                          • .:Chris:.
                            LoxBus Spammer
                            • 05.01.2016
                            • 202

                            #29
                            Guten Morgen zusammen,
                            vielen Dank für die beiden Skripte.

                            Der Code von Gerrit hat bei mir auf Anhieb funktioniert was ankommende Anrufe angeht.

                            Wo genau liegen die Unterschiede der beiden Skripte? Nur im Setzen der Ausgänge?

                            Was nicht funktioniert sind die ausgehenden Anrufe.

                            Könnt ihr bitte noch ein Bildchen vom beschalteten Programmbaustein hier im Forum einstellen.

                            Wo / Wie sehe ich diese Ausgabe:
                            Code:
                            printf("%s\n",ps); //Stream aus der Fritz Box im Log anzeigen
                            Vielen Dank
                            .:Chris:.

                            Kommentar

                            • Gerrit
                              MS Profi
                              • 26.08.2015
                              • 944

                              #30
                              Zitat von .:Chris:.
                              Wo genau liegen die Unterschiede der beiden Skripte? Nur im Setzen der Ausgänge?
                              Was nicht funktioniert sind die ausgehenden Anrufe.
                              Das zweite Skript war von dr_dee, was ich nur bzgl. des Verbindungsverlusts optimiert hatte. Zur Funktion kann dr_dee wohl besser etwas erzählen.
                              Zu meinem Skript findest du etwas in meinen Kommentaren und auch zur Frage nach den ausgehenden Verbindungen (siehe Kommentar 25). Am einfachsten beziehst du dich dann direkt auf die Kommentare per Zitat, wenn noch etwas unklar ist

                              Kommentar

                              Lädt...