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.
    • F
      FabianHM last edited by FabianHM

      Hallo zusammen,

      ich würde gerne vermeiden, dass Alexa während (Fritz) DECT Telefonaten spricht (Der WAF sinkt dadurch gerade 😉 )
      Mein Problem ist bloß, dass ich beim TR-064 als auch beim fritzbox DECT Adapter keinen State finde, den ich hierzu abfragen kann ob gerade ein DECT Telefonat aktiv ist.
      Hat jemand eine Idee was ich abfragen könnte?

      Grüße
      Fabian

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

        Meine Idee dazu wäre:

        tr-064.0.callmonitor.connect.timestamp und tr-064.0.callmonitor.lastCall.timestamp zu vergleichen.
        Wenn der Timestamp von lastCall >= dem von connect ist, müsste das aktuelle Gespräch beendet sein.

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

          @StrathCole
          Die Idee klingt gut, Dankeschön!
          Ich habe folgendes Srcipt mal zum testen aktiviert:

          on({id: 'tr-064-community.0.callmonitor.connect.timestamp', change: "ne"}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            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');
            }
          });
          
          StrathCole 1 Reply Last reply Reply Quote 0
          • 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

                                910
                                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