Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Tipp] Anwesenheit mit unifi-Adapter

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Tipp] Anwesenheit mit unifi-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • lobomau
      lobomau last edited by Jey Cee

      Ich möchte meine positive Erfahrung mit Anwesenheit und dem unifi-Adapter teilen.

      Eine Kombination aus BT-Dongle und Handy anpingen funktioniert bei mir bisher gut, bei meiner Frau sind leider nachts Unterbrechungen, obwohl beides die gleichen Android Handys sind.

      Deswegen die folgende zusätzliche Möglichkeit. In orange sieht man die Daten vom Unifi-Adapter und in blau die Kombination aus BT und ping (gegen 23 Uhr umgestellt):
      Unbenannt.JPG
      Ich hatte festgestellt, dass solange man im wlan des unifi ist, der Wert des clients _uptime_by_uap stetig steigt (logisch).

      Das folgende Script schaut nun alle zwei Minuten, ob der Wert von _uptime_by_uap zwei Minuten nicht mehr geändert hat. Wenn er sich nicht ändert wird die Variable false. Vielleicht bringt es bei jemanden auch den gewünschten Effekt.
      Unbenannt2.JPG

      M 1 Reply Last reply Reply Quote 0
      • N
        nibblerrick last edited by

        Auch ein Ansatz. Ich habe damit auch herumgespielt und hier http://forum.iobroker.net/viewtopic.php … ifi#p90821 meinen Ansatz hingeschrieben.

        Ob technisch gesehen deine Abfrage alle zwei Minuten oder meine Timeoutvariante ressourcenschonender sind o.ae. habe ich aber keine Ahnung… 🙂

        1 Reply Last reply Reply Quote 0
        • P
          pix last edited by

          Hallo,

          das liest sich ja super.

          Hier gibt es noch einen weiteren Ansatz über lastseen: http://forum.iobroker.net/viewtopic.php … 100#p90821

          und im gleichen Thread auch noch diesen, der einen extra Bibliothek im javascript-Adapter benötigt (etwas aufwendiger): http://forum.iobroker.net/viewtopic.php ... =80#p87286

          Kannst du mir dein Blockly Script als Javascript ausgeben? Ich würde es gern bei mir auch testen.

          Danke,

          Pix

          EDIT: Da war jemand schneller ...

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

            @pix:

            Kannst du mir dein Blockly Script als Javascript ausgeben? Ich würde es gern bei mir auch testen. `
            Gerne :

            createState("Variablen.SIE_UAP", function () {
            });
            
            schedule("*/2 * * * *", function () {
              if (getState("unifi.0.default.clients.c0:ee:fb:fd:ef:68._uptime_by_uap").lc - ((new Date().getTime()) - 120000) < 0 == true) {
                setState("javascript.0.Variablen.SIE_UAP"/*Variablen.SIE_UAP*/, false);
              } else {
                setState("javascript.0.Variablen.SIE_UAP"/*Variablen.SIE_UAP*/, true);
              }
            });
            
            1 Reply Last reply Reply Quote 1
            • P
              pix last edited by Jey Cee

              Hallo,

              vielen Dank für das Skript.

              Ich habe es für meine Zwecke angepasst und will das auch hier teilen. 😄

              Meine Zwecke heisst: Mehrere Nutzer. Dazu werden die Daten der Nutzer oben im Objekt wificlients eingegeben, Skript macht den Rest.

              Unter

              javascript.[instanz].Unifi.Anwesenheit.UAP.[Name_des_Nutzers]
              

              wird dann der Status true oder false gesetzt. Dieser Datenpunkt wird dann mit History/Influx geloggt.

              
              /* Weiteres Skript zur Überwachung des Uptime Datenpunktes im Unifi-Adapter
              
              fragt alle zwei Minuten den Datenpunkt _uptime_by_uap des eingebuchten Gerätes ab
              wenn keine Änderung, dann Anwesenheit = false
              
              18.10.2017 erstellt von lobomau auf Basis des Unifi Adapters von jens_maus
                         http://forum.iobroker.net/viewtopic.php?f=30&t=8556#p90883
              19.10.2017 angepasst von Pix (mehrere Geräte)
              
              */
              
              const wificlients = {
                  "devices": [
                      {
                          "nutzer": "Tom",
                          "mac": "8a:8b:8c:8f:8g:ab",
                          "name": "Kater's iPhone",
                          "geraet": "iPhone"
                      },
                      {
                          "nutzer": "Jerry",
                          "mac": "e1:e2:e3:e4:e5:e6",
                          "name": "Maeusephone",
                          "geraet": "iPhone"
                      }
                  ] // Ende devices
              };
              
              const logging = false;
              const fC = false; // forceCreation für createState
              
              // Ab hier nix mehr ändern ++++++++++++++++++++++
              
              function createStates() {
                  for (var j=0; j<wificlients.devices.length; j++) {
                      var idUAP = "javascript." + instance + ".Unifi.Anwesenheit.UAP." + wificlients.devices[j].nutzer;
                      createState(idUAP, false, fC, {
                          name: 'WLAN Anwesenheit (UAP) - ' + wificlients.devices[j].nutzer,
                          desc: 'Anwesenheit über Uptime-Datenpunkt des Unifi Adapters',
                          type: 'boolean',
                          def: false,
                          role: 'indicator',
                          custom: {
                              "influxdb.0": {
                                  "enabled": true,
                                  "changesOnly": false,
                                  "debounce": "",
                                  "retention": 63072000 // 2 Jahre
                              }
                          }
                      });    
                  }   
              }
              
              function checkUAP () {
                  for (var i=0; i<wificlients.devices.length; i++) {
                      // UAP abfragen
                      var lchange = getState("unifi.0.default.clients." + wificlients.devices[i].mac + "._uptime_by_uap").lc;
                      var uap_anwesenheit = (lchange - ((new Date().getTime()) - 120000) < 0 === true) ? false : true;
                      
                      if (logging) log('Gerät ' + wificlients.devices[i].geraet + ' von ' + wificlients.devices[i].nutzer + ' ist ' + uap_anwesenheit);
                      
                      // Datenpunkt verzögert beschreiben
                      var idUAP = "javascript." + instance + ".Unifi.Anwesenheit.UAP." + wificlients.devices[i].nutzer;
                      setStateDelayed(idUAP, uap_anwesenheit, 1000);
                      
                  }
              } 
              
              // alle 2min
              schedule("*/2 * * * *", checkUAP);
              
              // bei Skriptstart
              createStates(); // Datenpunkte erstmal anlegen
              setTimeout(function() { // 2s verzögert Abfrage erstmals ausführen
                  checkUAP();
              }, 2*1000);
              
              

              Viel Spaß,

              Gruß
              Pix

              M Z 2 Replies Last reply Reply Quote 2
              • lobomau
                lobomau last edited by Jey Cee

                @pix:

                Hallo,

                vielen Dank für das Skript.

                Ich habe es für meine Zwecke angepasst und will das auch hier teilen. 😄

                Meine Zwecke heisst: Mehrere Nutzer. Dazu werden die Daten der Nutzer oben im Objekt wificlients eingegeben, Skript macht den Rest.

                Unter

                javascript.[instanz].Unifi.Anwesenheit.UAP.[Name_des_Nutzers]
                

                wird dann der Status true oder false gesetzt. Dieser Datenpunkt wird dann mit History/Influx geloggt.

                /* Weiteres Skript zur Überwachung des Uptime Datenpunktes im Unifi-Adapter
                >! fragt alle zwei Minuten den Datenpunkt _uptime_by_uap des eingebuchten Gerätes ab
                wenn keine Änderung, dann Anwesenheit = false
                >! 18.10.2017 erstellt von lobomau auf Basis des Unifi Adapters von jens_maus
                          http://forum.iobroker.net/viewtopic.php?f=30&t=8556#p90883
                19.10.2017 angepasst von Pix (mehrere Geräte)
                >! */
                >! const wificlients = {
                   "devices": [
                       {
                           "nutzer": "Tom",
                           "mac": "8a:8b:8c:8f:8g:ab",
                           "name": "Kater's iPhone",
                           "geraet": "iPhone"
                       },
                       {
                           "nutzer": "Jerry",
                           "mac": "e1:e2:e3:e4:e5:e6",
                           "name": "Maeusephone",
                           "geraet": "iPhone"
                       }
                   ] // Ende devices
                };
                >! const logging = false;
                const fC = false; // forceCreation für createState
                >! // Ab hier nix mehr ändern ++++++++++++++++++++++
                >! function createStates() {
                   for (var j=0; j<wificlients.devices.length; 0="==" 2/63072000/j++)/{/var/iduap="javascript." +/instance/".unifi.anwesenheit.uap."/wificlients.devices[j].nutzer;/createstate(iduap,/false,/fc,/name:/'wlan/anwesenheit/(uap)/-/'/wificlients.devices[j].nutzer,/desc:/'anwesenheit/über/uptime-datenpunkt/des/unifi/adapters',/type:/'boolean',/def:/role:/'indicator',/custom:/"influxdb.0":/"enabled":/true,/"changesonly":/"debounce":/"",/"retention":/jahre/}/});/function/checkuap/()/for/(var/i="0;" i<wificlients.devices.length;/i++)/uap/abfragen/lchange="getState(&quot;unifi.0.default.clients.&quot;" wificlients.devices[i].mac/"._uptime_by_uap").lc;/uap_anwesenheit="(lchange" ((new/date().gettime())/120000)/</true)/?/false/:/true;/if/(logging)/log('gerät/wificlients.devices[i].geraet/von/wificlients.devices[i].nutzer/ist/uap_anwesenheit);/datenpunkt/verzögert/beschreiben/wificlients.devices[i].nutzer;/setstatedelayed(iduap,/uap_anwesenheit,/1000);/alle/2min/schedule("*/*/*",/checkuap);/bei/skriptstart/createstates();/datenpunkte/erstmal/anlegen/settimeout(function()/2s/abfrage/erstmals/ausführen/checkuap();/},/2*1000);/<e=""></wificlients.devices.length;
                

                Viel Spaß,

                Gruß
                Pix

                Danke für das Script. Habe es gleich ausprobiert. Die beiden Handy werden korrekt wiedergegeben, das eine true, das andere false.
                Was auffällt: die Zahnräder zum Einstellen der state settings war bereits blau, dann wollte ich es Anklicken zum loggen. Das wird aber nicht gesichert, ich kann also nicht loggen. Die states sind übrigens rot... hin und wieder werden sie kurz grün.
                Ich habe es auf javascript.1-instanz laufen und habe die Pfade in Zeile 36 und 64 für mich angepasst.

                1 Reply Last reply Reply Quote 0
                • RoE19xx
                  RoE19xx last edited by Jey Cee

                  Vielen Dank allen Beteiligten für das Script.

                  Hatte auch die selben Probleme wie von Lobomau beschrieben. Habe bei meinem SQL History Adapter nach Fehlern gesucht, bis ich dann (leider erst am Ende) Dein Script genauer angeschaut habe.

                  Da ist mir aufgefallen das Du es, wie Du schreibst "für Dich angepasst hast". Sprich Du hast die Aufzeichnung schon drinnen aber eben auf Basis vom InfluxDB History Adapter 😄 .

                  Habe dann bei mir den entsprechenden Teil einfach entfernt, den bestehenden States-Zweig nochmal gelöscht und gut war es (@Lobomau: dürfte auch die Lösung für deine Frage sein).

                  custom: {
                                 "influxdb.0": {
                                     "enabled": true,
                                     "changesOnly": false,
                                     "debounce": "",
                                     "retention": 63072000 // 2 Jahre
                                 }
                             }
                  

                  Hätte ich mir nur Deinen Code vorher genauer angeschaut. Hätte mir einiges an Zeit erspart.

                  Aber auch hier, habe ich wieder daraus gelernt :mrgreen:

                  Gruß

                  Roland

                  1 Reply Last reply Reply Quote 0
                  • I
                    IanS last edited by Jey Cee

                    hallo und frohe Ostern euch allen noch,

                    ich bin auf der Suche nach einer Anwesenheitssteuerung auf diesen Post gekommen.

                    Ich wollte mir das Blockly skript aus dem ersten Post nachbauen…..

                    Ich blick es aber gerade nicht so ganz, ich hab alles gefunden (glaube ich zumindest)

                    bis auf den in meinem Bild eingekreisten Teil.....
                    Blockly Anwesenheit.jpg

                    Kann mir vielleicht jemand sagen was das ist? Würde mich sehr freuen.

                    Österliche Grüße

                    FloH

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

                      Das ist ein Minus. Findest bei Mathematik, zweites von oben.

                      1 Reply Last reply Reply Quote 0
                      • I
                        IanS last edited by

                        Hey,

                        vielen Dank genau das war es!

                        Hatte es gestern auch zum laufen bekommen

                        zusammen mit einer Pushover Meldung.

                        Die ist dann allerdings auch alle 2 Minuten gekommen…...

                        Script deaktiviert und was passiert?

                        Die Meldung kommt trotzdem alle 2 Minuten....

                        Sogar nach Löschen des Scriptes, nur ein Neustart hat den Fehler behoben.

                        Hab es dann heute nochmals ohne Pushover versucht, da lief dann gar nix mehr.

                        Muss mich die Tage noch mal ganz in Ruhe da dran setzen.

                        Gruß

                        FloH

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

                          Eigentlich sollte die pushover Meldung nicht mehr kommen, wenn man das Script abschaltet. Wahrscheinlich läuft da was weiter, was man nicht so sieht. Aber das Script scheint ja nicht ganz korrekt zu sein… du willst ja nicht alle 2 min. eine Meldung erhalten, sondern nur wenn sich die Ab/Anwesenheit ändert. Kannst einfach einen Block dadrunter machen wo der Trigger dann die Änderung der AN/Abwesenheit ist.

                          1 Reply Last reply Reply Quote 0
                          • I
                            IanS last edited by

                            So ich habs jetzt noch ein paar mal in verschiedenen Variationen probiert.

                            Hab sogar IoBroker neu aufgesetzt, laufen tut aber gar nichts mehr….

                            Aktuell sieht es bei mir so aus, aber laufen tut nix....
                            2820_blockly_anwesenheit.jpg

                            Ich hatte auch noch eine Variante mit der Sperre damit ich nicht alle zwei Minuten die

                            Meldung bekomme, geht wie alles andere auch nicht….
                            filename="Blockly AnwTest.jpg" index="0">~~

                            Gibt es eine Möglichkeit zu testen ob Skripte laufen?Testskripte um die allgemeine Funktion zu testen?

                            Gruß

                            FloH

                            A 1 Reply Last reply Reply Quote 0
                            • S
                              Sprite01 last edited by

                              Hallo Pix,
                              könntest du dein JS-Script hier noch mal zur Verfügung stellen ?
                              Ich kenne mich mit dem neu gestalteten Forum noch nicht aus, habe aber den Eindruck
                              das die Scripte von der Darstellung "verrissen" sind.

                              1 Reply Last reply Reply Quote 0
                              • A
                                ahfreezer @IanS last edited by

                                @IanS sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                So ich habs jetzt noch ein paar mal in verschiedenen Variationen probiert.

                                Hab sogar IoBroker neu aufgesetzt, laufen tut aber gar nichts mehr….

                                Aktuell sieht es bei mir so aus, aber laufen tut nix....
                                2820_blockly_anwesenheit.jpg

                                Ich hatte auch noch eine Variante mit der Sperre damit ich nicht alle zwei Minuten die

                                Meldung bekomme, geht wie alles andere auch nicht….
                                filename="Blockly AnwTest.jpg" index="0">~~

                                Gibt es eine Möglichkeit zu testen ob Skripte laufen?Testskripte um die allgemeine Funktion zu testen?

                                Gruß

                                FloH

                                Ich habe dein Skript nachgebaut und habe exakt die gleiche Reaktionen des System. Skript längst angepasst.
                                Dennoch kommen die Pushmitteilungen immer noch. Selbst wenn das Skript deaktiviert ist. Hast du dafür mittlerweile eine Lösung gefunden?

                                Darüberhinaus scheint der unifi Adapter sehr CPU intensiv zu sein. In der Spitze zieht der Adapter > 90% der CPU Kapazität.
                                Habt ihr ähnliches festgestellt?

                                lobomau 1 Reply Last reply Reply Quote 0
                                • lobomau
                                  lobomau @ahfreezer last edited by

                                  @ahfreezer Nein, 90% kann ich nicht bestätigen. Es ist aber schon Mal so, dass bei mir kein anderer Adapter so viele Objekte anlegt.
                                  Welches Aktualisierungsintervall hast du eingestellt und auf welcher Hardware läuft ioBroker. Wie stellst du die 90% fest?

                                  A 1 Reply Last reply Reply Quote 0
                                  • W
                                    Wildbill last edited by

                                    Wegen der puren menge an Objekten und Datenpunkten, die der unifi-Adapter bei mir angelegt hat, bin ich den Umweg über FHEM gegangen. Dort kann ich im unifi-Adapter gezielt die Geräte rausfiltern mit den Daten, die mich interessieren und dann nur die via MQTT an den iobroker weiterschieben. Somit habe ich im iobroker nur die unifi-Datenpunkte, die ich benötige. Bissle umständlich, aber FHEM läuft bei mir eh nebenher wegen zwei CULs und Geräten, die der CUL-Adapter von iobroker nicht kann. Und obe jtzt auf nem NUC eine VM mehr oder weniger läuft...

                                    Gruss, Jürgen

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      ahfreezer @Wildbill last edited by

                                      @Wildbill sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                      Wegen der puren menge an Objekten und Datenpunkten, die der unifi-Adapter bei mir angelegt hat, bin ich den Umweg über FHEM gegangen. Dort kann ich im unifi-Adapter gezielt die Geräte rausfiltern mit den Daten, die mich interessieren und dann nur die via MQTT an den iobroker weiterschieben. Somit habe ich im iobroker nur die unifi-Datenpunkte, die ich benötige. Bissle umständlich, aber FHEM läuft bei mir eh nebenher wegen zwei CULs und Geräten, die der CUL-Adapter von iobroker nicht kann. Und obe jtzt auf nem NUC eine VM mehr oder weniger läuft...

                                      Gruss, Jürgen

                                      Ja...FHEM hatte ich ursprünglich auch parallel laufen, habe mich nach einem Hardwareschaden dann dazu entschieden nur noch ioBroker zu nutzen. Mich interessieren für meine Steuerung nur die Daten zu den Endgeräten im USG von Unifi. Wäre klasse, wenn man das noch parametrieren könnte im Adapter.

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        ahfreezer @lobomau last edited by

                                        @lobomau sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                        @ahfreezer Nein, 90% kann ich nicht bestätigen. Es ist aber schon Mal so, dass bei mir kein anderer Adapter so viele Objekte anlegt.
                                        Welches Aktualisierungsintervall hast du eingestellt und auf welcher Hardware läuft ioBroker. Wie stellst du die 90% fest?

                                        Ich habe auf Grund der hohen Auslastung das Intervall auf 2min gesetzt (Standard 60sek)
                                        Da ich aber zeitnah Trigger für die Abwesenheit haben möchte, wollte ich nicht mehr als 2min warten.

                                        ioBroker läuft bei mir auf einem HP ThinClient mit einem Intel Atom N280 (2x 1,66GhZ) und 2 RAM
                                        Bis dato vollkommen ausreichend.

                                        Die 90% habe ich gesehen, als ich per SSH und "TOP" mir die "Verbraucher" angeschaut habe. Die Last liegt immer so bei 10-20% (abhängig welcher Adapter gerade arbeitet. Sobald unifi durchstartet steigt die Last wie folgt.

                                        Hab leider nicht den Peak getroffen
                                        8562f212-92d8-4351-bfb7-514f00a5d2c1-image.png

                                        Wenn unifi durch ist sieht es dann wieder so aus. Komisch finde ich, dass trotz intervall auf 2min unifi all 30 Sekunden die Last erzeugt.

                                        aa323c24-1331-4e98-a19a-5a266531208b-image.png

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @ahfreezer last edited by Homoran

                                          @ahfreezer sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                          Sobald unifi durchstartet steigt die Last wie folgt.

                                          Also nur beim "anfahren"?

                                          Ich habe es gerade mal bei meiner Installation gecheckt:
                                          Proxmox_Last.png
                                          Der Unify Adapter baruch zwar nach dem Controller die meisten Ressourcen, ist aber (im Lauf) gerade mal 0,6% eines CPU-Kerns.

                                          Das ganze läuft in einer Proxmox VM auf einem NUC6i3
                                          Der Unify-controller läuft da auf einer zweiten VM

                                          Das Abfrageintervall beträgt 60sekunden

                                          A 1 Reply Last reply Reply Quote 0
                                          • A
                                            ahfreezer @Homoran last edited by

                                            @Homoran sagte in [Tipp] Anwesenheit mit unifi-Adapter:

                                            Also nur beim "anfahren"?

                                            Immer dann, wenn er die Daten neu abholt. Also stand jetzt alle 2min der Peak.
                                            Guck mal zur Laufzeit, wenn er gerade die Daten zieht ob's dann auch die 0,6% sind oder im Verhältnis zu deinem deutlich performanteren Rechner auch eine (deutliche) Steigerung sichtbar ist.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            730
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            33
                                            85
                                            18775
                                            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