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 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

                              894
                              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