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. JavaScript
  5. [Vorlage] Simple Anrufer-Ansage via Alexa/tr-064

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[Vorlage] Simple Anrufer-Ansage via Alexa/tr-064

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptcommunication
4 Beiträge 3 Kommentatoren 1.4k Aufrufe 3 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.
  • StrathColeS Offline
    StrathColeS Offline
    StrathCole
    schrieb am zuletzt editiert von StrathCole
    #1

    Anbei ein kleines Javascript für eine Ansage des Anrufers bzw. der Nummer über den Alexa2-Adapter.
    Benötigt wird auch der tr-064-Adapter (aktuelle 3.x Version) für das Empfangen der Fritz!Box-Daten.

    //* Insert own numbers with description
    const numbers = {
        '01234512345': 'privat',
        '01234522222': 'Büro'
    };
    
    function tellMeWhoCalls(sayattention) {
        let curtime = new Date();
        //* not between 21pm and 7am UTC
        if(curtime.getHours() < 7 || curtime.getHours() > 21) {
            return;
        }
        let targ = getState('tr-064.0.callmonitor.inbound.callee').val;
        let src = getState('tr-064.0.callmonitor.inbound.caller').val;
        let srcName = getState('tr-064.0.callmonitor.inbound.callerName').val;
    
        let targName = numbers[targ];
        if(!targName) {
            targName = 'unbekannt';
        }
    
        let text = (sayattention ? 'Achtung! ' : '') + 'Anruf für ' + targName + ' von ';
        if(srcName) {
            text += srcName;
        } else if(src) {
            text += '<say-as interpret-as="digits">' + src + '</say-as>';
        } else {
            text += 'unbekannter Nummer';
        }
        text += '.';
    
        text = '<speak>' + text + '</speak>';
    
        //* replace XXXXX by your echo device id and add further lines for more devices
        setState('alexa2.0.Echo-Devices.XXXXXXX.Commands.ssml', text);
    
        if(targName === 'privat') {
            //* replace YYYYYY by your echo device id or delete this part if you don't need it
            setState('alexa2.0.Echo-Devices.YYYYYYYY.Commands.ssml', text);
        }
    }
    
    let ringInterval = null;
    
    on({id: 'tr-064.0.callmonitor.ringing', change: 'ne'}, function(obj) {
        if(obj.state.val !== true) {
            //* no longer ringing
            if(ringInterval) {
                clearInterval(ringInterval);
                ringInterval = null;
            }
            return;
        }
    
        if(ringInterval) {
            clearInterval(ringInterval);
        }
        //* repeat caller anouncement each 10 secs
        ringInterval = setInterval(function() {
            tellMeWhoCalls();
        }, 10000);
    
        //* first time add "Achtung!" in front of the text
        setTimeout(function() {
            tellMeWhoCalls(true);
        }, 1000);
    });
    

    SolarWatt-Anlage mit 9,6 kWp – KOSTAL Plenticore Plus 10 – BYD B-Box HV 8,96 – Viessmann Vitocal 333g – Zehnder ComfoD 350 (Comfoair 350) mit RS232-Ethernet-Konverter

    B 1 Antwort Letzte Antwort
    0
    • J Offline
      J Offline
      jensus11
      schrieb am zuletzt editiert von
      #2

      Ich habe dein Script importiert, doch leider sagt Alexa nichts.
      tr-064 und Alexa2 sind natürlich installiert.
      Angepasst im Script habe ich die XXXXX für Alexa und die Nummer für privat.
      Den zweiten für ein zweites Alexa Gerät habe ich gelöscht.
      Was könnte ich denn verkehrt gemacht haben?

      J 1 Antwort Letzte Antwort
      0
      • J jensus11

        Ich habe dein Script importiert, doch leider sagt Alexa nichts.
        tr-064 und Alexa2 sind natürlich installiert.
        Angepasst im Script habe ich die XXXXX für Alexa und die Nummer für privat.
        Den zweiten für ein zweites Alexa Gerät habe ich gelöscht.
        Was könnte ich denn verkehrt gemacht haben?

        J Offline
        J Offline
        jensus11
        schrieb am zuletzt editiert von
        #3

        @jensus11 sagte in [Vorlage] Simple Anrufer-Ansage via Alexa/tr-064:

        Ich habe dein Script importiert, doch leider sagt Alexa nichts.
        tr-064 und Alexa2 sind natürlich installiert.
        Angepasst im Script habe ich die XXXXX für Alexa und die Nummer für privat.
        Den zweiten für ein zweites Alexa Gerät habe ich gelöscht.
        Was könnte ich denn verkehrt gemacht haben?

        Habe es selber hinbekommen. Lag am alten tr-064. Mit der 3.1.4 läuft das.

        1 Antwort Letzte Antwort
        0
        • StrathColeS StrathCole

          Anbei ein kleines Javascript für eine Ansage des Anrufers bzw. der Nummer über den Alexa2-Adapter.
          Benötigt wird auch der tr-064-Adapter (aktuelle 3.x Version) für das Empfangen der Fritz!Box-Daten.

          //* Insert own numbers with description
          const numbers = {
              '01234512345': 'privat',
              '01234522222': 'Büro'
          };
          
          function tellMeWhoCalls(sayattention) {
              let curtime = new Date();
              //* not between 21pm and 7am UTC
              if(curtime.getHours() < 7 || curtime.getHours() > 21) {
                  return;
              }
              let targ = getState('tr-064.0.callmonitor.inbound.callee').val;
              let src = getState('tr-064.0.callmonitor.inbound.caller').val;
              let srcName = getState('tr-064.0.callmonitor.inbound.callerName').val;
          
              let targName = numbers[targ];
              if(!targName) {
                  targName = 'unbekannt';
              }
          
              let text = (sayattention ? 'Achtung! ' : '') + 'Anruf für ' + targName + ' von ';
              if(srcName) {
                  text += srcName;
              } else if(src) {
                  text += '<say-as interpret-as="digits">' + src + '</say-as>';
              } else {
                  text += 'unbekannter Nummer';
              }
              text += '.';
          
              text = '<speak>' + text + '</speak>';
          
              //* replace XXXXX by your echo device id and add further lines for more devices
              setState('alexa2.0.Echo-Devices.XXXXXXX.Commands.ssml', text);
          
              if(targName === 'privat') {
                  //* replace YYYYYY by your echo device id or delete this part if you don't need it
                  setState('alexa2.0.Echo-Devices.YYYYYYYY.Commands.ssml', text);
              }
          }
          
          let ringInterval = null;
          
          on({id: 'tr-064.0.callmonitor.ringing', change: 'ne'}, function(obj) {
              if(obj.state.val !== true) {
                  //* no longer ringing
                  if(ringInterval) {
                      clearInterval(ringInterval);
                      ringInterval = null;
                  }
                  return;
              }
          
              if(ringInterval) {
                  clearInterval(ringInterval);
              }
              //* repeat caller anouncement each 10 secs
              ringInterval = setInterval(function() {
                  tellMeWhoCalls();
              }, 10000);
          
              //* first time add "Achtung!" in front of the text
              setTimeout(function() {
                  tellMeWhoCalls(true);
              }, 1000);
          });
          
          B Offline
          B Offline
          bergbock
          schrieb am zuletzt editiert von
          #4

          Hat auch 3 Jahre später noch gut funktioniert! :)

          Vielen Dank :+1:

          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

          759

          Online

          32.6k

          Benutzer

          82.1k

          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