NEWS
Adapter: ioBroker.unifi
-
Der Adapter funktioniert super ich hab nur ein Problem das wenn er läuft im iobroker kommt zu viele Ereignisse jemand ne idee was man dort machen kann?
Unifi Cloudkey, 4 UAPs, 48 Port Unifi Switch und Access Gateway
-
Das Problem mit dem zu vielen Ereignissen habe ich auch.
Wenn Du viele Netzwerkgeräte hast, werden auch eine Menge Events durch den Controller erzeugt.
Evtl wäre es eine Lösung, wenn der Adapter die Daten aufteilt und über einen längeren Zeitraum aktualisiert.
Also Portionsweise.
-
Die Meldung hat keinen Einfluss auf die Daten als solches - es handelt sich um ein Darstellungsproblem im Admin.
Es sind einfach zu viele, zu schnell.
Sucht mal im Forum - das Thema ist hier hinlänglich diskutiert worden.
Gruß,
Eric
Von unterwegs getippert
-
Hi zusammen,
kann leider jetzt nich den ganz thread lesen aber:
1. Infos zum System gibt er hier ganz gut: https://www.youtube.com/watch?v=H-H_6dKQxkE&t=20s
2. Ich hab selber eine relativ umfangreiche Ausstattung und bin begeistert! AVM hat da was verschlafen…
3. Hab den Controller auf einem Raspi laufen - funktioniert perfekt (Läuft aber auch über Docker auf einer Synology)
4. würde auch gern mittesten
-
Hallo
Ich versuche über den Unifi-Adapter eine kleine Anwesenheitssteuerung zu erstellen.
Ich hatte gehofft über unifi.0.default.clients.MAC-ADR.last_seen die Timestamp mit der aktuellen zu vergleichen um zu sehen ob der Client angemeldet ist.
Das Problem, die Timestamp haut nicht wirklich hin. Der Client wird im Controller als online angezeigt und ich bekomme eine Timestamp von gestern Abend …. :?:
gibt es da ein besseres Weg?
-
Was die Steuerung angeht: Wäre echt cool, wenn man da was Steuern kann. Ich kann mir aber vorstellen das die Entscheidung, was wofür und wie zu steuern ist, noch Gesprächsstoff abgibt. Auch hier ein Kompromissvorschlag: Vielleicht kannst Du in einer ersten Version ein Datenfeld definieren, wo man sich ein Steuersatz als JSON zB {"wlangroup_id_ng":"<wlan group/id="">","wlan_overrides":[]} hinschreibt. Und der Adapter bespricht das dann mit dem Controller. :idea: `
Da gibts eigentlich wenig Gesprächsstoff Es wird das alles umgesetzt was die UniFi-App auf dem iPhone z.B. auch zulässt und dann dann mittels spezieller Kommando states die man dann nur triggern muss und schon passiert die Aktion dann entsprechend.</wlan> `
Hi. Den Adapter habe ich laufen. Gab keine Probleme, habe Unif AP Pro und den Controller laufen.Aber wie schalte ich nun die Werte? Sind alle auf "read". Einfach auch "write" anklicken? Welche "speziellen Kommando states" meinst du?
Wo steht bei den clients die Information zur Sende/Empfangsstärke? noise, rssi, signal? Am liebsten wären mir die "%" oder die z.B. "-44 dBm" wie in der Handy App (android). `
-
Was die Steuerung angeht: Wäre echt cool, wenn man da was Steuern kann. Ich kann mir aber vorstellen das die Entscheidung, was wofür und wie zu steuern ist, noch Gesprächsstoff abgibt. Auch hier ein Kompromissvorschlag: Vielleicht kannst Du in einer ersten Version ein Datenfeld definieren, wo man sich ein Steuersatz als JSON zB {"wlangroup_id_ng":"<wlan group/id="">","wlan_overrides":[]} hinschreibt. Und der Adapter bespricht das dann mit dem Controller. :idea: `
Da gibts eigentlich wenig Gesprächsstoff Es wird das alles umgesetzt was die UniFi-App auf dem iPhone z.B. auch zulässt und dann dann mittels spezieller Kommando states die man dann nur triggern muss und schon passiert die Aktion dann entsprechend.</wlan> `
Hi. Den Adapter habe ich laufen. Gab keine Probleme, habe Unif AP Pro und den Controller laufen.Aber wie schalte ich nun die Werte? Sind alle auf "read". Einfach auch "write" anklicken? Welche "speziellen Kommando states" meinst du?
Wo steht bei den clients die Information zur Sende/Empfangsstärke? noise, rssi, signal? Am liebsten wären mir die "%" oder die z.B. "-44 dBm" wie in der Handy App (android).
Also ich stehe weiterhin auf dem Schlauch. Ich habe mal einige checkboxen für write angeklickt, aber der eingetragene Wert springt dann beim nächsten Durchlauf wieder auf den Ursprungswert zurück. Ich habe ausprobiert die Sendestärke, die ich auch per Handyapp ändern kann zu ändern. Oder ist der Adapter nur um Werte zu lesen und nicht zu schreiben?
-
Hallo,
ich habe den Adapter seit wenigen Wochen installiert. Er zeigte den grünen Punkt, legte aber keine Objekte an.
Der Fehler war immer dieser:
api.err.Invalid
Nach etwas https://github.com/BapCat/UniFi/issues/1 fand ich die Lösung: invalid username or password
Da aber Passwort und Username definitiv korrekt waren, habe ich das Passwort im Controller mal geändert (kein Umlaut mehr). Und siehe da: es läuft. :lol:
Übrigens: mich stört, dass der yahka-Adapter u.a. auch die Einstellungen dieses Adapters inkl. Passwort im Klartext im Log speichert. :x
Jedenfalls danke an den Entwickler, tolle Arbeit.
Gruß
Pix
-
Hallo Zusammen,
gibt es über den Adapter die Möglichkeit einen Neustarts der Als zu triggern?
Ich habe mal alles durchgeschaut aber genaueres nicht gefunden.
Grüße
-
Ich würde ja gerne in Abhängigkeit meiner Anwesenheit die APs einzeln AN und ABschalten. Wie ist das möglich?
-
@ Jens
so wie schon im Homematic Forum gefragt, wie machst du jetzt deine Anwesenheitssteuerung?
Erkläre das doch mal bitte.
-
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.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
-
Wie muss das genau heissen node-unifi oder node_unifi?
Wenn man in dem Script den Userdaten ausfüllt, wird ja die Mac Adresse verwendet und muss der Name genau so heißen wie der im Unifi Controller?
-
Ein bisschen Denkarbeit und Try&Error solltest du schon investieren wollen
Und bzgl. node-unifi, siehe hier
-
Hi,
ich habe mir vor einiger Zeit ebenfalls einen Unifi AP zugelegt. (den long range: LR)
Eigentlich hatte ich mir sogar zwei gekauft, allerdings reicht einer vollkommen aus.
Seitdem gibt es keine Probleme mehr mit Reichweite, Streaming etc.
Nun zum Adapter. Leider habe ich es nicht nicht geschafft, den Adapter zum laufen zu bringen.
Log-Fehler hier:
!
host.iobroker 2017-09-30 10:14:45.943 error instance system.adapter.unifi.0 terminated with code 0 (OK) Caught 2017-09-30 10:14:45.943 error by controller[5]: at emitOne (events.js:82:20) Caught 2017-09-30 10:14:45.943 error by controller[5]: at TLSSocket.socketCloseListener (_http_client.js:245:9) Caught 2017-09-30 10:14:45.943 error by controller[5]: at ClientRequest.emit (events.js:169:7) Caught 2017-09-30 10:14:45.942 error by controller[5]: at emitOne (events.js:77:13) Caught 2017-09-30 10:14:45.942 error by controller[5]: at Request.onRequestError (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/request/request.js:884:8) Caught 2017-09-30 10:14:45.942 error by controller[5]: at Request.emit (events.js:169:7) Caught 2017-09-30 10:14:45.942 error by controller[5]: at emitOne (events.js:82:20) Caught 2017-09-30 10:14:45.942 error by controller[5]: at Request. (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/unifi.js:1369:11) Caught 2017-09-30 10:14:45.942 error by controller[5]: at next (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:5195:25) Caught 2017-09-30 10:14:45.942 error by controller[5]: at /opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:903:32 Caught 2017-09-30 10:14:45.942 error by controller[5]: 2017-09-30 10:14:45.922 - error: unifi.0 Error: Callback was already called. Caught 2017-09-30 10:14:45.942 error by controller[5]: 2017-09-30 10:14:45.921 - unifi.0 uncaught exception: Callback was already called. Caught 2017-09-30 10:14:45.942 error by controller[5]: [Error: Callback was already called.] Caught 2017-09-30 10:14:45.942 error by controller[4]: at emitOne (events.js:77:13) Caught 2017-09-30 10:14:45.942 error by controller[4]: at TLSSocket.socketErrorListener (_http_client.js:269:9) Caught 2017-09-30 10:14:45.941 error by controller[4]: at ClientRequest.emit (events.js:169:7) Caught 2017-09-30 10:14:45.941 error by controller[4]: at emitOne (events.js:77:13) Caught 2017-09-30 10:14:45.941 error by controller[4]: at Request.onRequestError (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/request/request.js:884:8) Caught 2017-09-30 10:14:45.941 error by controller[4]: at Request.emit (events.js:169:7) Caught 2017-09-30 10:14:45.941 error by controller[4]: at emitOne (events.js:82:20) Caught 2017-09-30 10:14:45.941 error by controller[4]: at Request. (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/unifi.js:1369:11) Caught 2017-09-30 10:14:45.941 error by controller[4]: at next (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:5195:25) Caught 2017-09-30 10:14:45.941 error by controller[4]: at /opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:903:32 Caught 2017-09-30 10:14:45.941 error by controller[4]: 2017-09-30 10:14:45.919 - unifi.0 Error: Callback was already called. Caught 2017-09-30 10:14:45.941 error by controller[3]: 2017-09-30 10:14:45.915 - unifi.0 uncaught exception: Callback was already called. Caught 2017-09-30 10:14:45.941 error by controller[2]: [Error: Callback was already called.] Caught 2017-09-30 10:14:45.940 error by controller[1]: 2017-09-30 10:14:45.584 - unifi.0 statesDB connected Caught 2017-09-30 10:14:45.940 error by controller[0]: 2017-09-30 10:14:45.573 - unifi.0 objectDB connected unifi.0 2017-09-30 10:14:45.924 info terminating unifi.0 2017-09-30 10:14:45.922 info cleaned everything up... unifi.0 2017-09-30 10:14:45.922 error at emitOne (events.js:82:20) unifi.0 2017-09-30 10:14:45.922 error at TLSSocket.socketCloseListener (_http_client.js:245:9) unifi.0 2017-09-30 10:14:45.922 error at ClientRequest.emit (events.js:169:7) unifi.0 2017-09-30 10:14:45.922 error at emitOne (events.js:77:13) unifi.0 2017-09-30 10:14:45.922 error at Request.onRequestError (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/request/request.js:884:8) unifi.0 2017-09-30 10:14:45.922 error at Request.emit (events.js:169:7) unifi.0 2017-09-30 10:14:45.922 error at emitOne (events.js:82:20) unifi.0 2017-09-30 10:14:45.922 error at Request. (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/unifi.js:1369:11) unifi.0 2017-09-30 10:14:45.922 error at next (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:5195:25) unifi.0 2017-09-30 10:14:45.922 error at /opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:903:32 unifi.0 2017-09-30 10:14:45.922 error Error: Callback was already called. unifi.0 2017-09-30 10:14:45.921 error uncaught exception: Callback was already called. unifi.0 2017-09-30 10:14:45.919 info cleaned everything up... unifi.0 2017-09-30 10:14:45.919 error at emitOne (events.js:77:13) unifi.0 2017-09-30 10:14:45.919 error at TLSSocket.socketErrorListener (_http_client.js:269:9) unifi.0 2017-09-30 10:14:45.919 error at ClientRequest.emit (events.js:169:7) unifi.0 2017-09-30 10:14:45.919 error at emitOne (events.js:77:13) unifi.0 2017-09-30 10:14:45.919 error at Request.onRequestError (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/request/request.js:884:8) unifi.0 2017-09-30 10:14:45.919 error at Request.emit (events.js:169:7) unifi.0 2017-09-30 10:14:45.919 error at emitOne (events.js:82:20) unifi.0 2017-09-30 10:14:45.919 error at Request. (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/unifi.js:1369:11) unifi.0 2017-09-30 10:14:45.919 error at next (/opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:5195:25) unifi.0 2017-09-30 10:14:45.919 error at /opt/iobroker/node_modules/iobroker.unifi/node_modules/node-unifi/node_modules/async/dist/async.js:903:32 unifi.0 2017-09-30 10:14:45.919 error Error: Callback was already called. unifi.0 2017-09-30 10:14:45.915 error uncaught exception: Callback was already called. unifi.0 2017-09-30 10:14:45.912 info ERROR: ERROR: [object Object] unifi.0 2017-09-30 10:14:45.602 info controller = 192.168.0.126:8443 unifi.0 2017-09-30 10:14:45.602 info update_interval = 60 unifi.0 2017-09-30 10:14:45.602 info Starting UniFi-Controller query unifi.0 2017-09-30 10:14:45.598 info starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.unifi, node: v4.8.1 unifi.0 2017-09-30 10:14:45.586 info States connected to redis: 127.0.0.1:6379 unifi.0 2017-09-30 10:14:45.584 debug statesDB connected unifi.0 2017-09-30 10:14:45.570 debug objectDB connected !
Probiert habe ich schon alles moegliche. Es muss irgendwie mit meiner Installation zu tun haben.
vG Looxer
-
Du hast aber den UniFi-Controller aufgesetzt und fragst diesen mit dem Adapter ab?
Gruß,
Eric
Von unterwegs getippert
-
Du hast aber den UniFi-Controller aufgesetzt und fragst diesen mit dem Adapter ab? `
:oops: ich dachte, dass es auch ohne ginge. Ich weiss - richtig lesen.versucht hatte ich es in der tat - allerdings erfolglos.
…aber sollte dann nicht lieber eine Nachricht erzeugt werden wie "kein controller gefunden" statt harter Fehlermeldungen.
ist jetzt nicht sooo wichtig. Ich versuche mich mal weiter an den controller.
edit: Moment mal: nach Aufruf der Software sagt er (WIN) Controller 5.4.14
Was ich nicht gemacht habe ist die Verbindung zur Cloud eingerichtet.
edit2: also ich habe den AP über mein IPAD eingerichtet. Alles läuft aus WLAN sicht.
Dann habe ich den controller ueber Windows eingerichtet. Wenn ich dann auf die HTTP Seite zugreife, dann werden keine Geräte gelistet. Das ist wohl das Problem. Ich weiss auch nicht wie ich die Verbindung um AP herstellen kann. Die Windows Firewall ist nicht das Problem. ggf die Fritzbox ?
vG Looxer
-
Offiziell ist wohl 5.5.20. Habe ich auch.
Im Blog gibt es noch eine Neuere. Wollte ich auch Mal testen.
Bisher habe ich nicht verstanden wie ich den unifi Adapter richtig benutze, um etwas zu schalten. Geht das gar nicht?
-
Hi,
also ich habe den AP über mein IPAD eingerichtet. Alles läuft aus WLAN sicht. `
wenn Du den AP „manuell“ konfiguriert hast, ist er beim Controller unbekannt und kann daher auch vom Adapter nicht ausgelesen werden, usw.Du musst den AP am Controller anmelden und von dort aus managen. Dann geht es auch mit dem Adapter.
Gruß,
Eric
Von unterwegs getippert
-
wenn Du den AP „manuell“ konfiguriert hast, ist er beim Controller unbekannt und kann daher auch vom Adapter nicht ausgelesen werden, usw. `
wenn ich das richtig verstehe, dann muss der controller staendig laufen. Das ist bei meinem Win PC nicht der Fall.
Dann kommt nur meine debian installation in Frage.
Ich müsste also alles zurücksetzen und mit der DEBIAN Installation neu beginnen.
korrekt ?
vG Looxer