Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Vorlage] UniFi WLAN Anwesenheitskontrolle

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[Vorlage] UniFi WLAN Anwesenheitskontrolle

Scheduled Pinned Locked Moved JavaScript
javascripttemplate
18 Posts 6 Posters 2.3k Views 10 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T TobStar

    Hallo zusammen,

    hier einmal eine einfache Anwesenheitskontrolle über den UniFi Controller. Dieses wertet die im WLAN angemeldeten Geräte aus und prüft in meinem Fall ob das Handy im WLAN ist oder nicht.

    Zur Verwendung mit dem UniFi Adapter (ioBroker.unifi) von @braindead

    Die aktuellste Version auf GitHub: https://github.com/GodHunter/iobroker-unifi-presence

    // ************************************************************
    // KONFIGURATION
    //
    // pfad: Gibt an wo die Datenpunkte erstellt werden
    // json: Enthält die Konfigurationsdaten (Name d. Person, MAC Adresse des zu Überwachenden Geräts, Zeit in Minuten bis als Abwesend markiert)
    // telegram: Versendet bei Bedarf eine Nachricht via Telegram Adapter
    //
    // ************************************************************
    
    const pfad      = '0_userdata.0.Anwesenheit.';
    const json      = '{"person":[{"name":"PERSON1", "mac":"12:34:56:78:90:ab", "zeit":3},{"name":"PERSON2", "mac":"12:34:56:78:90:ab", "zeit":5}]}';
    const telegram  = true;
    
    // AB HIER KEINE ÄNDERUNGEN MEHR VORNHMEN
    on({id: 'unifi.0.info.connection', change: "any"}, function (obj){
    
        const now   = new Date();
        const array = JSON.parse(json);    
        var total   = array.person.length;
        
        createStates(array);
    
        array.person.forEach(function(person){
    
            var seen = new Date( getState('unifi.0.default.clients.'+ person.mac +'.last_seen').val );
    
            if( ( now.getTime() - seen.getTime() ) > ( person.zeit * 60000 ) ){
                
                if( getState(pfad + person.name).val === true) {
                    setState(pfad + person.name, false, true);
    
                    if(telegram){
                        setTimeout(function() {
                            send(person.name +' ist gegangen.');
                        }, 5000);
                    }
    
                }
    
                total = total -1;
    
            } else {
    
                if( getState(pfad + person.name).val === false ) {
                    setState(pfad + person.name, true, true);
                    if(telegram) {
                        setTimeout(function() {
                            send(person.name +' ist angekommen.');
                        }, 5000);
                    }
                }
    
            }
    
        })
    
        setState(pfad +'Anwesend', total, true);
        setState(pfad +'Abwesend', (array.person.length - total), true);
    
    });
    
    function send(nachricht){
        
        setTimeout(function() {
            nachricht = '<b>Anwesenheit</b>\r\n'+ nachricht;
        
            sendTo("telegram.0", "send", {
                "text": [nachricht].join(''),
                parse_mode: "HTML"
            });
    
        }, 2000);
    
    }
    
    function createStates(personen){
        
        createState(pfad +'Anwesend', 99, {read:true, write:true, type:'number', desc:'Anzahl Personen anwesend'});
        createState(pfad +'Abwesend', 99, {read:true, write:true, type:'number', desc:'Anzahl Personen abwesend'});
    
        personen.person.forEach(function(person){
            createState(pfad + person.name, false, {read:true, write:true, type:'boolean', def:false, desc:'Anwesenheitsstatus von '+ person.name});    
        });
    
    }
    
    H Offline
    H Offline
    homecineplexx
    wrote on last edited by
    #5

    @TobStar
    hallo
    prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
    Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

    C T 2 Replies Last reply
    0
    • T TobStar

      @CruziX danke für den Hinweis, bislang speichere ich das alles unter Javascript.0 aber sobald der Adapter gelöscht werden würde wären die Datenpunkte weg.

      Gibt es noch weitere Gründe für das Userdata Verzeichnis?

      C Offline
      C Offline
      CruziX
      wrote on last edited by
      #6

      @TobStar Gibt es einen Grund wieso du die Variable json als string und nicht als Objekt direkt verwendest?
      So wandelst du später unnötiger weise eh in ein Object

      T 1 Reply Last reply
      0
      • H homecineplexx

        @TobStar
        hallo
        prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
        Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

        C Offline
        C Offline
        CruziX
        wrote on last edited by CruziX
        #7

        @homecineplexx sagte in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

        @TobStar
        hallo
        prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
        Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

        Ich nutze Unifi (leider) nicht.
        Hab mir nur mal dein Skript angeschaut :)

        Edit: Wüsste jetzt nicht wieso man in userdata Änderungen später mitbekommen sollte :thinking_face:

        H 1 Reply Last reply
        0
        • C CruziX

          @homecineplexx sagte in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

          @TobStar
          hallo
          prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
          Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

          Ich nutze Unifi (leider) nicht.
          Hab mir nur mal dein Skript angeschaut :)

          Edit: Wüsste jetzt nicht wieso man in userdata Änderungen später mitbekommen sollte :thinking_face:

          H Offline
          H Offline
          homecineplexx
          wrote on last edited by homecineplexx
          #8

          @CruziX said in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

          @homecineplexx sagte in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

          @TobStar
          hallo
          prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
          Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

          Ich nutze Unifi (leider) nicht.
          Hab mir nur mal dein Skript angeschaut :)

          Ähm, ich hab auch TobStar angeschrieben ;-)

          @CruziX und ich hab auch nicht geschrieben dass man die Änderungen in userdata.0 später mitbekommt. ich rede vom Unifi Adapter. Da müßte man alle 10 sekunden pollen
          Lesen ist Macht ;-)

          C 1 Reply Last reply
          0
          • H homecineplexx

            @CruziX said in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

            @homecineplexx sagte in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

            @TobStar
            hallo
            prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
            Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

            Ich nutze Unifi (leider) nicht.
            Hab mir nur mal dein Skript angeschaut :)

            Ähm, ich hab auch TobStar angeschrieben ;-)

            @CruziX und ich hab auch nicht geschrieben dass man die Änderungen in userdata.0 später mitbekommt. ich rede vom Unifi Adapter. Da müßte man alle 10 sekunden pollen
            Lesen ist Macht ;-)

            C Offline
            C Offline
            CruziX
            wrote on last edited by
            #9

            @homecineplexx Ach, hab ich gerade nicht drauf geachtet, sry :D

            1 Reply Last reply
            0
            • H homecineplexx

              @TobStar
              hallo
              prinzipiell eine super Sache, aber wie oft holst du dir die Daten vom Unifi Controller?
              Denn wenn die Zeitspanne recht groß eingetragen ist im Unifi Adapter, bekommst womöglich gar nicht oder recht spät eine Änderung mit oder?

              T Offline
              T Offline
              TobStar
              wrote on last edited by
              #10

              @homecineplexx per Default wird hier jede Minute der Controller abgefragt. Aber ja grundsätzlich ist das abhängig von den Einstellungen im unifi Adapter

              H 1 Reply Last reply
              0
              • T TobStar

                @homecineplexx per Default wird hier jede Minute der Controller abgefragt. Aber ja grundsätzlich ist das abhängig von den Einstellungen im unifi Adapter

                H Offline
                H Offline
                homecineplexx
                wrote on last edited by
                #11

                @TobStar said in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

                @homecineplexx per Default wird hier jede Minute der Controller abgefragt. Aber ja grundsätzlich ist das abhängig von den Einstellungen im unifi Adapter

                und was hast du eingestellt? hast du die Minute?

                T 1 Reply Last reply
                0
                • C CruziX

                  @TobStar Gibt es einen Grund wieso du die Variable json als string und nicht als Objekt direkt verwendest?
                  So wandelst du später unnötiger weise eh in ein Object

                  T Offline
                  T Offline
                  TobStar
                  wrote on last edited by
                  #12

                  @CruziX das ist eine berechtigte Frage :)
                  Ich werd's morgen nochmal auf Userdata umschreiben und die variable anpassen

                  1 Reply Last reply
                  0
                  • H homecineplexx

                    @TobStar said in [Vorlage] UniFi WLAN Anwesenheitskontrolle:

                    @homecineplexx per Default wird hier jede Minute der Controller abgefragt. Aber ja grundsätzlich ist das abhängig von den Einstellungen im unifi Adapter

                    und was hast du eingestellt? hast du die Minute?

                    T Offline
                    T Offline
                    TobStar
                    wrote on last edited by
                    #13

                    @homecineplexx ja ich hab's auf einer Minute stehen.

                    1 Reply Last reply
                    1
                    • T Offline
                      T Offline
                      TobStar
                      wrote on last edited by
                      #14

                      Hab das Script nun einmal bearbeitet und nochmal abgelegt (siehe oben). Es ist nun möglich eine Zeit zu definieren nachdem eine Person als abwesend markiert wird, sprich wenn Sie z.B. länger wie 3 Minuten nicht mehr im WLAN hängt.

                      1 Reply Last reply
                      1
                      • D Offline
                        D Offline
                        DoMM
                        wrote on last edited by DoMM
                        #15

                        Hi, ich habe dein Script in den IOBroker integriert, habe es aber nicht zum Laufen bekommen. In der Kopfzeile habe ich den Namen und die MAC der zu überwachenden Geräte eingegeben.

                        Ich habe versucht die Warnmeldungen zur verstehen, und habe dabei z.B. die Variable last_seen im Unify Controller zu finden, diese ist auch vorhanden. Wo steckt der Fehler kannst du hier helfen @TobStar?

                        3d40f1b3-8386-43f8-bdd3-f8714c5242af-image.png

                        K 1 Reply Last reply
                        0
                        • D DoMM

                          Hi, ich habe dein Script in den IOBroker integriert, habe es aber nicht zum Laufen bekommen. In der Kopfzeile habe ich den Namen und die MAC der zu überwachenden Geräte eingegeben.

                          Ich habe versucht die Warnmeldungen zur verstehen, und habe dabei z.B. die Variable last_seen im Unify Controller zu finden, diese ist auch vorhanden. Wo steckt der Fehler kannst du hier helfen @TobStar?

                          3d40f1b3-8386-43f8-bdd3-f8714c5242af-image.png

                          K Offline
                          K Offline
                          Kellerkind-86
                          wrote on last edited by
                          #16

                          @TobStar
                          verzeih mir...ich bin noch relativ frisch was sowas angeht..
                          wo baue ich das script ein ?
                          das würde mir so gefallen.
                          gruß Marcell

                          Gruß Marcell

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            australien
                            wrote on last edited by
                            #17

                            @TobStar
                            Ich habe als neuling diese Script in gebrauch und funktioniert auch sehr gut.
                            Nun hätte ich 2 Wünsche, wie kann man die Datenpunkte für Anwesend_seit (timestamp oder online Zeit) bzw Abwesend_seit (timestamp) anlegen?

                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              australien
                              wrote on last edited by australien
                              #18

                              @TobStar @CruziX
                              Ich will hier nocheinmal die Frage stellen.

                              Ich es möglich die OnlineZeit (last_seen) bzw Abwesend_seit (last_seen - uptime) noch als Datenpunkt hinzuzufügen?

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              332

                              Online

                              32.6k

                              Users

                              82.3k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe