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

                            906
                            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