NEWS
Unifi WLAN Script 2 mit Anwesenheitskontrolle
-
hier ein script für das ansteuern des unifi-controllers - der unifi adapter hat einen sehr großen datenfluß und sehr viele datenpunkte - das script arbeitet selbständig und benötigt den adapter nicht. (danke an @thewhobox und @dslraser)
es gibt eine version des scriptes, welche nur die uaps von vorher definierten clients ausliest und als datenpunkte speichert - es werden keine tabellen oder sonstiges angelegt: https://forum.iobroker.net/post/405654
was kann es:
feature variable-info WLAN ein und ausschalten (z.b. Gäste-WLAN) geht immer AP Led's schalten geht immer- nur site-wide - nicht einzeln!e ap's Speedtest Daten nur mit security gateway hardware Internet Verbindung www online ? - nur mit security gateway hardware rudimentärer datenverbrauch nur mit unifi security hardware - sammelt täglichen und monatlichen datenverbrauch Alarme gehen immer - werden alle 3 script-zyklen upgedatet anwesenheitskontrolle mit datenpunkte für die clients anwesenheit=true voucherauflistung in tabellenform über ein html-widget für vis vouchers=true voucherauflistung in tabellenform für iqontrol vouchers,iqontrol=true vouchers erstellen es gibt im script setting eine variable zum erstellen von standard vouchers (iqontrol, vis) oder man kann neue anlegen (nur vis) vouchers löschen es gibt 2 datenpunkte für seleqtList-Widget, dadurch einfache vis anbindung (iqontrol, vis) clientauflistung in tabellenform über ein html-widget für vis anwesenheit=true clientauflistung in tabellenform für iqontrol anwesenheit,iqontrol=true es gibt verschiedene tabellen dafür: alle clients (mit disconnected), nur disconnected, nur clients am lan, nur clients am WLAN wahlweise hostname oder aliasname anzeige der angemeldeten clients alias=true health des WLANs geht immer - wird nur alle 3 abfragezyklen abgefragt - kommen daher erst verspätet beim ersten aktivieren des scripts minimale Info's zu AP's variable apInfo = true - welcher Controller ist zuständig, ist der AP adoptet (einbezogen), Ip des AP's, Satisfaction, Modelbezeichnung, abruf der daten nur alle 3 zyklen - kommen daher erst verspätet beim ersten aktivieren des scripts apInfo anzeige für vis in html tabellenform und für iqontrol (über popup) mehrer installierte netzwerke z.b gästenetzwerk geht immer AccessPoint und Switches es können WLAN und LAN Geräte angezeigt werden Farben definieren, Schriftart Farben für Vis oder IQontrol können eingestellt werden script zyklus das script schreibt nicht alle daten bei jedem zyklus - die health, ap daten werden nur alle 3 zyklen geschrieben - es gibt einen datenpunkt dafür, dieser datenpunkt ist für die vis gedacht - so kann man sich anzeigen, wann der zyklus durch ist - zählt von 1 bis 3 scriptpause das script macht eine pause beim umschalten eines netzwerkes - die ap's werden umgeschaltet - es gibt einen datenpunkt, der diese pause anzeigt - z.b in meiner vis: ich ändere bei dieser pause die schriftfarbe für die cleints und die rahmen blinke rot - siehe bild am ende rudimentärer filter für client anzeige es gibt einen filter für die clientanzeige - es werden nur clientsangezeigt, welche den inhalt vom datenpunkt "Client_WhiteList" beinhalten SSID unsichtbar schalten einfache integration - die werte können vom zustand in der unifi datenbank abweichen - wird nicht abgefragt was ist wichtig :
einstellungen im oberen teil des scripts info npm zusatzmodule es müssen 3 npm zusatzmodule in der javascript instanz eingetragen - und dadurch installiert - werden: fs, request, request-promise-native login daten und port für controller und der site-name const unifi_username, unifi_passwort und unifi_controller WICHTIG:
der sitename muss aus der URL im browser, bei aufruf der controller-web-seite, entnommen werden !!!https://forum.iobroker.net/post/323789konstante wlan-name(n) mit wlan-id const wifis - wie man die ID des netzwerkes rausfindet steht hier: https://forum.iobroker.net/post/295086 konstante ap-alias const apName - der Aliasnamen für die AP's und Switches- hat nichts mit den Aliasnamen im Controller zu tun - wird nur für das script gebraucht - können frei gewählt werden blacklist für clients const blackList clients via AP's kontrolle const checkConnType - darin werden clientnamen angegeben, bei denen man den aktuellen AccessPoint braucht - es werden dafür eigene Datenpunkte angelegt länge der pause beim umschalten eines netzwerkes clientPauseConst - ist für die länge der scriptpause verantwortlich - wird benötigt, da beim ein oder ausschalten eines netzwerkes (auch nur das gästenetzwerk) alle ap's einen neustart machen ( proviosioniert) und dadurch die anwesenheitskontrolle beeinflußt werden könnte. z.b brauchen tasmota-geflashte clients lange, bis sie wieder online sind - die anwesenheitskontrolle könnte auch zur überwachung solcher geräte genutzt werden abfrageinterval: "abfragezyklus" und "abfrageoffset" abfragezyklus definiert, in welchen interval die abfragen stattfinden sollen (20sek ist eingestellt) - damit erreicht man eine sehr schnelle aktualisierung beim anmelden eines clients im WLAN - beim abmelden des clients muss der abfrageoffset mit berücksichtigt werden (15 sek ist eingestellt) - wählt man den abfrageoffset zu klein, kann es sein, dass bei einem wechsel eines clients (handy) zu einem anderen accesspoint (ap) eine auslogmeldung kommt - bei meinem system bekomme ich nach ungefähr 30 sek einen anmeldevorgang gemeldet und nach ca 45-50 sek einen abmeldevorgang gewünschte features auf true setzen iqontrol, anwesenheit,vouchers,apInfo - was nicht benötigt wird, bitte nicht aktivieren -> resourcen sparen - der iqontroladapter muss installiert sein, wenn man iqontrol im script auf true setzt aliasnamen für clients aliasname - möchte man lieber, die im unifi-controller definierten aliasnamen für die clients nutzen, muß in jedem client im controller ein alias definiert sein damit alle clients im script sichtbar werden - oder es werden nur aliase für bestimmte geräte angegeben - dann ist der rest nicht sichtbar - wichtig weil: was nicht sichtbar ist, kann nicht zur anwesenheitskontrolle genutzt werden und : der standard - aliasname=false - nimmt den aliasnamen, wenn einer existiert, ansonsten den hostnamen ip clients liste nach IP adresse sortiert anzeigen sortedByIP für die clientliste in iqontrol und vis disconnected clients als erstes anzeigen disConClientsFirst für die clintliste in iqontrol und vis farben für iqontrol und vis datenpunkte im admin es wird ein ordner in der javascript instanz erzeugt - unter umständen wird ein zweiter ordner angelegt, zum sichern "dauerhafter daten". WLANUnifi kann gelöscht werden (z.b. bei einem update des scripts; WLANUnifiHelp sollte nicht gelöscht werden, darin sind Daten gespeichert, die wieder gebraucht werden (z.b datenverbrauch messung) iqontrol
kann über ein popup eingebunden werden. im feld html eintragen: mögliche files, die zur verfügung stehen:für clients:
<iframe width="100% "height="100% "frameborder="0" src="/iqontrol.meta/htmlclients.html"></iframe
für vouchers:
<iframe width="100% "height="100% "frameborder="0" src="/iqontrol.meta/htmlvoucher.html"></iframe
für health und /oder apInfo
<iframe width="100% "height="100% "frameborder="0" src="/iqontrol.meta/htmlinfo.html"></iframe
zusätzlich : nur LAN geräte : htmllan.html ; nur WLAN geräte: htmlwlan.html ; nur disconnected geräte: htmldisc.html ;
voucher erstellung:
- unter dem datenpunkt Wifi_Vouchers-CODES.A_New_Voucher kann ein voucher angelegt werden - die anzahl, dauer und multiuse müssen eingegeben werden - alle anderen sind optional
oder es gibt datenpunkte zum erstellen einer valueliste, um vorgefertigte (standard) vouchers anzulegen (selectValuelist-widget)
werte zusatz die dauer in minuten z.b. 120 die anzahl der vouchers wie viele davon sollen angelegt werden multiuse 0=immer wieder ;1 ist nur einmal und jede andere zahl für n-mal also 5 für 5 mal upload und download speed begrenzung in kbyte - eingabe ohne einheiten mb_begrenzung volumen begrenzung in MByte - eingabe ohne einheiten Voucher löschen
direkt über Datenpunkte:- zuerst ID des vouchers eintragen :"WLANUnifi.Wifi_Vouchers-CODES.A_Delete_Voucher.Voucher_ID"
-anschliessend "WLANUnifi.Wifi_Vouchers-CODES.A_Delete_Voucher.Delete" auf true setzen
oder über VIS:
dazu gibt es zwei datenpunkte
-WLANUnifi.Wifi_Vouchers_CodeList - "texte" mit binding in selectValueList widget eintragen
-WLANUnifi.Wifi_Vouchers_List - "werte" mit binding in selectValueList widget eintragenbeim update auf eine neue scriptversion:
- script stoppen
- script kopieren und einfügen (meist reicht es, nur unter der eigenene konfiguration zu kopieren und einzufügen - damit man nicht jedesmal die konfiguration (login, wlan) neu machen muss
- alle datenpunkte löschen (wichtig_)
- script starten
aktuelle version:
14.09.19
16.09.19
17.09.19- voucher löschen mit iqontrol
18.09.19- WLAN problem - mehr zeit bevor false bei clients
22.09.19 - einfacheres löschen und erzeugen von vouchers in der vis, unbenennung einiger datenpunktnamen (datenpunkte löschen vor scriptstart)
23.09.19- AP Led's site-wide ein- und ausschalten
27.09.19- AP LAodAVG für 1,5 und 15 Minuten
3.10.19- Alarm, Clients-ohne-Namen, LAN clients >> switch und usg integration
8.10.19- js-controllerv2 update, Eingabe mit Punkt im Alias, Leerzeichen ersetzen, Scriptlogik verbessert, zusätz. setting ohne Clients, fehlende IP abfangen, eigenes Widget "letzter wechsel im netzwerk für VIS, ...
9.10.19fehler behebung bei missingName datenpunkt, scriptpause bei wifiumschaltung geändert
10.10.19neue sotierung clients, speedtest-vorbereitung
11.10.19neue sotierung clients, speedtest und internet-verbindung
22.10.19kleine fehler bei LAN geräten bereinigt, Fehler mit "IP fehlt bereinigt, einzelne iqontrol und vis tables für anzeige von LAN,WLAN clients
30.10.19besseres log bei fehleranalyse "sprunghafte" clients (syslog); neue datenpunkte für verbrauchte datenmenge ins internet (nur mit usg)
9.11.2019verbesserung - clients ohne namen, neues setting - clients anzeige: Ip zuerst
06.12.19verbesserung fehlersuche und fehler mit security gateway und clientanzeige
08.12.19fehler bei anzeige von überwachten cients bereinigen
14.12.19unifi bug ausgleichen - SSID unsuchtbarschalten
18.12.19bug beim starten ohne datenpunkte behoben
30.12.19 bug ohne anwesenheit begradigtunifi-main-script-30-12-19.txt
Problembehandlung bei anwesenheitskontrolle mit zu schnellen bzw. falschen wertänderungen der clients:
https://forum.iobroker.net/post/301328beispiel für vis im nächsten bild:es wurden die 3 tabellen aus den datenpunkten , die voucherlöschung (code auswählbar durch SelectValueList-widget siehe https://forum.iobroker.net/post/300367 ) und vouchererzeugung (auswählbar durch SelectValueList-widget)eingerichtet
gelber pfeil - gerät nicht angemeldet
oranger pfeil: gerät nicht angemeldet und nicht in controller gelistet - aber ist in script registriert und damit false
weißer pfeil: valuelist für erzeugung von vouchers
grüner pfeil: valuelist löschen existierender vouchers
roter pfeil: alarme
mehr infos über die anzeige in der vis: https://forum.iobroker.net/post/305865
mittlerweile gibt es 3 zusätzliche html-tables für die vis und iqontrol: einzelne anzeigen für LAN oder WLAN geräte und einen table für die disconnected clients (nicht mehr im controller sichtbar aber als datenpunkt vorahnden)
zyklus anzeige :
scriptpause beim umschalten der wifis: zb.wlan - in dieser pause werden keine client abfragen gemacht - da die ap's neustarten und sich alle clients neu anmelden werden
- unter dem datenpunkt Wifi_Vouchers-CODES.A_New_Voucher kann ein voucher angelegt werden - die anzahl, dauer und multiuse müssen eingegeben werden - alle anderen sind optional
-
@liv-in-sky
@thewhobox
Feedback Nr.: 1ich habe jetzt 3 AP drinn sowie iQontrol und alles andere aktiv. Läuft alles (bei mir über aliasname)
sieht dann in iQontrol bei mir so aus:Die Voucherliste und auch das erstellen von Vouchern funktioniert ebenfalls.
Danke auch nochmal an @thewhobox für die Starthilfe und ganz besonderen Dank an @liv-in-sky , der viel Zeit in dieses Script gesteckt hat. So macht es Spaß, auch das Testen und Fehler finden sowie korrigieren macht dann Spaß.
-
@dslraser kleines update im ersten post - einstellen der farben und schriftart für vis und iqontrol
-
Der Hinweis zum Eintragen der Site wenn nicht die Deafult verwendet wird:
Der Name der Site kommt hier:
https://192.168.xxxxxx:8443/manage/site/ka118xps/clients/list/1/50
in meinem Fall ist das "ka118xps" bei default steht da nur "default"
-
wieder kleines update
vouchers können gelöscht werden - siehe beschreibung erster post
besonders für vis user - datenpunkte direkt für SelecValueList- Widget vorbereitet - müssen nur noch mit binding eingebunden werden - anschliessend kann der zu löschende code ausgewählt werden und mit schalter des datenpunktes "Wifi_Vouchers-CODES.A_Delete_Voucher.Delete" aktiviert (mit true) werden
-
Daten kommen alle und Vouchers lassen sich generieren.
Aber ich kann keines der beiden Netwerke schalten.
Habe ich irgendwas übersehen? -
@Chaot dann könnte es am setting liegen
das hier richtig konfiguriert? ganz oben im script
// DEFINITION der zu anzeigenden Netzwerke am besten bis auf id und smart alle gleich setzen const wifis = { "WLAN_Dragon1": { name: "WLAN_Dragon1", id: "5cadcxxxxxxxxxxxe5381", desc: "WLAN_Dragon1", smart: "WLAN_Dragon1" } , "WLAN_DragonGuest": { name: "WLAN_DragonGuest", id: "5d65xxxxxxxxx1edd761", desc: "WLAN_DragonGuest", smart: "WLAN_DragonGuest" } }
-
@liv-in-sky Der Datenpunkt ist leer
-
@Chaot zeig mal deine conf
die id verfremden und den wlannamen über all etwas verändernwieviele netze hast du definiert und wieviele daten punkte hast du für diese netze
-
@liv-in-sky
KopfTisch KopfTisch
Ich habe versucht den Namen der Site zu ändern. Dabei wurden die ID verändert
KopfTisch KopfTisch -
-
@liv-in-sky Besser Nicht. Ich habe im Büro nur Rigips. Das gibt Löcher
Dann werde ich mal die Version aktualisieren und weiter testen.
-
kleines update - minimale ap infos
sonst keine änderung - update muss also nicht sein
ap infos werden alle 3 zyklen geholt
-
-
@dslraser steht in beschreibung
und
-
weiters update
die ap-info's stehen auch für iqontrol zur verfügung - popup-filename: "htmlinfo.html" - siehe letztes bild der beschreibung
<iframe width="100% "height="100% "frameborder="0" src="htmlinfo.html"></iframe)>
es gibt auch einen info table für die vis - zum einfachen einbinden - wie erwähnt html-widget mit binding zum table-info-datenpunkt (javascript.x.WLANUnifi.Wifi_Info)
dieses update bis ganz nach oben bis zum site-name ersetzen - danach die gewünschten features wieder auf "true" setzen - und falls verändert - die farben einstellen
let iqontrol = false; let anwesenheit = false; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen let vouchers = false; let apInfo = false;
-
funktioniert in iQontrol
-
@liv-in-sky
Ganz oben ist ein Umlaute Fehler bei Gäste, wo finde ich das im Script ?EDIT: Die Umlautefehler bekomme ich immer wenn ich aus einer Textdatei das Script kopiere.
-
Ich gebe zu habe nicht alles gelesen, aber eine kurze Frage vorab.
Bein Gast wlan ein/ ausschalten.
Wird dann proviosioniert? K.a ob der Begriff stimmt, aber so ähnlichThx
-
@dos1973
ja, es wird provisioniert.