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. Skripten / Logik
  4. (Gelöst) Telefonbuch ohne Fritzbox

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    796

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

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

(Gelöst) Telefonbuch ohne Fritzbox

Scheduled Pinned Locked Moved Skripten / Logik
17 Posts 4 Posters 1.3k Views 2 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.
  • W Online
    W Online
    Wildbill
    wrote on last edited by Wildbill
    #1

    Hallo zusammen,

    ich würde gerne Alexa bei eingehenden Anrufen bei bestimmten Nummern anstatt der Rufnummer direkt den Namen vorlesen lassen. Ich weiss, es gibt den iobroker.fritzbox und den iobroker.tr-064-Adapter, die erfordern aber beide eine Fritzbox, die ich nicht habe und auch nicht anschaffen werde. Ich habe ein Grandstream GXP1625, welches mir bei Anrufen via Action URL direkt die anrufende Nummer via Rest-Api in einen Datenpunkt schreibt, welche Alexa dann vorliest. Das funktioniert perfekt.
    Wie kann ich aber nun in iobroker für beispielsweise 10 Nummern den passenden Namen hinterlegen? Klar, ich könnte das in einem Script mit 10 Falls-Abfragen manuell machen, aber das muss doch auch irgendwie eleganter gehen, so in Richtung SVERWEIS() bei Excel? Dass ich irgendwo eine Tabelle mit Rufnummer und Name anlege und dann bei einem Match der Name anstatt der Nummer gezogen wird?!
    Bevorzugt in Blockly, Javascript könnte ich zumindest für meine Zwecke anpassen, denke ich, wenn jemand was Passendes hat.

    Für Ideen bin ich dankbar.

    Gruss, Jürgen

    HomoranH paul53P 2 Replies Last reply
    0
    • W Wildbill

      Hallo zusammen,

      ich würde gerne Alexa bei eingehenden Anrufen bei bestimmten Nummern anstatt der Rufnummer direkt den Namen vorlesen lassen. Ich weiss, es gibt den iobroker.fritzbox und den iobroker.tr-064-Adapter, die erfordern aber beide eine Fritzbox, die ich nicht habe und auch nicht anschaffen werde. Ich habe ein Grandstream GXP1625, welches mir bei Anrufen via Action URL direkt die anrufende Nummer via Rest-Api in einen Datenpunkt schreibt, welche Alexa dann vorliest. Das funktioniert perfekt.
      Wie kann ich aber nun in iobroker für beispielsweise 10 Nummern den passenden Namen hinterlegen? Klar, ich könnte das in einem Script mit 10 Falls-Abfragen manuell machen, aber das muss doch auch irgendwie eleganter gehen, so in Richtung SVERWEIS() bei Excel? Dass ich irgendwo eine Tabelle mit Rufnummer und Name anlege und dann bei einem Match der Name anstatt der Nummer gezogen wird?!
      Bevorzugt in Blockly, Javascript könnte ich zumindest für meine Zwecke anpassen, denke ich, wenn jemand was Passendes hat.

      Für Ideen bin ich dankbar.

      Gruss, Jürgen

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #2

      @wildbill nicht dass ich das könnte ;-)

      aber würde das nicht mit einer Liste oder JSON gehen, die man mit der angezeigten Nummer durchsucht?

      ATttribut nummer wäre dann der Name

      {"0123-45678" : "Müller"; "0234-98765" : "Meier"}
      nur mal so ins unreine

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      W 1 Reply Last reply
      1
      • HomoranH Homoran

        @wildbill nicht dass ich das könnte ;-)

        aber würde das nicht mit einer Liste oder JSON gehen, die man mit der angezeigten Nummer durchsucht?

        ATttribut nummer wäre dann der Name

        {"0123-45678" : "Müller"; "0234-98765" : "Meier"}
        nur mal so ins unreine

        W Online
        W Online
        Wildbill
        wrote on last edited by
        #3

        @homoran Ja, irgendwie so stelle ich mir das auch vor. Aber, wie Du schreibst:

        "Nicht, dass ich das könnte". 😊
        Mir fehlt da grad irgendwie der Ansatz, wo ich das hinterlege und wie ich das auslese. Als Liste in Blockly irgendwie vielleicht, aber da bin ich grad auch etwas überfordert, wie ich das sauber mache.

        Gruss, Jürgen

        W 1 Reply Last reply
        0
        • W Wildbill

          @homoran Ja, irgendwie so stelle ich mir das auch vor. Aber, wie Du schreibst:

          "Nicht, dass ich das könnte". 😊
          Mir fehlt da grad irgendwie der Ansatz, wo ich das hinterlege und wie ich das auslese. Als Liste in Blockly irgendwie vielleicht, aber da bin ich grad auch etwas überfordert, wie ich das sauber mache.

          Gruss, Jürgen

          W Online
          W Online
          Wildbill
          wrote on last edited by
          #4

          @wildbill Ich denke, ich würde es sowohl mit zwei Listen hinbekommen, als auch indem ich ein JSON erstelle. Bei folgenden zwei Seiten habe ich mich mal orientiert:
          Liste und JSON.
          Hinbekommen werde ich wohl irgendwie beides. Liste eben zwei Listen einmal mit den Nummern und einmal mit gleicher Reihenfolge die passenden Namen. Und dann eben die Liste durchsuchen und wenn die Nummer matcht, aus der zweiten Liste an der gleichen Stelle den Namen. JSON wäre halt alles in einem, dafür habe ich mit JSON noch nie intensiver gearbeitet.

          Gibt es Erfahrungsberichte oder Bestpractice, was in dem Fall einfacher/besser wäre?

          Gruss, Jürgen

          HomoranH 1 Reply Last reply
          0
          • W Wildbill

            @wildbill Ich denke, ich würde es sowohl mit zwei Listen hinbekommen, als auch indem ich ein JSON erstelle. Bei folgenden zwei Seiten habe ich mich mal orientiert:
            Liste und JSON.
            Hinbekommen werde ich wohl irgendwie beides. Liste eben zwei Listen einmal mit den Nummern und einmal mit gleicher Reihenfolge die passenden Namen. Und dann eben die Liste durchsuchen und wenn die Nummer matcht, aus der zweiten Liste an der gleichen Stelle den Namen. JSON wäre halt alles in einem, dafür habe ich mit JSON noch nie intensiver gearbeitet.

            Gibt es Erfahrungsberichte oder Bestpractice, was in dem Fall einfacher/besser wäre?

            Gruss, Jürgen

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by Homoran
            #5

            @wildbill sagte in Telefonbuch ohne Fritzbox:

            Gibt es Erfahrungsberichte oder Bestpractice, was in dem Fall einfacher/besser wäre?

            so leid es mir für ihn tut, aber ich fürchte da brauchen wir die Hilfe von @paul53, der hat das mit den zwei Listen schon mal irgendwo gepostet

            kein Support per PN! - Fragen im Forum stellen -
            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Reply Last reply
            1
            • W Wildbill

              Hallo zusammen,

              ich würde gerne Alexa bei eingehenden Anrufen bei bestimmten Nummern anstatt der Rufnummer direkt den Namen vorlesen lassen. Ich weiss, es gibt den iobroker.fritzbox und den iobroker.tr-064-Adapter, die erfordern aber beide eine Fritzbox, die ich nicht habe und auch nicht anschaffen werde. Ich habe ein Grandstream GXP1625, welches mir bei Anrufen via Action URL direkt die anrufende Nummer via Rest-Api in einen Datenpunkt schreibt, welche Alexa dann vorliest. Das funktioniert perfekt.
              Wie kann ich aber nun in iobroker für beispielsweise 10 Nummern den passenden Namen hinterlegen? Klar, ich könnte das in einem Script mit 10 Falls-Abfragen manuell machen, aber das muss doch auch irgendwie eleganter gehen, so in Richtung SVERWEIS() bei Excel? Dass ich irgendwo eine Tabelle mit Rufnummer und Name anlege und dann bei einem Match der Name anstatt der Nummer gezogen wird?!
              Bevorzugt in Blockly, Javascript könnte ich zumindest für meine Zwecke anpassen, denke ich, wenn jemand was Passendes hat.

              Für Ideen bin ich dankbar.

              Gruss, Jürgen

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by paul53
              #6

              @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);
              });
              

              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 paul53P 2 Replies Last reply
              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);
                });
                
                W Online
                W Online
                Wildbill
                wrote on last edited by
                #7

                @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 1 Reply Last reply
                0
                • 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
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • paul53P paul53

                    @wildbill sagte: Mir fehlt nur der Ansatz

                    Siehe oben: Hat sich mit deiner Antwort überschnitten.

                    MartinPM Online
                    MartinPM Online
                    MartinP
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by
                      #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 Reply Last reply
                      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
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • paul53P paul53

                          @paul53 sagte: Ansatz mit zwei korrespondierenden Listen:

                          Habe oben korrigiert (break).

                          W Online
                          W Online
                          Wildbill
                          wrote on last edited by
                          #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. 😊

                          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 Replies Last reply
                          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. 😊

                            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 Do not disturb
                            HomoranH Do not disturb
                            Homoran
                            Global Moderator Administrators
                            wrote on last edited by
                            #13

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

                            Frau hat Geburtstag

                            🎂

                            kein Support per PN! - Fragen im Forum stellen -
                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            1 Reply Last reply
                            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. 😊

                              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
                              wrote on last edited by 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 Reply Last reply
                              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 Online
                                W Online
                                Wildbill
                                wrote on last edited by
                                #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 Reply Last reply
                                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
                                  wrote on last edited by 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 Reply Last reply
                                  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 Online
                                    W Online
                                    Wildbill
                                    wrote on last edited by 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... 😧

                                    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 Reply Last reply
                                    0

                                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                    With your input, this post could be even better 💗

                                    Register Login
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    424

                                    Online

                                    32.8k

                                    Users

                                    82.7k

                                    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