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. ioBroker Allgemein
  4. Adapter: ioBroker.unifi

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    249

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

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

Adapter: ioBroker.unifi

Scheduled Pinned Locked Moved ioBroker Allgemein
unifi
1.0k Posts 172 Posters 418.4k Views 93 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.
  • A Offline
    A Offline
    andyb
    wrote on last edited by
    #117

    Ich hab ähnliches Problem.

    host.orangepiplus2e	2017-11-03 07:53:54.537	error	instance system.adapter.unifi.0 terminated with code 0 (OK)
    Caught	2017-11-03 07:53:54.537	error	by controller[1]: at emitOne (events.js:101:20)
    Caught	2017-11-03 07:53:54.536	error	by controller[1]: at TLSSocket.socketCloseListener (_http_client.js:286:9)
    Caught	2017-11-03 07:53:54.536	error	by controller[1]: at ClientRequest.emit (events.js:188:7)
    Caught	2017-11-03 07:53:54.536	error	by controller[1]: at emitOne (events.js:96:13)
    Caught	2017-11-03 07:53:54.535	error	by controller[1]: at Request.onRequestError (/opt/iobroker/node_modules/request/request.js:884:8)
    Caught	2017-11-03 07:53:54.535	error	by controller[1]: at Request.emit (events.js:188:7)
    Caught	2017-11-03 07:53:54.535	error	by controller[1]: at emitOne (events.js:101:20)
    Caught	2017-11-03 07:53:54.534	error	by controller[1]: at Request. (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/unifi.js:1099:11)
    Caught	2017-11-03 07:53:54.534	error	by controller[1]: at next (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:5171:25)
    Caught	2017-11-03 07:53:54.534	error	by controller[1]: at /opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:903:32
    Caught	2017-11-03 07:53:54.533	error	by controller[1]: Error: Callback was already called.
    Caught	2017-11-03 07:53:54.533	error	by controller[0]: at emitOne (events.js:96:13)
    Caught	2017-11-03 07:53:54.533	error	by controller[0]: at TLSSocket.socketErrorListener (_http_client.js:310:9)
    Caught	2017-11-03 07:53:54.532	error	by controller[0]: at ClientRequest.emit (events.js:188:7)
    Caught	2017-11-03 07:53:54.532	error	by controller[0]: at emitOne (events.js:96:13)
    Caught	2017-11-03 07:53:54.532	error	by controller[0]: at Request.onRequestError (/opt/iobroker/node_modules/request/request.js:884:8)
    Caught	2017-11-03 07:53:54.531	error	by controller[0]: at Request.emit (events.js:188:7)
    Caught	2017-11-03 07:53:54.531	error	by controller[0]: at emitOne (events.js:101:20)
    Caught	2017-11-03 07:53:54.531	error	by controller[0]: at Request. (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/unifi.js:1099:11)
    Caught	2017-11-03 07:53:54.530	error	by controller[0]: at next (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:5171:25)
    Caught	2017-11-03 07:53:54.527	error	by controller[0]: at /opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:903:32
    Caught	2017-11-03 07:53:54.512	error	by controller[0]: Error: Callback was already called.
    
    1 Reply Last reply
    0
    • M Offline
      M Offline
      Markus76
      wrote on last edited by
      #118

      Hi,

      ich möchte auch gerne die An-Abwesenheits steuerung über den Unifi Adapter machen.

      Installiert ist alles und die Daten kommen beim IOBroker an.

      Nun möchte ich den last_seen Zeitstempel nutzen und wenn dieser upgedatet wird, dann bin ich anwesend und wenn nicht, dann abwesend.

      Variable auf der CCU2 ist angelegt, wir aber leider nicht gefüllt

      Ich bekomme das in Blockly irgendwie nicht hin…

      Kann mir da bitte jemand unter die Arme greifen..
      4009_bildschirmfoto_2017-11-10_um_13.21.16.png

      1 Reply Last reply
      0
      • lobomauL Offline
        lobomauL Offline
        lobomau
        wrote on last edited by
        #119

        @Markus76:

        Hi,

        ich möchte auch gerne die An-Abwesenheits steuerung über den Unifi Adapter machen.

        Installiert ist alles und die Daten kommen beim IOBroker an.

        Nun möchte ich den last_seen Zeitstempel nutzen und wenn dieser upgedatet wird, dann bin ich anwesend und wenn nicht, dann abwesend.

        Variable auf der CCU2 ist angelegt, wir aber leider nicht gefüllt

        Ich bekomme das in Blockly irgendwie nicht hin…

        Kann mir da bitte jemand unter die Arme greifen.. `
        Folgendes Blockly Script läuft bei mir sehr gut mit Unifi für die Anwesenheit. Anstatt last_seen habe ich uptime_by_uap. Musst nur den client anpassen, hier wird alle 2 Minuten getriggert:
        1146_unbenannt.jpg
        Blockly Import:

        ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
        ! <block type="create" id="LcnDrYS;;Bc/!E+1GuwZ" x="-837" y="13"><field name="NAME">Variablen.ICH_UAP</field></block>
        ! <block type="schedule" id="{@eI25!GvKfragf.dsL" x="-837" y="113"><field name="SCHEDULE">*/2 * * * *</field> ! <statement name="STATEMENT"><block type="controls_if" id="B+@.|[Ga9L/N^}7kRBv,"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="CniS*}L/,0cF#N|nCepx"><field name="OP">EQ</field> ! <value name="A"><block type="logic_compare" id="T_r[9FxM%kil?c^0EZ:J"><field name="OP">LT</field> ! <value name="A"><block type="math_arithmetic" id="B%^IgKuzuM5{246Y!m,(" inline="false"><field name="OP">MINUS</field> ! <value name="A"><shadow type="math_number" id="G5:q#-9.sd2K90TfdAJ"><field name="NUM">1</field></shadow>
        ! <block type="get_value" id="gC-urCBA/^%84(j=^i*"><field name="ATTR">lc</field> ! <field name="OID">unifi.0.default.clients.++MAC-Adresse._uptime_by_uap</field></block></value> ! <value name="B"><shadow type="math_number" id="zYRKTi[[k_,%fr.8Vy7M"><field name="NUM">1</field></shadow> ! <block type="math_arithmetic" id="]J~)QBR4cH/jiG*lz?UL"><field name="OP">MINUS</field> ! <value name="A"><shadow type="math_number" id="XX}xF%B/_0,1}l~SgW-"><field name="NUM">1</field></shadow>
        ! <block type="time_get" id="-4r2Is(JCg_?:Ms_v+Y"><mutation format="false" language="false"></mutation> ! <field name="OPTION">object</field></block></value> ! <value name="B"><shadow type="math_number" id="rCdNrAEh^-FoWAxGU~G"><field name="NUM">120000</field></shadow></value></block></value></block></value>
        ! <value name="B"><block type="math_number" id="DLCYi/V][Pj-{RpP]JE{"><field name="NUM">0</field></block></value></block></value>
        ! <value name="B"><block type="logic_boolean" id="]F~s0eAM%+j//mq0GH"><field name="BOOL">TRUE</field></block></value></block></value>
        ! <statement name="DO0"><block type="control" id="o;yBJXcmet8(TwXWJlMf"><mutation delay_input="false"></mutation>
        ! <field name="OID">javascript.0.Variablen.ICH_UAP</field>
        ! <field name="WITH_DELAY">FALSE</field>
        ! <value name="VALUE"><block type="logic_boolean" id="JD=F=FX|FbaZIy,OPphL"><field name="BOOL">FALSE</field></block></value></block></statement>
        ! <statement name="ELSE"><block type="control" id="GrHf7?!*t8yz{3P2n=w="><mutation delay_input="false"></mutation>
        ! <field name="OID">javascript.0.Variablen.ICH_UAP</field>
        ! <field name="WITH_DELAY">FALSE</field>
        ! <value name="VALUE"><block type="logic_boolean" id="zTf,][x}2(Hs!fMBWgz:"><field name="BOOL">TRUE</field></block></value></block></statement></block></statement></block></xml>

        Host: NUC8i3 mit Proxmox:

        • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
        • Slave: Pi4
        1 Reply Last reply
        0
        • A Offline
          A Offline
          adarof
          wrote on last edited by
          #120

          Hallo

          Kann mir jemand sagen, ob ich in der Vielfallt der Parameter des Adapters auch einen finde, um das (Gast-)WLAN ein/aus zu schalten?

          Ich möchte das Gast-WLAN einfach nur dann einschalten, wenn auch Gäste zu Besuch sind.

          Die Checkbox existiert (siehe Anhang) - aber ich finde aktuell in den ioBroker-Objekten die einzelnen Netzkwerke garnicht abgebildet?!

          Gruss -
          2636_capture.png

          1 Reply Last reply
          0
          • K Offline
            K Offline
            Kiwifranky
            wrote on last edited by
            #121

            Hi,

            hab heute mal den Unifi Adapter ausprobieren wollen. Leider schmeisst er beim Start direkt "api.err.Invalid".

            Der Unifi Controller ist Version 5.6.29.

            Irgendwelche Tipps?

            Grüsse

            Franky

            1 Reply Last reply
            0
            • A Offline
              A Offline
              adarof
              wrote on last edited by
              #122

              Hallo

              Ich habe hier einen Workround entwickelt, der eine offizielle API von dem Unify Server nutzt:

              #!/bin/bash
              export username= <username>export password= <password>export baseurl=https://localhost:8443
              export site=default
              
              . unifi_sh_api
              unifi_api /upd/wlanconf/ <networkid>'{"enabled": true}'</networkid></password></username> 
              

              und zum ausschalten:````
              unifi_api /upd/wlanconf/ <networkid>'{"enabled": false}'</networkid>

              
              Vielleicht hilfts jemandem noch :)
              1 Reply Last reply
              0
              • C Offline
                C Offline
                Chris71
                wrote on last edited by
                #123

                Hallo,

                habe vor kurzen die IP-adressen in meinem Netzwerk geändert. Danach etwas Probleme mit dem IObroker der auf einem Raspi rennt.

                Mittlerweile läuft bis auf den Unifi aber wieder alles.

                Folgende Fehlermeldung steht im LOG.

                Gruß

                Chris
                1623_screenshot__24_.png

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  Chris71
                  wrote on last edited by
                  #124

                  PROBLEM GELÖST!

                  Nach Neustart der Synology DS läuft es jetzt. Da ivh mit anderen Geräten Zugriff auf den Controller hatte wundert mich das jetzt schon ein wenig.

                  Aber egal nun läufts.

                  1 Reply Last reply
                  0
                  • I Offline
                    I Offline
                    IanS
                    wrote on last edited by
                    #125

                    Hallo Jens und alle Anderen,

                    ich bin die Tage bei meiner Suche nach einer Anwesenheitserkennung auf diesen Adapter gestoßen.

                    Hab Versucht das ganze ans laufen zu bringen, leider ist es aber für mich iwie noch Rakentenwissenschaft….

                    Der Adapter laüft ohne Fehler im Log und in den SV auf der CCU wir auch was geändert, allerdings nicht alles.

                    Ich würde mich über einen Tipp oder Schupps in die richtige Richtung sehr freuen.

                    Ein Handy und ein Gast ist angemeldet und unter .list und .string .Nutzer passt es auch.

                    Nur wird nicht die Anwesenheit gesetzt, Weder vom User noch Gesamtanwesenheit.

                    Einzig beim Gast klappt es....

                    Hier mal das Script, Bild der SVs hänge ich mal unten an.

                    Würde mich echt freuen wenn jemand helfen könnte.

                    Gruß

                    FloH

                    `/*
                     * unifi_pdetect v0.1 (29.09.2017)
                     * 
                     * Copyright (c) 2017 Jens Maus <mail@jens-maus.de>
                     *
                     */
                    
                    /* define actual user devices here */
                    var user_devices = [];
                    user_devices['C8:3C:85:30:61:59'] = 'FloH';
                    user_devices['9C:5C:F9:53:08:1F'] = 'Jessii';
                    
                    /* define here devices that you 'know', thus should
                     * be ignored
                     */
                    var known_devices=[ "34:c0:59:10:f3:b1",
                                        "84:20:96:22:c5:3b",
                                        "7e:49:79:58:cb:55",
                                        "08:78:08:cd:75:f4",
                                        "70:ee:50:22:d3:c4",];
                    
                    /* Enum list of all combinations of users+guest */
                    var enum_list = [];
                    enum_list[0] = "Keiner da";
                    enum_list[1] = "FloH";
                    enum_list[2] = "Jessii";
                    enum_list[3] = "FloH,Jessii";
                    enum_list[4] = "Gast";
                    enum_list[5] = "FloH,Gast";
                    enum_list[6] = "Jessii,Gast";
                    enum_list[7] = "FloH,Jessii,Gast";
                    
                    /* Path to system variables on CCU */
                    var sysvar_prefix= "hm-rega.0.8964"/*Anwesenheit_Mobile*/;
                    var sysvar_user  = "hm-rega.0.8965"/*Anwesenheit.Nutzer*/;
                    var sysvar_guest = "hm-rega.0.8968"/*Anwesenheit.Gast*/;
                    var sysvar_str   = "hm-rega.0.8967"/*Anwesenheit.string*/;
                    var sysvar_list  = "hm-rega.0.8966"/*Anwesenheit.list*/;
                    
                    /* Unifi controller settings */
                    var unifi_ip   = "192.168.XXX.XX";
                    var unifi_port = 8443;
                    var unifi_user = "XXXXXXXX";
                    var unifi_pw   = "XXXXXXXX";
                    
                    /***********************************/
                    /* Don't modify anything from here */
                    function check_presence() {
                    
                        var unifi = require('node-unifi');
                        var controller = new unifi.Controller(unifi_ip, unifi_port);
                    
                        var guest_found = false;
                        var users_found = [];
                    
                        var tmp = known_devices.join('~').toUpperCase();
                        known_devices = tmp.split('~');
                    
                        // LOGIN
                        controller.login(unifi_user, unifi_pw, function(err) {
                    
                            if(err) {
                                console.log('ERROR: ' + err);
                                return;
                            }
                    
                            // GET SITE STATS
                            controller.getSitesStats(function(err, sites) {
                                // GET CLIENT DEVICES
                                controller.getClientDevices(sites[0].name, function(err, client_data) {
                                    //log('curtime: ' + Math.floor((new Date).getTime()/1000));
                                    for (var i=0; i < client_data[0].length; i++) {
                                        if(typeof(client_data[0][i].ip) !== 'undefined' && client_data[0][i].ip) {
                                            if(typeof(client_data[0][i]._last_seen_by_uap) !== 'undefined' && client_data[0][i]._last_seen_by_uap) {
                                                //log(client_data[0][i].mac + " " + client_data[0][i]._last_seen_by_uap + " " + client_data[0][i].idletime + " " + client_data[0][i].ip + " " + client_data[0][i].hostname + " " + client_data[0][i].is_guest);
                    
                                                var user_device = user_devices[client_data[0][i].mac.toUpperCase()];
                                                if(typeof(user_device) !== 'undefined') {
                                                    //log('user device[' + user_device + ']: ' + client_data[0][i].mac.toUpperCase() + ' ' + client_data[0][i].hostname + ' - idle: ' + client_data[0][i].idletime);
                                                    users_found.push(user_device);
                                                }
                                                else if(known_devices.indexOf(client_data[0][i].mac.toUpperCase()) === -1)
                                                {
                                                    //log('guest device found: ' + client_data[0][i].mac.toUpperCase() + ': ' + client_data[0][i].hostname + ' - idle: ' + client_data[0][i].idletime);
                                                    guest_found = true;
                                                }
                                            }
                                        }
                                    }
                    
                                    controller.logout();
                    
                                    if(getState(sysvar_user).val !== (users_found.length > 0)) {
                                        setState(sysvar_user, (users_found.length > 0));
                                    }
                    
                                    var presence_string = "";
                                    var num_presence = 0;
                                    for (var j in user_devices) {
                                        var user_present = users_found.indexOf(user_devices[j]) !== -1;
                    
                                        if(user_present === true) {
                                            if(num_presence > 0) 
                                                presence_string += ",";
                                            presence_string += user_devices[j];
                                            num_presence++;
                                        }
                    
                                        var id = getIdByName(sysvar_prefix + '.' + user_devices[j]);
                                        if(typeof(id) !== 'undefined' && id) {
                                            if(getState(id).val !== user_present) {
                                                setState(id, user_present);
                                                log("User '" + user_devices[j] + "' changed present state: " + user_present);
                                            }
                                        }
                                    }
                    
                                    // find out if guest mode is already on or off and then we switch it
                                    // accordingly
                                    if(getState(sysvar_guest).val !== guest_found) {
                                        setState(sysvar_guest, guest_found);
                                        log('Guest mode set to ' + guest_found);
                                    }
                                    if(guest_found === true) {
                                        if(num_presence > 0)
                                            presence_string += ",";
                                        presence_string += "Gast";
                                    }
                    
                                    if(getState(sysvar_str).val !== presence_string) {
                                        setState(sysvar_str, presence_string);
                                    }
                    
                                    var enum_id = enum_list.indexOf(presence_string);
                                    if(enum_id === -1)
                                        enum_id = 0;
                                    if(getState(sysvar_list).val !== enum_id) {
                                        setState(sysvar_list, enum_id);
                                    }
                                });
                            });
                        });
                    }
                    
                    schedule("*/15 * * * * *", function () { // Execute every 15 seconds
                        check_presence();
                    });</mail@jens-maus.de>`
                      [2820_screenshot_2018-03-01_19.58.42.png](/assets/uploads/files/2820_screenshot_2018-03-01_19.58.42.png)  [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                    
                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      Flauschi
                      wrote on last edited by
                      #126

                      Du könntest Jens sein addon auf der CCU installieren und das damit machen?

                      hm_pdetect glaub heisst es.

                      Das läuft bei mir mit meinen Unifi Geräten absolut perfekt und rasch.

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        Superdad
                        wrote on last edited by
                        #127

                        @Flauschi

                        Wie hast du das eingestellt in hm_pdetect, dass es dann auf die Unifi-Geräte zugreift?

                        CCU3

                        iOBroker auf IntelNUC Proxmox

                        1 Reply Last reply
                        0
                        • F Offline
                          F Offline
                          Flauschi
                          wrote on last edited by
                          #128

                          es funktioniert einfach.

                          Das addon schaut in der Fritzbox nach, ob diese Geräte im Netzwerk sind.

                          Der Unifi liefert die Information korrekt an die Fritzbox.

                          Sent from my iPhone using Tapatalk

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            Superdad
                            wrote on last edited by
                            #129

                            Aha, man braucht also noch die Fritzbox dazu.

                            Die habe ich abgeschafft.

                            Dann geht es darüber wohl nicht?

                            CCU3

                            iOBroker auf IntelNUC Proxmox

                            1 Reply Last reply
                            0
                            • I Offline
                              I Offline
                              IanS
                              wrote on last edited by
                              #130

                              @Flauschi

                              Danke die Variante kenne ich.

                              Würde es dennoch lieber mit dieser Lösung machen.

                              Ich möchte ja dazu was lernen und wissen was ich falsch gemacht habe. [emoji16]

                              Gruß FloH

                              1 Reply Last reply
                              0
                              • D Offline
                                D Offline
                                davidsieg82
                                wrote on last edited by
                                #131

                                Hallo Jens,

                                ich hatte gerade versucht deinen Adapter zu installieren.

                                Bei der Configseite kommt der Fehler: "File index.html not found"

                                Hast du da eine Lösung?

                                Gruß

                                David
                                4690_1.png

                                1 Reply Last reply
                                0
                                • I Offline
                                  I Offline
                                  IanS
                                  wrote on last edited by
                                  #132

                                  Hallo,

                                  gibt es einen Grund das fast alle Beiträge von Jens hier verschwunden sind??

                                  Gruß FloH

                                  EDIT: Das alles was mit dem Script zur Anwesenheit verschwunden ist??

                                  Sogar in meinem Post ist das Script verschwunden….. :shock: :shock: :shock:

                                  EDIT 2: Sorry, hab das mit dem Serverproblem erst jetzt gelesen :oops: :oops: :oops:

                                  1 Reply Last reply
                                  0
                                  • stephan1827S Offline
                                    stephan1827S Offline
                                    stephan1827
                                    wrote on last edited by
                                    #133

                                    @Kiwifranky:

                                    Hi,

                                    hab heute mal den Unifi Adapter ausprobieren wollen. Leider schmeisst er beim Start direkt "api.err.Invalid".

                                    Der Unifi Controller ist Version 5.6.29.

                                    Irgendwelche Tipps?

                                    Grüsse

                                    Franky `

                                    Ich habe das gleiche Problem. Gibt es dafür schon eine Lösung?

                                    1 Reply Last reply
                                    0
                                    • stephan1827S Offline
                                      stephan1827S Offline
                                      stephan1827
                                      wrote on last edited by
                                      #134

                                      @stephanstricker:

                                      @Kiwifranky:

                                      Hi,

                                      hab heute mal den Unifi Adapter ausprobieren wollen. Leider schmeisst er beim Start direkt "api.err.Invalid".

                                      Der Unifi Controller ist Version 5.6.29.

                                      Irgendwelche Tipps?

                                      Grüsse

                                      Franky `

                                      Ich habe das gleiche Problem. Gibt es dafür schon eine Lösung? `

                                      Habs gefunden, Benutzername war falsch

                                      1 Reply Last reply
                                      0
                                      • W Offline
                                        W Offline
                                        Wuehler
                                        wrote on last edited by
                                        #135

                                        Hallo,

                                        ich bin zwar auf Basis fhem unterwegs, denke aber, dass auch iobroker dieselbe Anforderung an unifi hat, wie ich. Wenn ich es richtig sehe pollt iobroker.unifi ebenfalls regelmäßig, ob zB ein User connected ist. Das könnte man mit den neuen notification-emails des Unifi-Controllers auf einen push-Mechanismus umstellen, schön wäre das Ganze aber nicht wirklich.

                                        Unter

                                        https://community.ubnt.com/t5/UniFi-Fea … -p/2276503

                                        habe ich daher einen FeatureRequest gestellt, um nicht nur mails zu bekommen sondern eine Callback-URL angeben zu können, die mit JSON-Daten aufgerufen werden soll.

                                        Wäre cool, wenn ihr das mit unterstützt und ein paar "Daumen hoch" oder Kommentare hinterlasst.

                                        Danke,

                                        Wuehler

                                        1 Reply Last reply
                                        0
                                        • C Offline
                                          C Offline
                                          Chris71
                                          wrote on last edited by
                                          #136

                                          @jens.maus:

                                          @jensus11:

                                          so wie schon im Homematic Forum gefragt, wie machst du jetzt deine Anwesenheitssteuerung?

                                          Erkläre das doch mal bitte. `

                                          Das ganze mache ich momentan über das "node-unifi" nodejs Modul und nicht über mein unifi iobroker Adapter. Voraussetzung ist, das man im js-controller als Zusatzpaket eben "node-unifi" angegeben hat (siehe Einstellung des js-controller). Dann kann man folgendes Skript nutzen um eine an hm_pdetect angelehnte Anwesenheitserkennung durchzuführen und Systemvariablen in der CCU/RaspberryMatic setzen zu lassen:

                                          `/*
                                           * unifi_pdetect v0.1 (29.09.2017)
                                           * 
                                           * Copyright (c) 2017 Jens Maus <mail@jens-maus.de>*
                                           */
                                          
                                          /* define actual user devices here */
                                          var user_devices = [];
                                          user_devices['AA:BB:CC:DD:EE:FF'] = 'John';
                                          user_devices['AA:BB:CC:DD:EE:FF'] = 'Jane';
                                          
                                          /* define here devices that you 'know', thus should
                                           * be ignored
                                           */
                                          var known_devices=[ "AA:BB:CC:DD:EE:FF",
                                                              "AA:BB:CC:DD:EE:FF",
                                                              "AA:BB:CC:DD:EE:FF"];
                                          
                                          /* Enum list of all combinations of users+guest */
                                          var enum_list = [];
                                          enum_list[0] = "Nobody";
                                          enum_list[1] = "John";
                                          enum_list[2] = "Jane";
                                          enum_list[3] = "John,Jane";
                                          enum_list[4] = "Guest";
                                          enum_list[5] = "John,Guest";
                                          enum_list[6] = "Jane,Guest";
                                          enum_list[7] = "John,Jane,Guest";
                                          
                                          /* Path to system variables on CCU */
                                          var sysvar_prefix= "Anwesenheit";
                                          var sysvar_user  = "hm-rega.0.35037"/*Anwesenheit.Nutzer*/;
                                          var sysvar_guest = "hm-rega.0.15785"/*Anwesenheit.Gast*/;
                                          var sysvar_str   = "hm-rega.0.31854"/*Anwesenheit.string*/;
                                          var sysvar_list  = "hm-rega.0.31853"/*Anwesenheit.list*/;
                                          
                                          /* Unifi controller settings */
                                          var unifi_ip   = "192.168.X.X";
                                          var unifi_port = 8443;
                                          var unifi_user = "admin";
                                          var unifi_pw   = "XxxxxxxX";
                                          
                                          /***********************************/
                                          /* Don't modify anything from here */
                                          function check_presence() {
                                              
                                              var unifi = require('node-unifi');
                                              var controller = new unifi.Controller(unifi_ip, unifi_port);
                                          
                                              var guest_found = false;
                                              var users_found = [];
                                              
                                              var tmp = known_devices.join('~').toUpperCase();
                                              known_devices = tmp.split('~');
                                          
                                              // LOGIN
                                              controller.login(unifi_user, unifi_pw, function(err) {
                                          
                                                  if(err) {
                                                      console.log('ERROR: ' + err);
                                                      return;
                                                  }
                                          
                                                  // GET SITE STATS
                                                  controller.getSitesStats(function(err, sites) {
                                                      // GET CLIENT DEVICES
                                                      controller.getClientDevices(sites[0].name, function(err, client_data) {
                                                          //log('curtime: ' + Math.floor((new Date).getTime()/1000));
                                                          for (var i=0; i < client_data[0].length; i++) {
                                                              if(typeof(client_data[0][i].ip) !== 'undefined' && client_data[0][i].ip) {
                                                                  if(typeof(client_data[0][i]._last_seen_by_uap) !== 'undefined' && client_data[0][i]._last_seen_by_uap) {
                                                                      //log(client_data[0][i].mac + " " + client_data[0][i]._last_seen_by_uap + " " + client_data[0][i].idletime + " " + client_data[0][i].ip + " " + client_data[0][i].hostname + " " + client_data[0][i].is_guest);
                                          
                                                                      var user_device = user_devices[client_data[0][i].mac.toUpperCase()];
                                                                      if(typeof(user_device) !== 'undefined') {
                                                                          //log('user device[' + user_device + ']: ' + client_data[0][i].mac.toUpperCase() + ' ' + client_data[0][i].hostname + ' - idle: ' + client_data[0][i].idletime);
                                                                          users_found.push(user_device);
                                                                      }
                                                                      else if(known_devices.indexOf(client_data[0][i].mac.toUpperCase()) === -1)
                                                                      {
                                                                          //log('guest device found: ' + client_data[0][i].mac.toUpperCase() + ': ' + client_data[0][i].hostname + ' - idle: ' + client_data[0][i].idletime);
                                                                          guest_found = true;
                                                                      }
                                                                  }
                                                              }
                                                          }
                                                      
                                                          controller.logout();
                                                          
                                                          if(getState(sysvar_user).val !== (users_found.length > 0)) {
                                                              setState(sysvar_user, (users_found.length > 0));
                                                          }
                                                          
                                                          var presence_string = "";
                                                          var num_presence = 0;
                                                          for (var j in user_devices) {
                                                              var user_present = users_found.indexOf(user_devices[j]) !== -1;
                                                              
                                                              if(user_present === true) {
                                                                  if(num_presence > 0) 
                                                                      presence_string += ",";
                                                                  presence_string += user_devices[j];
                                                                  num_presence++;
                                                              }
                                                              
                                                              var id = getIdByName(sysvar_prefix + '.' + user_devices[j]);
                                                              if(typeof(id) !== 'undefined' && id) {
                                                                  if(getState(id).val !== user_present) {
                                                                      setState(id, user_present);
                                                                      log("User '" + user_devices[j] + "' changed present state: " + user_present);
                                                                  }
                                                              }
                                                          }
                                                          
                                                          // find out if guest mode is already on or off and then we switch it
                                                          // accordingly
                                                          if(getState(sysvar_guest).val !== guest_found) {
                                                              setState(sysvar_guest, guest_found);
                                                              log('Guest mode set to ' + guest_found);
                                                          }
                                                          if(guest_found === true) {
                                                              if(num_presence > 0)
                                                                  presence_string += ",";
                                                              presence_string += "Gast";
                                                          }
                                                          
                                                          if(getState(sysvar_str).val !== presence_string) {
                                                              setState(sysvar_str, presence_string);
                                                          }
                                                          
                                                          var enum_id = enum_list.indexOf(presence_string);
                                                          if(enum_id === -1)
                                                              enum_id = 0;
                                                          if(getState(sysvar_list).val !== enum_id) {
                                                              setState(sysvar_list, enum_id);
                                                          }
                                                      });
                                                  });
                                              });
                                          }
                                          
                                          schedule("*/15 * * * * *", function () { // Execute every 15 seconds
                                              check_presence();
                                          });</mail@jens-maus.de>` 
                                          
                                          Ich hoffe das sollte selbsterklärend sein. Wie gesagt, momentan nur ein Anfang und ohne Beteiligung des unifi iobroker Adapters von mir, aber es sollte äquivalent zu hm_pdetect gehen. Voraussetzung ist wie gesagt das man das 'node_unifi' nodejs einbindet (js-controller einstellungen) und das man natürlich die gleichen Systemvariablen verwendet wie mit hm_pdetect. Ggf. werde ich das ganze noch etwas erweitern/verbessern und ggf. sogar in den unifi iobroker Adapter direkt integrieren damit man hier kein extra Skript machen muss sondern der Adapter das direkt anbietet. Aber dafür fehlt mir momentan die Zeit.
                                          
                                          Viel Spass damit. Und ich freue mich wie immer über Feedback.
                                          
                                          Hallo,
                                          
                                          habe vorher auch eine Anwesenheitsteuerung über Fritzbox mit dem Zusatzprogramm HM-Pdetect realisiert.
                                          
                                          Das funktionierte super einfach. Da ich jetzt auch auch Unifi baue möchte versuchen die Anwesenheit mit dem Skript von Jens Maus zu realisieren.
                                          
                                          Mir fehlen da aber Grundkenntnisse was Skriptprogrammierung angeht.
                                          
                                          Wie bekomme ich die Einstellungen im Js-Controller getätig? Muss ich da über Putty in die Datei? Momentan läuft mein IO-Broker auf einem Raspi.
                                          
                                          Controller für die Unifi-Geräte läuft auf einer Synology.
                                          
                                          Bevor ich jetzt wieder irgendetwas mache und mein IO-Broker schmiert mir ab, kann mir da vieleicht jemand helfen?
                                          
                                          Oder ist in absehbarer Zeit evtl. ein fertiger Adapter in Arbeit der mit der Anwesenheitsimulation arbeitet kann?
                                          
                                          Gruß
                                          
                                          Christian[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                          ``` ` 
                                          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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          458

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          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