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/323789
    konstante 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 eintragen

    beim 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.19 fehler behebung bei missingName datenpunkt, scriptpause bei wifiumschaltung geändert
    10.10.19 neue sotierung clients, speedtest-vorbereitung
    11.10.19 neue sotierung clients, speedtest und internet-verbindung
    22.10.19 kleine 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.19 besseres log bei fehleranalyse "sprunghafte" clients (syslog); neue datenpunkte für verbrauchte datenmenge ins internet (nur mit usg)
    9.11.2019 verbesserung - clients ohne namen, neues setting - clients anzeige: Ip zuerst
    06.12.19 verbesserung fehlersuche und fehler mit security gateway und clientanzeige
    08.12.19 fehler bei anzeige von überwachten cients bereinigen
    14.12.19 unifi bug ausgleichen - SSID unsuchtbarschalten
    18.12.19 bug beim starten ohne datenpunkte behoben
    30.12.19 bug ohne anwesenheit begradigt

    unifi-main-script-30-12-19.txt

    Problembehandlung bei anwesenheitskontrolle mit zu schnellen bzw. falschen wertänderungen der clients: https://forum.iobroker.net/post/301328

    beispiel 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
    Image 7.png

    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)

    Image 3.png
    Image 1.png

    zyklus anzeige :

    zyklus.gif

    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
    scriptpause.gif

  • Forum Testing Most Active

    @liv-in-sky
    @thewhobox
    Feedback Nr.: 1

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

    Bildschirmfoto 2019-09-13 um 14.06.03.png

    Bildschirmfoto 2019-09-13 um 14.20.10.png

    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
    Image 1.png

    Image 4.png


  • 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ändern

    wieviele 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


  • @Chaot

    kopfWand ist wirksamer ! 🙂

    hätte ich aber wahrscheinlich auch vergessen zu kontrollieren


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

  • Forum Testing Most Active

    @liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

    minimale ap infos

    welche denn ?


  • @dslraser steht in beschreibung

    und

    Image 5.png


  • 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;
    
  • Forum Testing Most Active

    @liv-in-sky

    funktioniert in iQontrol

    Bildschirmfoto 2019-09-15 um 21.24.45.png

  • Forum Testing Most Active

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

  • Most Active

    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 ähnlich 😉

    Thx

  • Forum Testing Most Active

    @dos1973
    ja, es wird provisioniert.

Suggested Topics

1.9k
Online

35.0k
Users

41.0k
Topics

562.5k
Posts