Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Fritzbox rückwärtssuche mit iobroker?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    287

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Fritzbox rückwärtssuche mit iobroker?

Scheduled Pinned Locked Moved ioBroker Allgemein
fritzbox 7590fritzfon
15 Posts 6 Posters 2.8k Views 12 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Marsx79
    wrote on last edited by Marsx79
    #6
    var request = require('request');
    on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { // wenn Anruf
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      log("Skript2 klingeln");
      var nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val, 2000, false);  // caller Nummer auslesen
      log(' caller=' + nummer);
      var namen = String(getState("tr-064.0.callmonitor.inbound.callerName").val, 2000, false); // caller Name auslesen
      if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
          log('namen ist leer.');
          var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
          request(url, function(err, stat, body) {
            if(err) log('Error: ' + err, error);
            var matches = body.match(/class="name ".*?<.*?>(.*?)&/); // in matches[1] steht der Namen aus Das Örtliche
            log('Name' + matches[1]);
            if (!matches[1].length){     // Das Örtliche kein Name gefunden
               log('Namen Unbekannt');
               setState('tr-064.0.callmonitor.inbound.calleeName').String('Unbekannt');
            } else {
                log (Namen= + matches[1]);
                setState('tr-064.0.callmonitor.inbound.calleeName').matches[1];
            }
          });
      } 
    });   
    

    Hatte dieses alte Script noch rumliegen. Keine Ahnung ob das noch funktioniert. Vielleicht kann das ja mal jemand testen.

    GarganoG 2 Replies Last reply
    0
    • M Marsx79
      var request = require('request');
      on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { // wenn Anruf
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        log("Skript2 klingeln");
        var nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val, 2000, false);  // caller Nummer auslesen
        log(' caller=' + nummer);
        var namen = String(getState("tr-064.0.callmonitor.inbound.callerName").val, 2000, false); // caller Name auslesen
        if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
            log('namen ist leer.');
            var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
            request(url, function(err, stat, body) {
              if(err) log('Error: ' + err, error);
              var matches = body.match(/class="name ".*?<.*?>(.*?)&/); // in matches[1] steht der Namen aus Das Örtliche
              log('Name' + matches[1]);
              if (!matches[1].length){     // Das Örtliche kein Name gefunden
                 log('Namen Unbekannt');
                 setState('tr-064.0.callmonitor.inbound.calleeName').String('Unbekannt');
              } else {
                  log (Namen= + matches[1]);
                  setState('tr-064.0.callmonitor.inbound.calleeName').matches[1];
              }
            });
        } 
      });   
      

      Hatte dieses alte Script noch rumliegen. Keine Ahnung ob das noch funktioniert. Vielleicht kann das ja mal jemand testen.

      GarganoG Offline
      GarganoG Offline
      Gargano
      wrote on last edited by
      #7

      @Marsx79 Habs mal probiert, jedoch kommt der body.match mit der URL-Antwort nicht zurecht.
      Firefox meint, daß content-encoding gzip ist.
      Ich weiß nicht ob request mit gzip zurecht kommt.

      1 Reply Last reply
      0
      • M Marsx79
        var request = require('request');
        on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { // wenn Anruf
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          log("Skript2 klingeln");
          var nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val, 2000, false);  // caller Nummer auslesen
          log(' caller=' + nummer);
          var namen = String(getState("tr-064.0.callmonitor.inbound.callerName").val, 2000, false); // caller Name auslesen
          if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
              log('namen ist leer.');
              var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
              request(url, function(err, stat, body) {
                if(err) log('Error: ' + err, error);
                var matches = body.match(/class="name ".*?<.*?>(.*?)&/); // in matches[1] steht der Namen aus Das Örtliche
                log('Name' + matches[1]);
                if (!matches[1].length){     // Das Örtliche kein Name gefunden
                   log('Namen Unbekannt');
                   setState('tr-064.0.callmonitor.inbound.calleeName').String('Unbekannt');
                } else {
                    log (Namen= + matches[1]);
                    setState('tr-064.0.callmonitor.inbound.calleeName').matches[1];
                }
              });
          } 
        });   
        

        Hatte dieses alte Script noch rumliegen. Keine Ahnung ob das noch funktioniert. Vielleicht kann das ja mal jemand testen.

        GarganoG Offline
        GarganoG Offline
        Gargano
        wrote on last edited by
        #8

        @Marsx79 Hab mal ein log vom body gemacht, da erscheint des als Klartext, kommt also mit gzip zurecht. Scheint noch ein Problem mit der Zeile body.match zu sein

        M 1 Reply Last reply
        0
        • GarganoG Gargano

          @Marsx79 Hab mal ein log vom body gemacht, da erscheint des als Klartext, kommt also mit gzip zurecht. Scheint noch ein Problem mit der Zeile body.match zu sein

          M Offline
          M Offline
          Marsx79
          wrote on last edited by
          #9

          @Gargano

          Mit Scripten kenne ich mich leider nicht so aus. War nur als Anregung gedacht. Vielleicht kann da ja jemand was mit anfangen und es entsprechend anpassen.

          GarganoG 1 Reply Last reply
          0
          • M Marsx79

            @Gargano

            Mit Scripten kenne ich mich leider nicht so aus. War nur als Anregung gedacht. Vielleicht kann da ja jemand was mit anfangen und es entsprechend anpassen.

            GarganoG Offline
            GarganoG Offline
            Gargano
            wrote on last edited by Gargano
            #10

            @Marsx79 Also rausgefunden habe ich , daß die Klasse jetzt "st-treff-name" heißt und nicht mehr "name".
            Ich komme aber mit dem Ausdruck .?<.?>(.*?)&/ nicht klar.
            Hier scheint sich JS aufzuhängen.
            Evtl. kann jemand da helfen.

            Problem bei der ganzen HTML Geschichte ist, daß bei der nächsten Änderung der Klassenname wieder anders sein kann.
            Eine Abfrage mit Get und Antwort als JSON wäre da besser.

            GarganoG 1 Reply Last reply
            0
            • GarganoG Gargano

              @Marsx79 Also rausgefunden habe ich , daß die Klasse jetzt "st-treff-name" heißt und nicht mehr "name".
              Ich komme aber mit dem Ausdruck .?<.?>(.*?)&/ nicht klar.
              Hier scheint sich JS aufzuhängen.
              Evtl. kann jemand da helfen.

              Problem bei der ganzen HTML Geschichte ist, daß bei der nächsten Änderung der Klassenname wieder anders sein kann.
              Eine Abfrage mit Get und Antwort als JSON wäre da besser.

              GarganoG Offline
              GarganoG Offline
              Gargano
              wrote on last edited by Gargano
              #11

              @Gargano Hier nun der geänderte Code für die Rückwärtssuche im 'Das Örtliche'

              // Rückwärtssuche von das Örtliche 
              
              const callerName = 'tr-064.0.callmonitor.inbound.callerName';
              const lastCallerName ='tr-064.0.callmonitor.lastCall.callerName';
              
              var request = require('request');
              
              
              on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { // wenn Anruf
                log("Skript2 klingeln");
                var nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val, 2000, false);  // caller Nummer auslesen
                log(' caller=' + nummer);
                var namen = String(getState(callerName).val, 2000, false); // caller Name auslesen
                if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
                    log('namen ist leer.');
                    var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
                    log (url);
                    request(url, function(err, body) {
                      if(err) log('Error: ' + err);
                      var matches = body.match(/class="st-treff-name"\>(.*?)\</); // in matches[1] steht der Namen aus Das Örtliche
                      if (!matches){     // Das Örtliche kein Name gefunden
                         log('Namen Unbekannt');
                         setState(callerName,'Unbekannt');
                         setState(lastCallerName,'Unbekannt');
                      } else {
                          log ('Namen= '+ matches[1]);
                          setState(callerName,matches[1]);
                          setState(lastCallerName,matches[1]);
                      }
                    });
                } 
              });   
              
              
              
              M 1 Reply Last reply
              0
              • GarganoG Gargano

                @Gargano Hier nun der geänderte Code für die Rückwärtssuche im 'Das Örtliche'

                // Rückwärtssuche von das Örtliche 
                
                const callerName = 'tr-064.0.callmonitor.inbound.callerName';
                const lastCallerName ='tr-064.0.callmonitor.lastCall.callerName';
                
                var request = require('request');
                
                
                on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { // wenn Anruf
                  log("Skript2 klingeln");
                  var nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val, 2000, false);  // caller Nummer auslesen
                  log(' caller=' + nummer);
                  var namen = String(getState(callerName).val, 2000, false); // caller Name auslesen
                  if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
                      log('namen ist leer.');
                      var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
                      log (url);
                      request(url, function(err, body) {
                        if(err) log('Error: ' + err);
                        var matches = body.match(/class="st-treff-name"\>(.*?)\</); // in matches[1] steht der Namen aus Das Örtliche
                        if (!matches){     // Das Örtliche kein Name gefunden
                           log('Namen Unbekannt');
                           setState(callerName,'Unbekannt');
                           setState(lastCallerName,'Unbekannt');
                        } else {
                            log ('Namen= '+ matches[1]);
                            setState(callerName,matches[1]);
                            setState(lastCallerName,matches[1]);
                        }
                      });
                  } 
                });   
                
                
                
                M Offline
                M Offline
                Marsx79
                wrote on last edited by
                #12

                @Gargano

                Super! Werde ich nachher gleich mal ausprobieren.

                GarganoG 2 Replies Last reply
                0
                • M Marsx79

                  @Gargano

                  Super! Werde ich nachher gleich mal ausprobieren.

                  GarganoG Offline
                  GarganoG Offline
                  Gargano
                  wrote on last edited by
                  #13

                  @Marsx79 Ups , doch ein Schreibfehler

                  const lastCallerName ='tr-064.0.callmonitor.lastCall.callerName';
                  
                  1 Reply Last reply
                  0
                  • M Marsx79

                    @Gargano

                    Super! Werde ich nachher gleich mal ausprobieren.

                    GarganoG Offline
                    GarganoG Offline
                    Gargano
                    wrote on last edited by
                    #14

                    @Marsx79 Nach der letzten Version vom JS Adapter kam bei mir eine Fehlermeldung mit der 'match' Funktion, daß diese nicht definiert sei.

                    Ich habe jetzt das aktuellere axios Modul verwendet :
                    Dazu muß in der JS Instanz unter den zusätzlichen NPM-Module axios eingetragen werden.

                    // Rückwärtssuche von das Örtliche 
                    
                    const callerName = 'tr-064.0.callmonitor.inbound.callerName';
                    const lastCallerName ='tr-064.0.callmonitor.lastCall.callerName';
                    const ringing = 'tr-064.0.callmonitor.ringing';
                    const caller = 'tr-064.0.callmonitor.inbound.caller';
                    
                    const axios = require('axios');
                    
                    function getCallerName(url) {
                        axios.get(url)
                            .then(function (response) {
                                // handle success
                              var matches = response.data.match(/class="st-treff-name"\>(.*?)\</); // in matches[1] steht der Namen aus Das Örtliche
                                if (!matches){     // Das Örtliche kein Name gefunden
                                setState(callerName,'Unbekannt');
                                setState(lastCallerName,'Unbekannt');
                                } else { 
                                    setState(callerName,matches[1]);
                                    setState(lastCallerName,matches[1]);
                                } 
                            })
                            .catch(function (error) {
                                // handle error
                                console.log(error);
                            })
                    }
                    
                    on({id: ringing, val: true, ack: true}, function (obj) { // wenn Anruf
                      var nummer = String(getState(caller).val, 2000, false);  // caller Nummer auslesen
                      var namen = String(getState(callerName).val, 2000, false); // caller Name auslesen
                      if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
                        var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
                        getCallerName(url);
                      } 
                    });   
                    
                    
                    
                    
                    F 1 Reply Last reply
                    0
                    • GarganoG Gargano

                      @Marsx79 Nach der letzten Version vom JS Adapter kam bei mir eine Fehlermeldung mit der 'match' Funktion, daß diese nicht definiert sei.

                      Ich habe jetzt das aktuellere axios Modul verwendet :
                      Dazu muß in der JS Instanz unter den zusätzlichen NPM-Module axios eingetragen werden.

                      // Rückwärtssuche von das Örtliche 
                      
                      const callerName = 'tr-064.0.callmonitor.inbound.callerName';
                      const lastCallerName ='tr-064.0.callmonitor.lastCall.callerName';
                      const ringing = 'tr-064.0.callmonitor.ringing';
                      const caller = 'tr-064.0.callmonitor.inbound.caller';
                      
                      const axios = require('axios');
                      
                      function getCallerName(url) {
                          axios.get(url)
                              .then(function (response) {
                                  // handle success
                                var matches = response.data.match(/class="st-treff-name"\>(.*?)\</); // in matches[1] steht der Namen aus Das Örtliche
                                  if (!matches){     // Das Örtliche kein Name gefunden
                                  setState(callerName,'Unbekannt');
                                  setState(lastCallerName,'Unbekannt');
                                  } else { 
                                      setState(callerName,matches[1]);
                                      setState(lastCallerName,matches[1]);
                                  } 
                              })
                              .catch(function (error) {
                                  // handle error
                                  console.log(error);
                              })
                      }
                      
                      on({id: ringing, val: true, ack: true}, function (obj) { // wenn Anruf
                        var nummer = String(getState(caller).val, 2000, false);  // caller Nummer auslesen
                        var namen = String(getState(callerName).val, 2000, false); // caller Name auslesen
                        if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen
                          var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen
                          getCallerName(url);
                        } 
                      });   
                      
                      
                      
                      
                      F Offline
                      F Offline
                      flotux
                      wrote on last edited by
                      #15

                      @gargano
                      Dein Post hat mir damals sehr geholfen. Mir ist aber aufgefallen, dass sich offenbar der Aufbau der Seite von www.dasoertliche.de geändert hat, wodurch die Rückwärtssuche nicht mehr funktioniert. Mit folgenden Anpassungen funktioniert es bei mir zumindest wieder:

                      var url = 'https://mobil.dasoertliche.de/Themen?nummer='+ nummer;
                      

                      Folgender regulärer Ausdruck liefert bei mir dann den Namen bzw. die Firma zur Rufnummer:

                      var matches = response.data.match('<h2 class="tao-cb tao-b\">(.*)<\/h2>');
                      

                      Vielleicht hilft das dem einen oder anderen, so wie es mir damals geholfen hat. ;-)

                      1 Reply Last reply
                      2
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      584

                      Online

                      32.7k

                      Users

                      82.5k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe