NEWS
[Tipp] Anwesenheit mit unifi-Adapter
-
@pix:Hallo,
vielen Dank für das Skript.
Ich habe es für meine Zwecke angepasst und will das auch hier teilen.
Meine Zwecke heisst: Mehrere Nutzer. Dazu werden die Daten der Nutzer oben im Objekt wificlients eingegeben, Skript macht den Rest.
Unter
javascript.[instanz].Unifi.Anwesenheit.UAP.[Name_des_Nutzers]
wird dann der Status true oder false gesetzt. Dieser Datenpunkt wird dann mit History/Influx geloggt.
/* Weiteres Skript zur Überwachung des Uptime Datenpunktes im Unifi-Adapter >! fragt alle zwei Minuten den Datenpunkt _uptime_by_uap des eingebuchten Gerätes ab wenn keine Änderung, dann Anwesenheit = false >! 18.10.2017 erstellt von lobomau auf Basis des Unifi Adapters von jens_maus http://forum.iobroker.net/viewtopic.php?f=30&t=8556#p90883 19.10.2017 angepasst von Pix (mehrere Geräte) >! */ >! const wificlients = { "devices": [ { "nutzer": "Tom", "mac": "8a:8b:8c:8f:8g:ab", "name": "Kater's iPhone", "geraet": "iPhone" }, { "nutzer": "Jerry", "mac": "e1:e2:e3:e4:e5:e6", "name": "Maeusephone", "geraet": "iPhone" } ] // Ende devices }; >! const logging = false; const fC = false; // forceCreation für createState >! // Ab hier nix mehr ändern ++++++++++++++++++++++ >! function createStates() { for (var j=0; j<wificlients.devices.length; 0="==" 2/63072000/j++)/{/var/iduap="javascript." +/instance/".unifi.anwesenheit.uap."/wificlients.devices[j].nutzer;/createstate(iduap,/false,/fc,/name:/'wlan/anwesenheit/(uap)/-/'/wificlients.devices[j].nutzer,/desc:/'anwesenheit/über/uptime-datenpunkt/des/unifi/adapters',/type:/'boolean',/def:/role:/'indicator',/custom:/"influxdb.0":/"enabled":/true,/"changesonly":/"debounce":/"",/"retention":/jahre/}/});/function/checkuap/()/for/(var/i="0;" i<wificlients.devices.length;/i++)/uap/abfragen/lchange="getState("unifi.0.default.clients."" wificlients.devices[i].mac/"._uptime_by_uap").lc;/uap_anwesenheit="(lchange" ((new/date().gettime())/120000)/</true)/?/false/:/true;/if/(logging)/log('gerät/wificlients.devices[i].geraet/von/wificlients.devices[i].nutzer/ist/uap_anwesenheit);/datenpunkt/verzögert/beschreiben/wificlients.devices[i].nutzer;/setstatedelayed(iduap,/uap_anwesenheit,/1000);/alle/2min/schedule("*/*/*",/checkuap);/bei/skriptstart/createstates();/datenpunkte/erstmal/anlegen/settimeout(function()/2s/abfrage/erstmals/ausführen/checkuap();/},/2*1000);/<e=""></wificlients.devices.length;
Viel Spaß,
Gruß
PixDanke für das Script. Habe es gleich ausprobiert. Die beiden Handy werden korrekt wiedergegeben, das eine true, das andere false.
Was auffällt: die Zahnräder zum Einstellen der state settings war bereits blau, dann wollte ich es Anklicken zum loggen. Das wird aber nicht gesichert, ich kann also nicht loggen. Die states sind übrigens rot... hin und wieder werden sie kurz grün.
Ich habe es auf javascript.1-instanz laufen und habe die Pfade in Zeile 36 und 64 für mich angepasst. -
Vielen Dank allen Beteiligten für das Script.
Hatte auch die selben Probleme wie von Lobomau beschrieben. Habe bei meinem SQL History Adapter nach Fehlern gesucht, bis ich dann (leider erst am Ende) Dein Script genauer angeschaut habe.
Da ist mir aufgefallen das Du es, wie Du schreibst "für Dich angepasst hast". Sprich Du hast die Aufzeichnung schon drinnen aber eben auf Basis vom InfluxDB History Adapter .
Habe dann bei mir den entsprechenden Teil einfach entfernt, den bestehenden States-Zweig nochmal gelöscht und gut war es (@Lobomau: dürfte auch die Lösung für deine Frage sein).
custom: { "influxdb.0": { "enabled": true, "changesOnly": false, "debounce": "", "retention": 63072000 // 2 Jahre } }
Hätte ich mir nur Deinen Code vorher genauer angeschaut. Hätte mir einiges an Zeit erspart.
Aber auch hier, habe ich wieder daraus gelernt :mrgreen:
Gruß
Roland
-
hallo und frohe Ostern euch allen noch,
ich bin auf der Suche nach einer Anwesenheitssteuerung auf diesen Post gekommen.
Ich wollte mir das Blockly skript aus dem ersten Post nachbauen…..
Ich blick es aber gerade nicht so ganz, ich hab alles gefunden (glaube ich zumindest)
bis auf den in meinem Bild eingekreisten Teil.....
Kann mir vielleicht jemand sagen was das ist? Würde mich sehr freuen.
Österliche Grüße
FloH
-
Das ist ein Minus. Findest bei Mathematik, zweites von oben.
-
Hey,
vielen Dank genau das war es!
Hatte es gestern auch zum laufen bekommen
zusammen mit einer Pushover Meldung.
Die ist dann allerdings auch alle 2 Minuten gekommen…...
Script deaktiviert und was passiert?
Die Meldung kommt trotzdem alle 2 Minuten....
Sogar nach Löschen des Scriptes, nur ein Neustart hat den Fehler behoben.
Hab es dann heute nochmals ohne Pushover versucht, da lief dann gar nix mehr.
Muss mich die Tage noch mal ganz in Ruhe da dran setzen.
Gruß
FloH
-
Eigentlich sollte die pushover Meldung nicht mehr kommen, wenn man das Script abschaltet. Wahrscheinlich läuft da was weiter, was man nicht so sieht. Aber das Script scheint ja nicht ganz korrekt zu sein… du willst ja nicht alle 2 min. eine Meldung erhalten, sondern nur wenn sich die Ab/Anwesenheit ändert. Kannst einfach einen Block dadrunter machen wo der Trigger dann die Änderung der AN/Abwesenheit ist.
-
So ich habs jetzt noch ein paar mal in verschiedenen Variationen probiert.
Hab sogar IoBroker neu aufgesetzt, laufen tut aber gar nichts mehr….
Aktuell sieht es bei mir so aus, aber laufen tut nix....
Ich hatte auch noch eine Variante mit der Sperre damit ich nicht alle zwei Minuten die
Meldung bekomme, geht wie alles andere auch nicht….
filename="Blockly AnwTest.jpg" index="0">~~Gibt es eine Möglichkeit zu testen ob Skripte laufen?Testskripte um die allgemeine Funktion zu testen?
Gruß
FloH
-
Hallo Pix,
könntest du dein JS-Script hier noch mal zur Verfügung stellen ?
Ich kenne mich mit dem neu gestalteten Forum noch nicht aus, habe aber den Eindruck
das die Scripte von der Darstellung "verrissen" sind. -
@IanS sagte in [Tipp] Anwesenheit mit unifi-Adapter:
So ich habs jetzt noch ein paar mal in verschiedenen Variationen probiert.
Hab sogar IoBroker neu aufgesetzt, laufen tut aber gar nichts mehr….
Aktuell sieht es bei mir so aus, aber laufen tut nix....
Ich hatte auch noch eine Variante mit der Sperre damit ich nicht alle zwei Minuten die
Meldung bekomme, geht wie alles andere auch nicht….
filename="Blockly AnwTest.jpg" index="0">~~Gibt es eine Möglichkeit zu testen ob Skripte laufen?Testskripte um die allgemeine Funktion zu testen?
Gruß
FloH
Ich habe dein Skript nachgebaut und habe exakt die gleiche Reaktionen des System. Skript längst angepasst.
Dennoch kommen die Pushmitteilungen immer noch. Selbst wenn das Skript deaktiviert ist. Hast du dafür mittlerweile eine Lösung gefunden?Darüberhinaus scheint der unifi Adapter sehr CPU intensiv zu sein. In der Spitze zieht der Adapter > 90% der CPU Kapazität.
Habt ihr ähnliches festgestellt? -
@ahfreezer Nein, 90% kann ich nicht bestätigen. Es ist aber schon Mal so, dass bei mir kein anderer Adapter so viele Objekte anlegt.
Welches Aktualisierungsintervall hast du eingestellt und auf welcher Hardware läuft ioBroker. Wie stellst du die 90% fest? -
Wegen der puren menge an Objekten und Datenpunkten, die der unifi-Adapter bei mir angelegt hat, bin ich den Umweg über FHEM gegangen. Dort kann ich im unifi-Adapter gezielt die Geräte rausfiltern mit den Daten, die mich interessieren und dann nur die via MQTT an den iobroker weiterschieben. Somit habe ich im iobroker nur die unifi-Datenpunkte, die ich benötige. Bissle umständlich, aber FHEM läuft bei mir eh nebenher wegen zwei CULs und Geräten, die der CUL-Adapter von iobroker nicht kann. Und obe jtzt auf nem NUC eine VM mehr oder weniger läuft...
Gruss, Jürgen
-
@Wildbill sagte in [Tipp] Anwesenheit mit unifi-Adapter:
Wegen der puren menge an Objekten und Datenpunkten, die der unifi-Adapter bei mir angelegt hat, bin ich den Umweg über FHEM gegangen. Dort kann ich im unifi-Adapter gezielt die Geräte rausfiltern mit den Daten, die mich interessieren und dann nur die via MQTT an den iobroker weiterschieben. Somit habe ich im iobroker nur die unifi-Datenpunkte, die ich benötige. Bissle umständlich, aber FHEM läuft bei mir eh nebenher wegen zwei CULs und Geräten, die der CUL-Adapter von iobroker nicht kann. Und obe jtzt auf nem NUC eine VM mehr oder weniger läuft...
Gruss, Jürgen
Ja...FHEM hatte ich ursprünglich auch parallel laufen, habe mich nach einem Hardwareschaden dann dazu entschieden nur noch ioBroker zu nutzen. Mich interessieren für meine Steuerung nur die Daten zu den Endgeräten im USG von Unifi. Wäre klasse, wenn man das noch parametrieren könnte im Adapter.
-
@lobomau sagte in [Tipp] Anwesenheit mit unifi-Adapter:
@ahfreezer Nein, 90% kann ich nicht bestätigen. Es ist aber schon Mal so, dass bei mir kein anderer Adapter so viele Objekte anlegt.
Welches Aktualisierungsintervall hast du eingestellt und auf welcher Hardware läuft ioBroker. Wie stellst du die 90% fest?Ich habe auf Grund der hohen Auslastung das Intervall auf 2min gesetzt (Standard 60sek)
Da ich aber zeitnah Trigger für die Abwesenheit haben möchte, wollte ich nicht mehr als 2min warten.ioBroker läuft bei mir auf einem HP ThinClient mit einem Intel Atom N280 (2x 1,66GhZ) und 2 RAM
Bis dato vollkommen ausreichend.Die 90% habe ich gesehen, als ich per SSH und "TOP" mir die "Verbraucher" angeschaut habe. Die Last liegt immer so bei 10-20% (abhängig welcher Adapter gerade arbeitet. Sobald unifi durchstartet steigt die Last wie folgt.
Hab leider nicht den Peak getroffen
Wenn unifi durch ist sieht es dann wieder so aus. Komisch finde ich, dass trotz intervall auf 2min unifi all 30 Sekunden die Last erzeugt.
-
@ahfreezer sagte in [Tipp] Anwesenheit mit unifi-Adapter:
Sobald unifi durchstartet steigt die Last wie folgt.
Also nur beim "anfahren"?
Ich habe es gerade mal bei meiner Installation gecheckt:
Der Unify Adapter baruch zwar nach dem Controller die meisten Ressourcen, ist aber (im Lauf) gerade mal 0,6% eines CPU-Kerns.Das ganze läuft in einer Proxmox VM auf einem NUC6i3
Der Unify-controller läuft da auf einer zweiten VMDas Abfrageintervall beträgt 60sekunden
-
@Homoran sagte in [Tipp] Anwesenheit mit unifi-Adapter:
Also nur beim "anfahren"?
Immer dann, wenn er die Daten neu abholt. Also stand jetzt alle 2min der Peak.
Guck mal zur Laufzeit, wenn er gerade die Daten zieht ob's dann auch die 0,6% sind oder im Verhältnis zu deinem deutlich performanteren Rechner auch eine (deutliche) Steigerung sichtbar ist. -
Ja, da scheint es kurz hochzugehen:
pi@ioBroker01:~$ top | grep io.unifi 18392 iobroker 20 0 1001572 60596 23792 S 0,3 1,5 0:02.96 io.unifi.0 18392 iobroker 20 0 1001572 60596 23792 S 0,3 1,5 0:02.97 io.unifi.0 18392 iobroker 20 0 1003424 61268 23792 S 17,3 1,5 0:03.49 io.unifi.0 18392 iobroker 20 0 1003424 61268 23792 S 0,3 1,5 0:03.50 io.unifi.0 18392 iobroker 20 0 1003424 61268 23792 S 0,3 1,5 0:03.51 io.unifi.0 18392 iobroker 20 0 1003424 62192 23792 S 14,3 1,5 0:03.94 io.unifi.0 18392 iobroker 20 0 1004960 63640 23792 S 15,3 1,6 0:04.40 io.unifi.0 18392 iobroker 20 0 1005984 64508 23792 S 14,3 1,6 0:04.83 io.unifi.0 18392 iobroker 20 0 1003936 54184 23792 S 0,7 1,3 0:04.85 io.unifi.0 18392 iobroker 20 0 1003936 53356 23792 S 0,3 1,3 0:04.86 io.unifi.0 18392 iobroker 20 0 1003936 57028 23792 S 19,9 1,4 0:05.46 io.unifi.0 18392 iobroker 20 0 999840 53380 23792 S 1,0 1,3 0:05.49 io.unifi.0 18392 iobroker 20 0 999840 49652 23792 S 0,7 1,2 0:05.51 io.unifi.0
Gruß
Rainer -
jepp...heir wird der Peak bei mir gar nicht sichtbar...
Liegt das also an der Masse an Datenpunkten, die der Adapter zieht?root@debian:/home/iobroker# top | grep io.unifi 15924 root 20 0 138232 48040 19448 S 0,3 2,4 3:08.28 io.unifi.0 15924 root 20 0 138232 48040 19448 S 0,3 2,4 3:08.29 io.unifi.0 15924 root 20 0 138232 48272 19448 S 1,7 2,4 3:08.34 io.unifi.0 15924 root 20 0 138232 48272 19448 S 1,0 2,4 3:08.37 io.unifi.0 15924 root 20 0 138232 41036 19448 S 15,8 2,1 3:08.85 io.unifi.0 15924 root 20 0 138232 44076 19448 R 73,9 2,2 3:11.12 io.unifi.0 15924 root 20 0 138232 48300 19448 R 73,1 2,4 3:13.38 io.unifi.0 15924 root 20 0 138492 48048 19448 R 57,0 2,4 3:15.14 io.unifi.0 15924 root 20 0 138492 48048 19448 S 43,0 2,4 3:16.45 io.unifi.0 15924 root 20 0 138492 48048 19448 S 38,4 2,4 3:17.62 io.unifi.0 15924 root 20 0 138492 48048 19448 S 41,0 2,4 3:18.87 io.unifi.0 15924 root 20 0 138492 48048 19448 S 41,0 2,4 3:20.12 io.unifi.0 15924 root 20 0 138492 48048 19448 R 43,1 2,4 3:21.43 io.unifi.0 15924 root 20 0 138492 48048 19448 S 43,6 2,4 3:22.76 io.unifi.0 15924 root 20 0 138492 48048 19448 R 42,8 2,4 3:24.06 io.unifi.0 15924 root 20 0 138492 48048 19448 S 27,9 2,4 3:24.91 io.unifi.0 15924 root 20 0 138492 48048 19448 S 0,3 2,4 3:24.92 io.unifi.0 15924 root 20 0 138492 48048 19448 S 0,3 2,4 3:24.93 io.unifi.0
-
@ahfreezer sagte in [Tipp] Anwesenheit mit unifi-Adapter:
heir wird der Peak bei mir gar nicht sichtbar...
Hab auch lange suchen müssen.
Anscheinend schläft der Adapter zwischendrin.TOP sollte alle 3 sekunden einen Wert liefern. ich habe immer lange warten müssen, als ob nur dann unifi aktiv wird
Zu deiner Ehrenrettung muss ich sagen, dass ich gerade erst auf Unifi umstelle und erst einen AP im Betrieb habe.
-
@Homoran sagte in [Tipp] Anwesenheit mit unifi-Adapter:
Zu deiner Ehrenrettung
Nett von dir
Ich hab ein paar Switche und AP's + USG und CloudKey.
Vermutlich macht es die Masse.Vlt. muss ich mal darüber nachdenken, meine Hardware auch hier aufzurüsten
-
@ahfreezer vielleicht ist das ein Grund. USG vorübergehend ausschalten zu Testzwecken ist wohl nicht möglich, oder?
Bei mir laufen nur zwei UAP-Pro und ein 24-switch. UnifiController läuft auf eigenem Container und ioBroker in eigener VM.
Andererseits betreiben andere den USG auch ohne merkbare zusätzliche Last.