Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. (Gelöst) Telefonbuch ohne Fritzbox

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

(Gelöst) Telefonbuch ohne Fritzbox

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 4 Kommentatoren 1.2k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W Wildbill

    @paul53 Kommt als Number ohne führende Nullen. Also beispielsweise 49891234567 für 0049 (Deutschland) 89 (München) 1234567 (Rufnummer). Oder 43 xxxxxxx wenn es aus Österreich kommt.

    Das mit den fehlenden Nullen und abschneiden bzw, ersetzen der 49 mit 0 habe ich bereits. Ebenso das Hinzufügen von zwei 00, wenn es aus dem Ausland kommt.
    Mir fehlt nur der Ansatz, um bei einigen Nummern eben stattdessen den Namen aus einer Liste oder einem JSON zu suchen bzw. wie ich das sinnvollerweise aufbaue.

    Gruss, Jürgen

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #8

    @wildbill sagte: Mir fehlt nur der Ansatz

    Siehe oben: Hat sich mit deiner Antwort überschnitten.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    MartinPM 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @wildbill sagte: Mir fehlt nur der Ansatz

      Siehe oben: Hat sich mit deiner Antwort überschnitten.

      MartinPM Online
      MartinPM Online
      MartinP
      schrieb am zuletzt editiert von
      #9

      @paul53 ist das nicht ein Anwendungsfall für eine Map?

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

      Key->Telefonnummer, Value->Anzeigename?

      const myTelBook = new Map();
      
      myTelBook.set( 110, 'Polizei');
      myTelBook.set(112, 'Feuerwehr');
      
      ....
      
      
      my Anrufername=myTelBook.get(110); // returns 'Polizei'

      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
      Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
      Linux pve 6.17.9-1-pve
      6 GByte RAM für den Container
      Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
      Remote-Access über Wireguard der Fritzbox

      paul53P 1 Antwort Letzte Antwort
      0
      • MartinPM MartinP

        @paul53 ist das nicht ein Anwendungsfall für eine Map?

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

        Key->Telefonnummer, Value->Anzeigename?

        const myTelBook = new Map();
        
        myTelBook.set( 110, 'Polizei');
        myTelBook.set(112, 'Feuerwehr');
        
        ....
        
        
        my Anrufername=myTelBook.get(110); // returns 'Polizei'
        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #10

        @martinp sagte: ist das nicht ein Anwendungsfall für eine Map?

        Damit habe ich mich noch nicht beschäftigt.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @wildbill sagte: die anrufende Nummer via Rest-Api in einen Datenpunkt schreibt

          Ansatz mit zwei korrespondierenden Listen:

          const idNummer = '...';
          const idName = '...';
          
          const nummern = [
              '1234567',
              '8934568'
          ];
          const namen = [
              'Müller',
              'Heinz'
          ];
          
          on({id: idNummer}, function(dp) {
              let name = dp.state.val; // unbekannter Name = Nummer
              for(let i = 0; i < nummern.length; i++) {
                  if(nummern[i] == dp.state.val) {
                      name = namen[i];
                      break;
                  }
              }
              setState(idName, name);
          });
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #11

          @paul53 sagte: Ansatz mit zwei korrespondierenden Listen:

          Habe oben korrigiert (break).

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          W 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @paul53 sagte: Ansatz mit zwei korrespondierenden Listen:

            Habe oben korrigiert (break).

            W Offline
            W Offline
            Wildbill
            schrieb am zuletzt editiert von
            #12

            @paul53 Super, das probiere ich mal so umzusetzen.
            @MartinP Das scheint mir dann eher in die Richtung zu gehen, in die auch JSON läuft. Muss ich mir auch nochmal anschauen. Aber ich glaube, das Script von @paul53 macht genau das, was ich will, ohne großen Aufwand mit Pflege zu betreiben. Zwei Listen erstellen, bei Bedarf anpassen und gut.

            Komme nur heute nicht mehr dazu, Frau hat Geburtstag, gibt sonst Mecker. :blush:

            Aber ich gebe Bescheid, wie es letztendlich geklappt hat.

            Danke Euch Allen. @Homoran Ich setze mal auf gelöst, sollte ja nur noch eine Sache der Umsetzung sein.

            Gruss, Jürgen

            HomoranH MartinPM 2 Antworten Letzte Antwort
            1
            • W Wildbill

              @paul53 Super, das probiere ich mal so umzusetzen.
              @MartinP Das scheint mir dann eher in die Richtung zu gehen, in die auch JSON läuft. Muss ich mir auch nochmal anschauen. Aber ich glaube, das Script von @paul53 macht genau das, was ich will, ohne großen Aufwand mit Pflege zu betreiben. Zwei Listen erstellen, bei Bedarf anpassen und gut.

              Komme nur heute nicht mehr dazu, Frau hat Geburtstag, gibt sonst Mecker. :blush:

              Aber ich gebe Bescheid, wie es letztendlich geklappt hat.

              Danke Euch Allen. @Homoran Ich setze mal auf gelöst, sollte ja nur noch eine Sache der Umsetzung sein.

              Gruss, Jürgen

              HomoranH Offline
              HomoranH Offline
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #13

              @wildbill sagte in (Gelöst) Telefonbuch ohne Fritzbox:

              Frau hat Geburtstag

              :birthday:

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              1
              • W Wildbill

                @paul53 Super, das probiere ich mal so umzusetzen.
                @MartinP Das scheint mir dann eher in die Richtung zu gehen, in die auch JSON läuft. Muss ich mir auch nochmal anschauen. Aber ich glaube, das Script von @paul53 macht genau das, was ich will, ohne großen Aufwand mit Pflege zu betreiben. Zwei Listen erstellen, bei Bedarf anpassen und gut.

                Komme nur heute nicht mehr dazu, Frau hat Geburtstag, gibt sonst Mecker. :blush:

                Aber ich gebe Bescheid, wie es letztendlich geklappt hat.

                Danke Euch Allen. @Homoran Ich setze mal auf gelöst, sollte ja nur noch eine Sache der Umsetzung sein.

                Gruss, Jürgen

                MartinPM Online
                MartinPM Online
                MartinP
                schrieb am zuletzt editiert von MartinP
                #14

                @wildbill Der Ansatz mit den zwei Listen macht mir Bauchschmerzen... Das ist bei einer Handvoll Namens - Telefonnummern Paaren noch handhabbar, aber wenn es mehr werden, wird das schon eine Pein, darauf zu achten, dass es da keinen Fehler gibt ...

                Wenn Großoma Erna gestorben ist, und man nur ihren Namen löscht, aber nicht ihre Telefonnummer, hat man schon einen Versatz...

                Erfahrungsgemäß fängt man dann irgendwann mit dem Finger an, auf dem Bildschirm Zeilen zu zählen, kopiert die beiden Tabellen über die Zwischenablage in einen "richtigen" Editor, um sie nebeneinander anzuschauen usw ...

                Wichtig ist bei der Map, dass die einem das Durchsuchen abnimmt. Man wirft eine Telefonnummer ein, und kriegt den Namen zurück.... ob überhaupt ein passendes Key/Value Paar existiert, kann man vorher mit exist(key) feststellen ...

                Keine handgestrickte Suchschleife o. Ä.

                Eine ganz professionelle Lösung ist das aber auch noch nicht - da würde man mit einer Datenbank arbeiten :-)

                Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                Linux pve 6.17.9-1-pve
                6 GByte RAM für den Container
                Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                Remote-Access über Wireguard der Fritzbox

                W 1 Antwort Letzte Antwort
                2
                • MartinPM MartinP

                  @wildbill Der Ansatz mit den zwei Listen macht mir Bauchschmerzen... Das ist bei einer Handvoll Namens - Telefonnummern Paaren noch handhabbar, aber wenn es mehr werden, wird das schon eine Pein, darauf zu achten, dass es da keinen Fehler gibt ...

                  Wenn Großoma Erna gestorben ist, und man nur ihren Namen löscht, aber nicht ihre Telefonnummer, hat man schon einen Versatz...

                  Erfahrungsgemäß fängt man dann irgendwann mit dem Finger an, auf dem Bildschirm Zeilen zu zählen, kopiert die beiden Tabellen über die Zwischenablage in einen "richtigen" Editor, um sie nebeneinander anzuschauen usw ...

                  Wichtig ist bei der Map, dass die einem das Durchsuchen abnimmt. Man wirft eine Telefonnummer ein, und kriegt den Namen zurück.... ob überhaupt ein passendes Key/Value Paar existiert, kann man vorher mit exist(key) feststellen ...

                  Keine handgestrickte Suchschleife o. Ä.

                  Eine ganz professionelle Lösung ist das aber auch noch nicht - da würde man mit einer Datenbank arbeiten :-)

                  W Offline
                  W Offline
                  Wildbill
                  schrieb am zuletzt editiert von
                  #15

                  @martinp Ja, das hat mir bei der Lösung mit MAP oder JSON besser gefallen, dass es jeweils ein festes Wertepaar gibt. Da es aber wohl wirklich nur auf zwei Handvoll Nummern rauslaufen wird, ist es mit einer Liste, denke ich, noch überschaubar. Ich werde vermutlich damit anfangen, aber in einer ruhigen Minute mal mit Wertepaaren probieren, nur, um vielleicht mal wieder was zu lernen.
                  Danke.

                  Gruss, Jürgen

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • W Wildbill

                    @martinp Ja, das hat mir bei der Lösung mit MAP oder JSON besser gefallen, dass es jeweils ein festes Wertepaar gibt. Da es aber wohl wirklich nur auf zwei Handvoll Nummern rauslaufen wird, ist es mit einer Liste, denke ich, noch überschaubar. Ich werde vermutlich damit anfangen, aber in einer ruhigen Minute mal mit Wertepaaren probieren, nur, um vielleicht mal wieder was zu lernen.
                    Danke.

                    Gruss, Jürgen

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #16

                    @wildbill sagte: JSON besser gefallen, dass es jeweils ein festes Wertepaar gibt.

                    Version mit Objekt (nicht JSON):

                    const telBuch = {
                        '1234567': 'Müller',
                        '8934568': 'Heinz'
                    };
                    
                    const idNummer = '...';
                    const idName = '...';
                     
                    on({id: idNummer}, function(dp) {
                        let name = telBuch[dp.state.val];
                        if(!name) name = dp.state.val // unbekannter Name = Nummer
                        setState(idName, name);
                    });
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    W 1 Antwort Letzte Antwort
                    1
                    • paul53P paul53

                      @wildbill sagte: JSON besser gefallen, dass es jeweils ein festes Wertepaar gibt.

                      Version mit Objekt (nicht JSON):

                      const telBuch = {
                          '1234567': 'Müller',
                          '8934568': 'Heinz'
                      };
                      
                      const idNummer = '...';
                      const idName = '...';
                       
                      on({id: idNummer}, function(dp) {
                          let name = telBuch[dp.state.val];
                          if(!name) name = dp.state.val // unbekannter Name = Nummer
                          setState(idName, name);
                      });
                      
                      W Offline
                      W Offline
                      Wildbill
                      schrieb am zuletzt editiert von Wildbill
                      #17

                      @paul53 So, abschließend noch kurz die Vollzugsmeldung. Alles funktioniert wie gehabt. Um nicht zwei Skripte (mein Blockly und das neue) laufen haben zu müssen, habe ich einfach mein bisheriges Blockly als Javascript ausgeben lassen und einfach quick&dirty vor das neue Script kopiert. Datenpunkte nochmal angepasst und läuft. Ich hatte gestern Nacht, als meine Frau im Bett war, noch versucht, das irgendwie eleganter zu machen, insbesondere nur mit einem Trigger und sauber mit idNummer und idName durchgehend, anstatt wieder auf die Datenpunkte zuzugreifen, aber da bin ich in reinem Javascript irgendwie nicht fit genug. Spätestens beim Versuch, davon dann erst aber der vierten Stelle auszulesen habe ich mich dann irgendwo in den Klammern verzettelt... :anguished:

                      Unten das Gesamt-Script, wie es läuft, falls jemand mal sowas in der Art braucht. Und nochmal Danke an Alle. Ohne Eure Hilfe wäre das Ganze sicher noch weitaus uneleganter geworden. So gefällt es mir richtig gut und ich mach mich nun an das Eintragen von meinen Nummern und Namen.

                      Gruss, Jürgen

                      function subsequenceFromStartLast(sequence, at1) {
                        var start = at1;
                        var end = sequence.length - 1 + 1;
                        return sequence.slice(start, end);
                      }
                      
                      
                      on({ id: [].concat(['0_userdata.0.Zustand.Anrufer-Name']), change: 'any' }, async (obj) => {
                        let value = obj.state.val;
                        let oldValue = obj.oldState.val;
                        if (compareTime('08:00', '22:00', 'between')) {
                          if (('' + getState('0_userdata.0.Zustand.Anrufer-Name').val).indexOf('00') + 1 == 1) {
                            if (('' + getState('0_userdata.0.Zustand.Anrufer-Name').val).indexOf('0049') + 1 == 1) {
                              setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von 0' + String(subsequenceFromStartLast(('' + getState('0_userdata.0.Zustand.Anrufer-Name').val), 4))), true);
                            } else {
                              setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von 00' + String(subsequenceFromStartLast(('' + getState('0_userdata.0.Zustand.Anrufer-Id').val), 0))), true);
                            }
                          } else {
                            setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von ' + String(getState('0_userdata.0.Zustand.Anrufer-Name').val)), true);
                          }
                        }
                      });
                      
                      const telBuch = {
                          '1234567': 'Müller',
                          '498934568': 'Heinz'
                      };
                       
                      const idNummer = '0_userdata.0.Zustand.Anrufer-Id'/*Anrufer-Id*/;
                      const idName = '0_userdata.0.Zustand.Anrufer-Name'/*Anrufer-Name*/;
                       
                      on({ id: idNummer, change: 'any' }, function(dp) {
                          let name = telBuch[dp.state.val];
                          if(!name) name = '00' + dp.state.val // unbekannter Name = Nummer
                          setState(idName, name);
                      });
                      

                      EDIT: Script angepasst. Es muss bei den Telefonnummern 49 davor stehen.

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      272

                      Online

                      32.6k

                      Benutzer

                      82.3k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe