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

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Adapter: ioBroker.unifi

Scheduled Pinned Locked Moved ioBroker Allgemein
unifi
1.0k Posts 172 Posters 415.7k 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.
  • 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
    • B Offline
      B Offline
      berndroid
      wrote on last edited by
      #137

      Hallo zusammen,

      ich würde gerne in meiner Visualisierung den aktuellen Durchsatz der auch im Controller angezeigt wird darstellen. 6488_bildschirmfoto_2018-04-07_um_13.59.55.png

      Dazu würde ich gerne die entsprechenden Datenpunkte in meiner Influx Datenbank speichern. Leider finde ich außer der aktuellen Latenz (default.health.http://www.latency) die Datenpunkte für aktuell "Gesendet" und "Empfangen" nicht. Ich dachte zuerst, die Punkte default.health.www.xput_down und default.health.www.xput_up wären die richtigen, doch leider zeigen diese nicht den aktuellen Durchsatz, sondern nur das Ergebnis des letzten Speedtests an. default.health.www.rx_bytes-r und default.health.www.tx_bytes-r ändern sich in etwa im gleichen Intervall, doch leider stimmen die Werte überhaupt nicht mit den im Dashboard angezeigten überein (2032871 bei 15,2 MBit/s).

      Hat von euch jemand eine Idee, woher ich die Daten bekommen kann?

      EDIT weil selbst gelöst:

      Die Datenpunkt sind die genannten default.health.www.rx_bytes-r und default.health.www.tx_bytes-r, deren Werte Bytes darstellen. Um in Mbit/s umzurechnen, einfach durch 125000 teilen und schon passt es.

      Manchmal hilft selbst nachDENKEN ;)

      1 Reply Last reply
      0
      • G Offline
        G Offline
        Guybrushix
        wrote on last edited by
        #138

        Hallo zusammen,

        ich versuche auch das script zum laufen zu bekommen leider funktioniert weder der io.broker

        host.ioBroker	2018-04-08 13:38:14.410	info	Restart adapter system.adapter.unifi.0 because enabled
        host.ioBroker	2018-04-08 13:38:14.409	error	instance system.adapter.unifi.0 terminated with code 0 (OK)
        host.ioBroker	2018-04-08 13:38:14.409	error	Caught by controller[0]: at traverseArray (/opt/iobroker/node_modules/iobroker.unifi/main.js:165:7)
        host.ioBroker	2018-04-08 13:38:14.409	error	Caught by controller[0]: at Array.every (native)
        host.ioBroker	2018-04-08 13:38:14.409	error	Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.unifi/main.js:168:7
        host.ioBroker	2018-04-08 13:38:14.409	error	Caught by controller[0]: at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)
        host.ioBroker	2018-04-08 13:38:14.408	error	Caught by controller[0]: at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:178:27)
        host.ioBroker	2018-04-08 13:38:14.408	error	Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.unifi/main.js:288:13
        host.ioBroker	2018-04-08 13:38:14.408	error	Caught by controller[0]: at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:155:5)
        host.ioBroker	2018-04-08 13:38:14.408	error	Caught by controller[0]: at traverseObject (/opt/iobroker/node_modules/iobroker.unifi/main.js:184:7)
        host.ioBroker	2018-04-08 13:38:14.408	error	Caught by controller[0]: at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:156:32)
        host.ioBroker	2018-04-08 13:38:14.407	error	Caught by controller[0]: at /opt/iobroker/node_modules/iobroker.unifi/main.js:292:57
        host.ioBroker	2018-04-08 13:38:14.406	error	Caught by controller[0]: TypeError: Cannot read property 'subsystem' of null
        unifi.0	2018-04-08 13:38:14.309	info	cleaned everything up...
        unifi.0	2018-04-08 13:38:14.309	error	TypeError: Cannot read property 'subsystem' of null at /opt/iobroker/node_modules/iobroker.unifi/main.js:292:57 at traverse (/opt/iobroker/node_modules/iobroker.unifi/main.js:156:32) at tr
        unifi.0	2018-04-08 13:38:14.309	error	uncaught exception: Cannot read property 'subsystem' of null
        unifi.0	2018-04-08 13:38:14.307	info	getSitesStats: default
        unifi.0	2018-04-08 13:38:11.415	info	controller = 192.168.1.2:8443
        unifi.0	2018-04-08 13:38:11.415	info	update_interval = 60
        unifi.0	2018-04-08 13:38:11.413	info	Starting UniFi-Controller query
        unifi.0	2018-04-08 13:38:11.386	info	starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v6.14.1
        host.ioBroker	2018-04-08 13:38:09.997	info	instance system.adapter.unifi.0 started with pid 24216
        host.ioBroker	2018-04-08 13:38:09.944	info	object change system.adapter.unifi.0
        

        noch findet das script irgendjemanden im netz läuft aber fehlerfrei durch.

        die Variablen hab ich natürlich an meine angepasst (Aus Objekte)

        `/*
         * 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['80:B0:3D:E3:B6:11'] = 'Debbie';
        user_devices['6C:8D:C1:51:F3:33'] = 'Lorena';
        user_devices['CC:20:E8:B5:8A:53'] = 'Gina';
        user_devices['b0:19:c6:a6:91:28'] = 'Micha';
        user_devices['B8:53:AC:1C:E6:B2'] = 'Silvia';
        
        /* 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] = "Niemand";
        enum_list[1] = "Debbie";
        enum_list[2] = "Lorena";
        enum_list[3] = "Debbie,Lorena";
        enum_list[4] = "Gina";
        enum_list[5] = "Debbie,Gina";
        enum_list[6] = "Debbie,Lorena,Gina";
        enum_list[7] = "Lorena,Gina";
        enum_list[8] = "Micha";
        enum_list[9] = "Debbie,Micha";
        enum_list[11] = "Debbie,Lorena,Micha";
        enum_list[12] = "Debbie,Lorena,Gina,Micha";
        enum_list[13] = "Lorena,Gina,Micha";
        enum_list[14] = "Debbie,Gina,Micha";
        enum_list[15] = "Gina,Micha";
        enum_list[16] = "Lorena,Micha";
        enum_list[17] = "Silvia";
        enum_list[18] = "Debbie,Silvia";
        enum_list[19] = "Lorena,Silvia";
        enum_list[20] = "Gina,Silvia";
        enum_list[21] = "Micha,Silvia";
        enum_list[22] = "Debbie,Lorena,Silvia";
        enum_list[23] = "Debbie,Gina,Silvia";
        enum_list[24] = "Debbie,Micha,Silvia";
        enum_list[25] = "Debbie,Lorena,Gina,Silvia";
        enum_list[26] = "Debbie,Lorena,Micha,Silvia";
        enum_list[27] = "Debbie,Gina,Micha,Silvia";
        enum_list[28] = "Lorena,Gina,Micha,Silvia";
        enum_list[29] = "Gast";
        enum_list[30] = "Debbie,Gast";
        enum_list[31] = "Silvia,Gast";
        enum_list[32] = "Lorena,Gast";
        enum_list[33] = "Gina,Gast";
        enum_list[34] = "Micha,Gast";
        enum_list[35] = "Debbie,Lorena,Gast";
        enum_list[36] = "Debbie,Gina,Gast";
        enum_list[37] = "Debbie,Micha,Gast";
        enum_list[38] = "Debbie,Silvia,Gast";
        enum_list[39] = "Debbie,Gina,Gast";
        enum_list[40] = "Debbie,Lorena,Micha,Gast";
        enum_list[41] = "Debbie,Lorena,Silvia,Gast";
        enum_list[42] = "Debbie,Lorena,Gina,Gast";
        enum_list[43] = "Debbie,Lorena,Micha,Silvia,Gast";
        enum_list[44] = "Debbie,Lorena,Gina,Silvia,Gast";
        enum_list[45] = "Debbie,Lorena,Gina,Micha,Gast";
        enum_list[46] = "Debbie,Lorena,Gina,Micha,Silvia,Gast";
        
        /* Path to system variables on CCU */
        var sysvar_prefix= "Anwesenheit";
        var sysvar_user  = "hm-rega.0.4659"/*Anwesenheit.Lorena*/;
        var sysvar_user  = "hm-rega.0.4660"/*Anwesenheit.Debbie*/;
        var sysvar_user  = "hm-rega.0.4661"/*Anwesenheit.Micha*/;
        var sysvar_user  = "hm-rega.0.4662"/*Anwesenheit.Silvia*/;
        var sysvar_user  = "hm-rega.0.4663"/*Anwesenheit.Gina*/;
        var sysvar_user  = "hm-rega.0.4664"/*Anwesenheit.Nutzer*/;
        var sysvar_guest = "hm-rega.0.14516"/*Anwesenheit.Gast*/;
        var sysvar_str   = "hm-rega.0.4666"/*Anwesenheit.string*/;
        
        /* Unifi controller settings */
        var unifi_ip   = "192.168.XXX.XXX";
        var unifi_port = 8443;
        var unifi_user = "XXXXXX";
        var unifi_pw   = "XXXXXX";
        
        /***********************************/
        /* 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>` 
        
        Die Variable List hab ich erst mal rausgenommen
        
        Kann es sein das der Cloud Controller nicht unterstützt wird ? Version 5.7.20
        
        Oder muss ich die APi irgendwo einschalten ? ich kann nichts finden.
        
        Vielen Dank im Voraus[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
        
        1 Reply Last reply
        0
        • T Offline
          T Offline
          TorbenNW
          wrote on last edited by
          #139

          @eric2905:

          Wenn ich am Sonntag aus dem Urlaub zurück bin, schaue ich mir die Systemlast meines Controllers mal an. `
          Hallo Eric, kannst du hierzu noch mal etwas sagen? Bevor ich nun den Controller auf dem Pi installiere und mir alles zerschieße.

          Danke dir!

          1 Reply Last reply
          0
          • ChaotC Offline
            ChaotC Offline
            Chaot
            wrote on last edited by
            #140

            @TorbenNW

            Ich verstehe zwar nicht genau was du meinst, aber ich denke ich kann dir trotzdem helfen.

            Unifi Controler auf Raspi 3 - funktioniert

            Unifi Controler UND ioBroker auf Raspi 3 - Funktioniert, aber System voll ausgelastet und alles sehr sehr langsam

            Von daher würde ich empfehlen den Controler entweder auf einem separaten Raspi oder dem PC laufen lassen.

            Zur Überwachung über ioBroker brauchst du den Controler nicht und im laufenden Betrieb wird der auch nicht gebraucht.

            Wenn du also nicht dauernd am WLan was verändern willst reicht eigentlich die Installation auf dem PC.

            ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

            1 Reply Last reply
            0
            • eric2905E Offline
              eric2905E Offline
              eric2905
              wrote on last edited by
              #141

              Moin,

              @TorbenNW:

              Hallo Eric, kannst du hierzu noch mal etwas sagen? Bevor ich nun den Controller auf dem Pi installiere und mir alles zerschieße.

              Danke dir! `
              auf einem eigenen Raspi müsste es gehen.

              Die CPU ist bei mir kein Problem (3-5% der virtuellen CPU), aber RAM ist nicht ohne (2 GB von den zugewiesenen 4 GB in Benutzung) - wobei das auch ein normales Verhalten sein kann (genug d! Also nehme ich mal).

              Gruß,

              Eric

              Von unterwegs getippert

              Roses are red, violets are blue,

              if I listen to metal, my neighbours do too

              1 Reply Last reply
              0
              • C Offline
                C Offline
                ceerix
                wrote on last edited by
                #142

                Bei mir läuft der Controller auch in einer virtuellen Maschine mit Ubuntu Server und 500 MB RAM. Oberfläche flüssig und zur Abfrage der Anwesenheit völlig ausreichend.

                Lief zuvor auch auf einem Pi 3 parallel zu meinem Magic Mirror und CCU Historian ohne Probleme.

                Gruß Alex

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pix
                  wrote on last edited by
                  #143

                  Hallo,

                  mein unifi-Controller läuft auf einem MacMini unter OS X 24/7 und braucht etwas über 100MB. Der ioBroker Adapter knapp 40MB.
                  261_unifi.png

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Mentalkiter
                    wrote on last edited by
                    #144

                    Hallo Jens

                    gerade Adapter installiert. Läuft soweit. Muss nur mal die Möglichenkeiten ausloten. Aber feine Sache

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      defrostx
                      wrote on last edited by
                      #145

                      im Uinifi Controller gibt es einen neuen Nutzer der Read only hat. (Als Admin gehts auch nicht)

                      Der Adapter meckert zwar nicht, aber es werden keine Objekte angelegt. In den Logs sieht es dann so aus.

                      unifi.0	2018-05-02 14:11:15.279	info	ERROR: Error: getaddrinfo ENOTFOUND http http:443
                      unifi.0	2018-05-02 14:11:14.319	info	controller = http://192.168.X.X/:8443
                      unifi.0	2018-05-02 14:11:14.319	info	update_interval = 60
                      unifi.0	2018-05-02 14:11:14.317	info	Starting UniFi-Controller query
                      unifi.0	2018-05-02 14:11:14.296	info	starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v6.14.1
                      

                      Hat jemand eine Idee?

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        Mentalkiter
                        wrote on last edited by
                        #146

                        Kann man den Unifi Adapter verwenden, um die Anwesenheit von bestimmten Geräten zu nutzen??? Wenn ja, welcher FLAG ist das????

                        C 1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          Kuddel
                          wrote on last edited by
                          #147

                          @lobomau:

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

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

                          Kann man statt alle 2 Minuten nicht auch den Wert _uptime_by_uap als Trigger nehmen? Wenn dieser geändert wird, soll das Skript auslösen. So hat man bei mehreren Geräten doch immer die genau Zeit oder?

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

                            Das wäre super. Dann würde die Anwesenheit sofort auf true springen. Für false finde ich die 2min OK.

                            Host: NUC8i3 mit Proxmox:

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

                              Die Idee, die ich hatte funktioniert leider nicht.

                              Das Problem ist, dass die Uptime ja hochzählt. Bei Anwesenheit kann man sie also als Trigger verwenden.

                              Wenn man aber Abwesend ist, zählt die Uptime nicht mehr hoch und das Skript würde somit nicht mehr auslösen.

                              So wie ich das sehe bleibt nur die Möglichkeit mit einem Cron Trigger

                              1 Reply Last reply
                              0
                              • K Offline
                                K Offline
                                Kuddel
                                wrote on last edited by
                                #150

                                Hallo zusammen,

                                ich habe da nochmal eine Frage Zu Anwesenheitserkennung.

                                Wenn ich nach Hause komme, wird die Anwesenheit innerhalb von 30 Sekuden erkannt.

                                Wenn ich das Haus verlassen, dauert es aber Minunten. Heute morgen z.B. 9 Minuten, bis das System erkannt hat, dass ich nicht mehr da bin.

                                Ist das normal? Das Blockly Skript zur Erkennung läuft alle 15 Sekunden

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  maniac
                                  wrote on last edited by
                                  #151

                                  @adarof:

                                  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 :) `  
                                  

                                  Adarof, könntest Du das bitte nochmal etwas genauer erklären? Ich würde auch gerbne das WLAN per VIS-Script ein-/ausschalten wollen.

                                  Was muss ich dazu einstellen?

                                  Gruß Frank…

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

                                    @Kuddel:

                                    Hallo zusammen,

                                    ich habe da nochmal eine Frage Zu Anwesenheitserkennung.

                                    Wenn ich nach Hause komme, wird die Anwesenheit innerhalb von 30 Sekuden erkannt.

                                    Wenn ich das Haus verlassen, dauert es aber Minunten. Heute morgen z.B. 9 Minuten, bis das System erkannt hat, dass ich nicht mehr da bin.

                                    Ist das normal? Das Blockly Skript zur Erkennung läuft alle 15 Sekunden `
                                    Bei mir geht es schneller. Welches Script läuft bei dir? Meins läuft nur alle 2 min.

                                    Edit: habe mich vertan, siehe unten. 9min habe ich auch ungefähr.

                                    Host: NUC8i3 mit Proxmox:

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

                                      @lobomau:

                                      Bei mir geht es schneller. Welches Script läuft bei dir? Meins läuft nur alle 2 min. `

                                      3467_anwesenheit.jpg

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

                                        @Kuddel:

                                        @lobomau:

                                        Bei mir geht es schneller. Welches Script läuft bei dir? Meins läuft nur alle 2 min. `

                                        anwesenheit.jpg `
                                        Sorry, meine Aussage nach Gefühl war falsch. Nachdem ich die Haustür geschlossen habe, bin ich nach ca. 10min abwesend. Das Script fragt nur alle 2min nach und im Auto habe ich noch wlan Empfang. Also Abmeldung nach 7 - 8min kommt hin. Ist für mich ok. Das Anmeldung muss schneller gehen und tut es auch. Aber ich glaube da ist die Taktung die 60s des Aktualisierungsintervalls, da habe ich keine kürzeren Zeiten probiert, sind ja schon ziemlich viele Daten die jedesmal geholt werden, denke ich.

                                        Hab mal heute und gestern geschaut:

                                        19.6: Tür zu:6:37:55

                                        UAP false: 6:46:01

                                        20.6: Tür zu: 7:16:00

                                        UAP false: 7:26:01

                                        Host: NUC8i3 mit Proxmox:

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

                                          @Kuddel:

                                          Hallo zusammen,

                                          ich habe da nochmal eine Frage Zu Anwesenheitserkennung.

                                          Wenn ich nach Hause komme, wird die Anwesenheit innerhalb von 30 Sekuden erkannt.

                                          Wenn ich das Haus verlassen, dauert es aber Minunten. Heute morgen z.B. 9 Minuten, bis das System erkannt hat, dass ich nicht mehr da bin.

                                          Ist das normal? Das Blockly Skript zur Erkennung läuft alle 15 Sekunden `

                                          Ich nutze das hm_pdetect Addon für die Homematic und werte da die Anwesenheit über unsere Smartphones aus. Das Addon prüft alle 15 Sekunden.

                                          Bei mir ist es exakt genauso wie bei Dir. Diese Verzögerung scheint also mit dem Unifi Access Point zusammen zu hängen. Scheinbar werden die Geräte erst nach rund 10 Minuten in den Abwesenheitszustand versetzt, obwohl man schon längst nicht mehr im WLAN ist.

                                          Die Frage ist, ob man da irgendwo ansetzen kann?

                                          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

                                          684

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          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