Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. DECT Telefonat erkennen - Alexa Ruhe bei Gespräch

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    DECT Telefonat erkennen - Alexa Ruhe bei Gespräch

    This topic has been deleted. Only users with topic management privileges can see it.
    • StrathCole
      StrathCole @FabianHM last edited by

      @FabianHM
      Das wird nicht ganz funktionieren, denn dein "on" greift nur beim Connect, daher wird es nicht ausgeführt, wenn der Call beendet wird.

      F 1 Reply Last reply Reply Quote 0
      • StrathCole
        StrathCole last edited by

        Schwierig wird es auch, wenn auf mehreren Leitungen gleichzeitig telefoniert wird. Beispiel:

        1. Telefonat begonnen -> Regel trifft zu
        2. Telefonat begonnen -> Regel trifft zu
        3. Telefonat begonnen -> Regel trifft nicht mehr zu, das 2. aktive Telefonat wird nicht mehr erkannt.
        1 Reply Last reply Reply Quote 0
        • F
          FabianHM @StrathCole last edited by

          @StrathCole
          Ja, bei uns werden eher die Varianten 1. und 2. auftreten.
          Damit sollte es funktionieren:

          on({id: new RegExp('tr-064-community\\.0\\.callmonitor\\.connect\\.timestamp' + "|" + 'tr-064-community\\.0\\.callmonitor\\.lastCall\\.timestamp'), change: "ne"}, function (obj) {
              if (getState("tr-064-community.0.callmonitor.lastCall.timestamp").val > getState("tr-064-community.0.callmonitor.connect.timestamp").val) {
              console.log('DECT Telefonat aktiv');
            }
            if (getState("tr-064-community.0.callmonitor.lastCall.timestamp").val <= getState("tr-064-community.0.callmonitor.connect.timestamp").val) {
              console.log('DECT Telefonat beendet');
            }
          });
          

          Komisch dass diesen State bisher sonst keiner im Adapter vermisst hat....

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

            Hier ein Skript, das funktioniert:

            let activeCalls = [];
            
            on('tr-064.0.callmonitor.connect.timestamp', function(obj) {
                let caller = getState('tr-064.0.callmonitor.connect.caller').val;
                let callee = getState('tr-064.0.callmonitor.connect.callee').val;
            
                let time = obj.state.val;
            
                let idx = activeCalls.findIndex(function(element) {
                    return (element.caller === caller && element.callee === callee);
                });
            
                if(idx === -1) {
                    activeCalls.push({
                        caller: caller,
                        callee: callee,
                        time: time
                    });
                }
            
                log('Active calls: ' + JSON.stringify(activeCalls));
            });
            
            on('tr-064.0.callmonitor.lastCall.timestamp', function(obj) {
                let caller = getState('tr-064.0.callmonitor.lastCall.caller').val;
                let callee = getState('tr-064.0.callmonitor.lastCall.callee').val;
            
                let idx = activeCalls.findIndex(function(element) {
                    return (element.caller === caller && element.callee === callee);
                });
                if(idx != -1) {
                    activeCalls.splice(idx, 1);
                }
            
                log('Active calls: ' + JSON.stringify(activeCalls));
            });
            
            F 1 Reply Last reply Reply Quote 0
            • F
              FabianHM @StrathCole last edited by

              @StrathCole
              Ich werde es heute Abend testen, Dankeschön für die Hilfe!

              F 1 Reply Last reply Reply Quote 0
              • F
                FabianHM @FabianHM last edited by

                @FabianHM said in DECT Telefonat erkennen - Alexa Ruhe bei Gespräch:

                @StrathCole
                Ich werde es heute Abend testen, Dankeschön für die Hilfe!

                Die Erkennung der Anrufe funktioniert 🙂
                Was muss man abändern, damit die Log Einträge nicht immer doppelt angezeigt werden?

                F 1 Reply Last reply Reply Quote 0
                • F
                  FabianHM @FabianHM last edited by FabianHM

                  @FabianHM said in DECT Telefonat erkennen - Alexa Ruhe bei Gespräch:

                  Was muss man abändern, damit die Log Einträge nicht immer doppelt angezeigt werden?

                  Ich habe das Script minimal auf meine Belange reduziert, verstehe aber weiterhin nicht, wieso die Logs immer doppelt aufgerufen werden:

                  let activeCalls = [];
                  
                  on('tr-064.0.callmonitor.connect.timestamp', function(obj) {
                  
                      let caller = getState('tr-064.0.callmonitor.connect.caller').val;
                  
                      let callee = getState('tr-064.0.callmonitor.connect.callee').val;    
                  
                      let idx = activeCalls.findIndex(function(element) {
                  
                          return (element.caller === caller && element.callee === callee);
                      });
                  
                   
                      if(idx === -1) {
                  
                          activeCalls.push({
                  
                              caller: caller,
                  
                              callee: callee           
                  
                          });
                  
                      }
                  
                      log('CallActive: Ja ');
                      setState(`javascript.0.Monitoring.FritzBox.CallActive`, true); 
                  
                  });
                  
                  
                  on('tr-064.0.callmonitor.lastCall.timestamp', function(obj) {
                  
                      let caller = getState('tr-064.0.callmonitor.lastCall.caller').val;
                  
                      let callee = getState('tr-064.0.callmonitor.lastCall.callee').val; 
                  
                      let idx = activeCalls.findIndex(function(element) {
                  
                          return (element.caller === caller && element.callee === callee);
                  
                      });
                  
                      if(idx != -1) {
                  
                          activeCalls.splice(idx, 1);
                      }
                     
                      log('CallActive: Nein ');
                      setState(`javascript.0.Monitoring.FritzBox.CallActive`, false); 
                  
                  });
                  

                  53692d94-d631-4619-b21e-24914fce5707-grafik.png

                  StrathCole 1 Reply Last reply Reply Quote 0
                  • StrathCole
                    StrathCole @FabianHM last edited by

                    @FabianHM Scheinbar wird der timestamp 2x aktualisiert. Warum der Adapter bzw. die Fritz!Box das so macht, weiß ich nicht. Du könntest sicher den timestamp zwischenspeichern und das log nur ausgeben, wenn neuer timestamp > alter timestamp + 1000 oder so. Bei mir taucht er auch doppelt auf.

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      FabianHM @StrathCole last edited by

                      @StrathCole

                      Ich habe gerade einen State im aktuellen Adapter gefunden, der genau meinen Bedarf unterstützt:
                      c9afd778-6f58-40c3-a3dc-4b024a7f72e2-grafik.png

                      der "toPauseState" wird und bleibt bei aktiven Telefonaten auf "connect", also genau was ich benötige 🙂

                      Weißt Du vielleicht, was der untere State "toPauseState-10" für eine Bedeutung hat?

                      F 1 Reply Last reply Reply Quote 0
                      • F
                        FabianHM @FabianHM last edited by

                        @FabianHM said in DECT Telefonat erkennen - Alexa Ruhe bei Gespräch:

                        Weißt Du vielleicht, was der untere State "toPauseState-10" für eine Bedeutung hat?

                        Hat sich auch erledigt: toPauseState-10 => Wert für Nebenstelle **610 die den Anruf angenommen hat.

                        StrathCole 1 Reply Last reply Reply Quote 0
                        • StrathCole
                          StrathCole @FabianHM last edited by

                          @FabianHM Ist bei mir nicht ganz so einfach, da ein ISDN-Telefon an der Box hängt, es also nur eine Nebenstelle gibt, die aber wiederum auf mehrere Endnummern verteilt 😉
                          Umso besser, wenns für dich so einfach zu lösen ist.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          904
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          communication
                          2
                          14
                          583
                          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