Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Anwesenheitscontrol basierend auf TR64 Adapter - Script

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Anwesenheitscontrol basierend auf TR64 Adapter - Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      dondaik last edited by

      warum soll man da am adapter handeln ?

      das behebt / beachtet man doch dann in seiner eigenen anwendung :mrgreen:

      ( und dann sind da noch die 2-3 anderen adapter die man ggf alle miteinander kombinieren kann )

      1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer last edited by Mic

        Hi,

        da der neue TR-064-Community-Adapter (Forum, Github) bei mir bislang sehr gut mit iOS-Geräten funktioniert, habe ich nun das Script von @looxer01 , und erweitert durch @NightWatcher, verbessert und erweitert. Vielen Dank Euch Beiden!

        Hier das Script auf Github: presence-script-for-tr-064-community-adapter

        Auszug aus Change Log:

        • Diverse Verbesserungen: Sourcecode, Logging, States neu gegliedert, besserer Scriptstart, Bereinigung, Abfangen von Fehlern, usw.
        • Neue Option FIX_ERROR für FritzBox und iOS (iPhone etc.): Wenn ein Gerät nicht mehr im WLAN ist, wird manchmal nach wenigen Sekunden auf "nicht anwesend" im Adapter gesetzt, dann ca. 15 Sekunden später wieder auf "anwesend", dann ca. 5-10 Minuten später dauerhaft auf "abwesend". Um dieses Verhalten zu umgehen, wird hier eine Verzögerung eingebaut, um z.B. nach 30 Sekunden zu prüfen, ob lt. Adapter tatsächlich abwesend, und erst dann die Abwesenheit aktiviert. (siehe Github Issue)

        Viel Spaß damit.

        sigi234 1 Reply Last reply Reply Quote 2
        • sigi234
          sigi234 Forum Testing Most Active @Mic last edited by sigi234

          @Mic

          Super, Danke funktioniert einwandfrei.........
          Könnte man beim DP List of present persons: ein Komma einfügen?
          Also: Name,Name,Name,

          Mic 2 Replies Last reply Reply Quote 0
          • Mic
            Mic Developer @sigi234 last edited by

            @sigi234
            Vielen Dank für Dein Feedback und Deinen Test 🙂

            Klar, hatte ich vom ursprünglichen Code so übernommen und fiel mir auch schon auf, dass da ein Trennzeichen fehlt. Werde ich einbauen.

            sigi234 1 Reply Last reply Reply Quote 0
            • sigi234
              sigi234 Forum Testing Most Active @Mic last edited by

              @Mic sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

              @sigi234
              Vielen Dank für Dein Feedback und Deinen Test 🙂

              Klar, hatte ich vom ursprünglichen Code so übernommen und fiel mir auch schon auf, dass da ein Trennzeichen fehlt. Werde ich einbauen.

              Bitte sehr, ein langer Wunsch von mir wäre ein DP pro Person wie lange sie An/Abwesend war?

              Mic 2 Replies Last reply Reply Quote 0
              • Mic
                Mic Developer @sigi234 last edited by

                @sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                ein langer Wunsch von mir wäre ein DP pro Person wie lange sie An/Abwesend war?

                Coole Idee. Werde mal sehen, das auch einzubauen, ist eine schöne Übung in Javascript 😁 . Also ein State wie "lastOffset" jeweils unter der Person. Wie Anzeigen, in Stunden/Minuten? z.B. "36h 20m"? Oder reicht der Stundenwert gerundet? Ich denke eigentlich Stundenwert reicht.

                sigi234 1 Reply Last reply Reply Quote 0
                • sigi234
                  sigi234 Forum Testing Most Active @Mic last edited by

                  @Mic sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                  Ich denke eigentlich Stundenwert reicht.

                  Ja, das denke ich auch...........

                  1 Reply Last reply Reply Quote 0
                  • Mic
                    Mic Developer @sigi234 last edited by

                    @sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                    @Mic

                    Könnte man beim DP List of present persons: ein Komma einfügen?
                    Also: Name,Name,Name,

                    Ist nun eingebaut in Version 0.5: presence-script-for-tr-064-community-adapter

                    Ebenso werden die Namen nun alphabetisch sortiert.

                    Hierzu kamen folgende Einstellungen hinzu.

                    /*******************************************************************************
                     * Erweiterte Einstellungen
                     ******************************************************************************/
                    
                    /********
                     * Datenpunkt presentPersonsString
                     ********/
                    // Trennzeichen für 'presentPersonsString'. Dieses wird zwischen den einzelnen anwesenden Namen gesetzt.
                    const PRESENT_PERSONS_DELIMITER = ', ';
                    
                    // Text in für 'presentPersonsString', falls niemand anwesend.
                    const PRESENT_PERSONS_NONE_TXT = '';
                    
                    1 Reply Last reply Reply Quote 2
                    • Mic
                      Mic Developer @sigi234 last edited by

                      @sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                      ein langer Wunsch von mir wäre ein DP pro Person wie lange sie An/Abwesend war?

                      Ist nun eingebaut in Version 0.6: presence-script-for-tr-064-community-adapter

                      Neuer Datenpunkt: persons.xxx.offsetEntryLeave

                      Gibt hierfür eine Option, was angezeigt wird:

                      /********
                       * Option für Datenpunkt "persons.xxx.offsetEntryLeave" (zeigt , wie lange die Person an- oder abwesend war.)
                       ********/
                      // Wenn true: Im Datenpunkt werden Stunden und Minuten angezeigt, z.B. 10:36 (bei 10 Stunden 36 Min.), oder 48:12 (bei 48 Std. 12 Min.)
                      // Wenn false: Es werden nur Stunden gerundet angezeigt, z.B. 11 (bei 10 Stunden 36 Minuten) oder 48 (bei 48 Std. 12 Min.)
                      const OFFSET_HOURS_AND_MINS = true;
                      
                      1 Reply Last reply Reply Quote 3
                      • FredF
                        FredF Most Active Forum Testing last edited by

                        @Mic
                        Funktioniert... Danke fürs teilen.
                        Jetzt lass ich mal die Anwesenheit über unifi und den TR laufen, mal sehen wer gewinnt 😀

                        1 Reply Last reply Reply Quote 0
                        • Mic
                          Mic Developer last edited by

                          Freut mich, dass es funktioniert.

                          Hier noch ein Anwendungsszenario:
                          Alle Alexas sind bei mir an einer Osram-Steckdose. Diese schalten sich alle aus, sobald keiner mehr anwesend. Allerdings wäre es ziemlich doof, wenn ein Wecker im Schlafzimmer aktiv ist, und die Fritzbox Nachts warum auch immer meinen sollte, es sei keiner zu Hause und alle Alexas ausschaltet. Daher habe ich folgendes Script geschrieben, das prüft, ob ein Wecker im Alexa Schlafzimmer aktiv ist, und schaltet nur dann aus, wenn kein Wecker aktiv.

                          Eines der Beispiele, warum ioBroker so super ist, man kann hier alles individuell gestalten.

                          Hier das Script:

                          /**
                           * Schaltet ein Alexa-Gerät nur dann per Osram-Steckdose ab, wenn im Gerät auch kein Wecker gesetzt ist.
                           * Dies dient dazu, dass das Gerät bei aktivem Wecker nicht abgeschaltet wird, und der TR064-Adapter Abwesenheit meldet.
                           * Ist eine Sicherheitsstufe, falls der Adapter bzw. die Fritzbox fälschlicherweise abwesend meldet, damit der Wecker 
                           * auch wirklich auslöst.
                           * Autor Mic, Stand: 17.07.2019
                           * @param {string}    statePlug           State-Pfad zur Osram-Steckdose, an der das Alexa-Gerät hängt.
                           * @param {string}    stateAlexa          State-Pfad zu Alexa-Gerät, z.B. alexa2.0.Echo-Devices.ABCDEF0123XYZABC
                           * @param {boolean}   [logInfo=false]     Optional: true: Logausgabe als Info, false: keine Logausgabe
                           */
                          function offAlexaIfNoAlarm(statePlug, stateAlexa, logInfo) {
                              
                              let alarmCount = alexaAlarms(stateAlexa, logInfo);
                          
                              if (alarmCount > 0) {
                                  // Wir machen nichts, da mindestens 1 Wecker gestellt ist
                                  if (logInfo) log('Keine Aktion, da ' + alarmCount + ' Wecker gestellt ' + ((alarmCount > 1)  ? 'sind.' : 'ist.'));
                              } else {
                                  // Ausschalten, da kein Wecker aktiv.
                                  setState(statePlug, false);
                                  if (logInfo) log('Kein Wecker gestellt, daher wird Alexa ausgeschaltet.');
                              }
                          
                              /**
                               * Prüft, wie viele Wecker bei einem Alexa-Gerät aktiv sind.
                               * @param {string}    alexaDeviceState       State zu Alexa-Gerät, z.B. alexa2.0.Echo-Devices.ABCDEF0123XYZABC
                               * @param {boolean}   [logInfo=false]        Optional: true: Logausgabe als Info, false: keine Logausgabe
                               * @return {number}   Anzahl der gestellten, also aktiven Wecker.
                               */
                              function alexaAlarms(alexaDeviceState, logInfo) {
                                  let mSelector = $('state[id=' + alexaDeviceState + '.Alarm.*.enabled' + '$]'); // Gibt alle State-IDs zurück, die dem Pattern entsprechen
                                  let counter = 0;
                                  mSelector.each(function(id, i) {
                                      // Nun haben wir mit "id" die State-ID, z.B. alexa2.0.Echo-Devices.xxxxxxxxxxxxxxX.Alarm.xxxxxxx.enabled
                                      // Damit prüfen wir, ob der Wecker aktiv ist (.enabled = true)
                                      if (getState(id).val) {
                                          // Treffer
                                          counter =+ 1;
                                          if(logInfo) {
                                              let alarmMainState = id.substring(0, id.length-8); // get alarm main state by removing last 8 chars (.enabled)
                                              let alarmTime = getObject(alarmMainState).common.name; // common.name contains the alarm time as string
                                              log('Gesetzten Wecker für ' + alarmTime + ' gefunden.');
                                          }
                                      }
                                  });
                                  return counter;
                              }
                          }
                          
                          
                          sigi234 1 Reply Last reply Reply Quote 0
                          • sigi234
                            sigi234 Forum Testing Most Active @Mic last edited by

                            @Mic sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                            Alle Alexas sind bei mir an einer Osram-Steckdose. Diese schalten sich alle aus, sobald keiner mehr anwesend

                            Interessant, warum hast du das so gemacht? Die Alexas brauchen ja wieder 2 Minuten um sich zu verbinden.
                            Also schalten sie sich immer aus oder ein wenn niemand da ist.

                            R 1 Reply Last reply Reply Quote 0
                            • R
                              ReverZ @sigi234 last edited by

                              @sigi234
                              Ich vermute um Strom zu sparen?

                              1 Reply Last reply Reply Quote 0
                              • Mic
                                Mic Developer last edited by

                                Strom sparen und Einbrecher, usw. Habe es nicht gern, wenn Alexa aktiv ist, wenn ich nicht da bin. Mache ich schon seit vielen Monaten so.

                                sigi234 1 Reply Last reply Reply Quote 0
                                • sigi234
                                  sigi234 Forum Testing Most Active @Mic last edited by

                                  @Mic sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                                  Habe es nicht gern, wenn Alexa aktiv ist, wenn ich nicht da bin

                                  Ja, leider gibt es ja keinen DP um das Micro zu deaktivieren...........

                                  Mic 1 Reply Last reply Reply Quote 0
                                  • Mic
                                    Mic Developer @sigi234 last edited by

                                    @sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:

                                    Ja, leider gibt es ja keinen DP um das Micro zu deaktivieren...........

                                    Oder wohl gut so seitens Amazon, denn sonst könnte ein "böses" Programm das "manuell" abgeschaltete Mikrofon einschalten.

                                    1 Reply Last reply Reply Quote 0
                                    • R
                                      ReverZ last edited by

                                      Daher ist es um so dringender, dass Amazon die kürzlich eingeführte Stimmerkennung auch endlich dazu nutzt eine Option anzubieten, dass nur bekannte Stimmen in Interaktion mit Alexa treten dürfen.
                                      Damit kann man dann auch verhindern, dass "lustige" Gäste mal eben alles umprogrammieren oder die Musiksteuerung übernehmen.
                                      Ich denke auch in diesem Punkt ist Google bereits einen Schritt voraus.

                                      J 1 Reply Last reply Reply Quote 0
                                      • J
                                        Jan1 @ReverZ last edited by

                                        @ReverZ
                                        Das wird leider nicht so leicht funktionieren. Alexa erkennt zwar wer zur Ihr spricht, nur wenn Du gerade mal etwas undeutlicher wirst (Erkältung oder sonst was), dann würdest Dich wieder nur ärgern, weil sie Deine Befehle nicht mehr ausführt. Die Erkennung de Sprache an sich ist schon ne Herausforderung, dann noch einzelne Personen zu unterscheiden und trotzdem alles wie gewünscht umsetzten, das wird noch ne Weile dauern.
                                        Beispiel, Du bist mit 5 Leuten im Raum die Du sehr gut kennst mit verbundenen Augen, alle reden gleichzeitig und Du sollst zuordnen wer was gesagt hat. Wenn nicht jeder gerade einen sehr dominanten unterschiedlichen Dialekt spricht, wird das selbst für Dich schon recht schwierig.

                                        R 1 Reply Last reply Reply Quote 0
                                        • R
                                          ReverZ @Jan1 last edited by

                                          @Jan1

                                          Vielleicht hast du Recht aber aus dem Bauch heraus würde ich sagen, dass es viel leichter ist eine Stimme zu charakterisieren als die Spracherkennung an sich.
                                          Das verhält sich bei Babys sicher ähnlich. Diese erkennen viel früher WER mit ihnen spricht als WAS mit ihnen gesprochen wird. Ich vermute bei der KI sieht es nicht anders aus.
                                          In einem Haushalt mit beispielsweise 4 Personen muss Amazon auch nur diese Stimmen dieser Personen auseinanderhalten können.
                                          D.h. meine Stimme muss sich nur von 3 anderen Personen unterscheiden.

                                          J 1 Reply Last reply Reply Quote 0
                                          • J
                                            Jan1 @ReverZ last edited by

                                            @ReverZ
                                            Richtig, nur eben beides gleichzeitig und dann noch richtig v erstehen.
                                            Ist ein Traum und kommt mit Sicherheit, irgendwann.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            708
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            33
                                            115
                                            18037
                                            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