Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Fritzbox - Adapter; unbekannt = "### ? ###" lässt sich nicht verarbeiten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Fritzbox - Adapter; unbekannt = "### ? ###" lässt sich nicht verarbeiten

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      Deinen code versteh ich nicht.

      mfg

      1 Reply Last reply Reply Quote 0
      • blauholsten
        blauholsten Developer last edited by

        @bahnuhr:

        Deinen code versteh ich nicht.

        mfg `
        Die .test() Methode prüft einen String auf dessen Inhalt, und gibt dann true oder false zurück.

        von mir aus so

        var str =  "### ? ###";
        
        if(str.test(nummer)){
               log('ja');
        }
        else{
               log('nein');
        }
        
        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active last edited by

          @blauholsten:

          probier doch mal mit

          var str =  "### ? ###";
          
          if(str.test(nummer)){
                 "tue dies tue das"
          }
          ```` `  
          

          Es kommt Fehlermeldung:

          str.test is not a function

          1 Reply Last reply Reply Quote 0
          • bahnuhr
            bahnuhr Forum Testing Most Active last edited by

            Müsste dies (wie oben im Code)

            if (nummer === "### ? ###") {
                log ("richtig");
            } else {
                log ("nein");
            }
            

            nicht das gleiche sein.

            Und dies klappt eben nicht.

            1 Reply Last reply Reply Quote 0
            • blauholsten
              blauholsten Developer last edited by

              @bahnuhr:

              @blauholsten:

              probier doch mal mit

              var str =  "### ? ###";
              
              if(str.test(nummer)){
                     "tue dies tue das"
              }
              ```` `  
              

              Es kommt Fehlermeldung:

              str.test is not a function `

              Stimmt! Muss wohl so heissen….

              var str = /### ? ###/
              

              Kommt aber trotzdem false raus. Kann es sein das das "verbotene Zeichen" sind?

              1 Reply Last reply Reply Quote 0
              • bahnuhr
                bahnuhr Forum Testing Most Active last edited by

                habe mittlerweile folgendes festgestellt:

                Die Fritzbox übermittelt: "### ? ###"

                Hierbei ist die Leertaste mit dem charCode 160 !!! benannt.

                Im String ""### ? ###" ist der charCode der Leertaste 32 !!!

                Also unterschiedlicher Code für Leertaste.

                mfg

                1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active last edited by

                  wie vermutet landet dein Code auch bei Nein !!!

                    var str =  /### ? ###/;
                  
                  if(str.test(nummer)){
                         log('ja');
                  }
                  else{
                         log('nein');
                  }
                  

                  m.E. liegt es an der unterschiedlichen Behandlung der Leertaste.

                  mfg

                  D.Müller

                  1 Reply Last reply Reply Quote 0
                  • blauholsten
                    blauholsten Developer last edited by

                    Fehler gefunden:

                    var str =  /### \? ###/;
                    
                    if(str.test(nummer)){
                           log('ja');
                    }
                    else{
                           log('nein');
                    }
                    

                    Das geht

                    1 Reply Last reply Reply Quote 0
                    • bahnuhr
                      bahnuhr Forum Testing Most Active last edited by

                      bei mir geht es nicht.

                      … not a function

                      1 Reply Last reply Reply Quote 0
                      • bahnuhr
                        bahnuhr Forum Testing Most Active last edited by

                        Also ich bleib jetzt bei meiner Lösung:

                        if (nummer === String.fromCharCode(35,35,35,160,63,160,35,35,35)) {  // charCode entspricht "### ? ###"
                            log ("richtig");
                        } else {
                            log ("nein");
                        }
                        

                        Die Fritzbox scheint die Leertaste anders zu übermitteln.

                        Und mit o.g. char… funktioniert es.

                        mfg

                        1 Reply Last reply Reply Quote 0
                        • blauholsten
                          blauholsten Developer last edited by

                          Jetzt schon:

                          var str =  /### \? ###/;
                          
                          if(str.test(nummer)){
                                 log('ja');
                          }
                          else{
                                 log('nein');
                          }
                          
                          1 Reply Last reply Reply Quote 0
                          • bahnuhr
                            bahnuhr Forum Testing Most Active last edited by

                            blauholsten

                            Deine Lösung klappt nicht !!!

                            -> Es klappt mit deinem String

                            -> Es klappt aber nicht mit dem String der die Fritzbox übermittelt.

                            Diese übermittelt als String einen anderen CharCode für die Leertaste.

                            Probier es mit dem Handy aus und schalt die Tel.Nr. aus.

                            mfg

                            Dieter

                            1 Reply Last reply Reply Quote 0
                            • blauholsten
                              blauholsten Developer last edited by

                              Okay!

                              PS Skript bitte als gelöst markieren.

                              1 Reply Last reply Reply Quote 0
                              • bahnuhr
                                bahnuhr Forum Testing Most Active last edited by

                                Anbei das Script wie es nun bei mir läuft komplett:

                                ! ````
                                // Telefon Anzeige in vis
                                ! // Variablen
                                var Anrufer_Nr = "fritzbox.0.calls.ringActualNumber"; // Nr. des Anrufers
                                var Anrufer_Name = "tr-064.0.callmonitor.inbound.callerName"; // Name des Anrufers
                                var Sprache = getState("hm-rega.0.29816").val; // Auto Sprachausgabe
                                var request = require ('request');
                                ! function weiter(obj) {
                                // Name ermitteln
                                var name = "";
                                ! if (obj.state.val === String.fromCharCode(35,35,35,160,63,160,35,35,35)) { // undefinierte Rufnummern, charCode entspricht "### ? ###"
                                name = "Unbekannt"; // undefinierte Rufnummern
                                } else {
                                name = getState(Anrufer_Name).val;
                                }
                                ! // Bild ermitteln
                                switch (name) {
                                case 'Dieter Arbeit':
                                name = "Dieter";
                                setState('javascript.0.Status.Telefon.Bild_Nr', 1);
                                break;
                                default:
                                setState('javascript.0.Status.Telefon.Bild_Nr', 0);
                                break;
                                }
                                ! if (name === "") {
                                name = "Unbekannt";
                                } else {
                                setState('javascript.0.Status.Telefon.Name', name);
                                }
                                setState('javascript.0.Status.Telefon.Nummer', obj.state.val);

                                // Sprachausgabe
                                    if (Sprache === true) {
                                        request('http://192.168.243.76:50000/track=tos-computer-03.wav');
                                        setTimeout(setState('sayit.0.tts.text', name + " ruft an."), 3000);
                                    }
                                
                                //Telegram und log
                                    if (name ==='Unbekannt') {
                                        sendTo('telegram', "Telefon zu Hause:\n Unbekannte Nummer ruft an.");
                                        log("Telefon zu Hause: Unbekannte Nummer ruft an.");
                                    } else {
                                        sendTo('telegram', "Telefon zu Hause:\n" + name + ", " + obj.state.val + ", ruft an.");     
                                        log("Telefon zu Hause: " + name + ", " + obj.state.val + ", ruft an.");     
                                    }
                                
                                View_change ('Telefon', 0); 
                                setTimeout(function() {
                                        View_change ('Titel', 0);
                                        setState('javascript.0.Status.Telefon.Name', "");
                                        setState('javascript.0.Status.Telefon.Nummer', "");
                                        setState('javascript.0.Status.Telefon.Bild_Nr', 0);
                                }, 30000); 
                                

                                ! }
                                ! on({id: Anrufer_Nr, change: "ne"}, function(obj) {
                                log ('Auslöser Telefon');
                                if (obj.state.val !== '') {
                                weiter(obj);
                                }
                                });
                                ! ````

                                1 Reply Last reply Reply Quote 0
                                • ruhr70
                                  ruhr70 last edited by

                                  das "andere Leerzeichen" kommt nicht von der Fritzbox, sondern vom Adapter.

                                  Ein Leerzeichen wird gegen ein nbsp; (non breaking space) ausgetauscht, damit die Länge bei html mit Festbreitenschrift passt.

                                  Beim Mac erzeugt man ein nbsp; mit alt+Leertaste (aus dem Gedächtnis)

                                  im Javascripteditor wird das dann auch grafisch angezeigt

                                  Gesendet von iPhone mit Tapatalk

                                  1 Reply Last reply Reply Quote 0
                                  • bahnuhr
                                    bahnuhr Forum Testing Most Active last edited by

                                    Vom Adapter - hab ich mir schon gedacht.

                                    Trotzdem muss man das erst einmal wissen. Man versucht halt mit der normalen Leertaste eine if abfrage zu basteln und ist fast am verzweifeln warum dies nicht klappt.

                                    Danke für den Tipp mit dem "alt + Leertaste".

                                    Muss ich mal versuchen.

                                    Wieder was gelernt.

                                    Mit freundlichen Grüßen

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    608
                                    Online

                                    31.7k
                                    Users

                                    79.8k
                                    Topics

                                    1.3m
                                    Posts

                                    3
                                    20
                                    2160
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo