NEWS
Unifi WLAN Script 2 mit Anwesenheitskontrolle
-
@Nashra - hab dich glaube falsch verstanden deshalb nochmal:
debug bitte wieder ausschalten - sonst wird nix geschrieben - bei mir kommen extrem viele warnungen
was mir auffällt - ist es dir möglich, das script file mal zu kopieren und in iobroker zu pasten - ohne dass du einen (wahrscheinlich mac) editor benutzt - ich kann dies zum beispiel - mit chrome - das script direkt öffnen und in einem neuen tab sehen - direkt aus dem forum heraus geöffnet
mach ich das mit deinem script sieht das so aus: (ansicht im browser)
ich weiß nicht, ob das was macht - aber irgendwie seltsam
ich gebe hier mal eine version mit etwas mehr log ausgaben - sollte dann so aussehen
script ohne settings - datenpunkte löschen
-
@liv-in-sky
ups Datei im falschen Format hochgeladen, hatte ich dir aber auch per Mail geschicktNaja, so Script gestartet und Log zeigt an
javascript.0 2019-10-04 18:00:29.103 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 14
aber es kommen keine Daten
Nachtrag: die Datenpunkte der Clients werden nicht angelegt!
-
@Nashra die werte in deinen datenpunkten lassen vermuten, das etwas mit dem scriptformat nicht stimmt
der scriptcounter darf auch nicht über 3 gehen - das script verennt sich !!
da stimmt etwas grundsätzliches nicht - bitte mach mal ein foto vom log , von neustart des scriptes bis scriptcounter= 4
ist ein zeichen, dass im script nicht vorkommt - da wird etwas übersetzt - ich nutze den ausdruck:
 
der ein leerzeichen darstellt das "nbsp;" steht für - glaube ich - mehrere leerzeichen
ich nutze das für die formatierung in den html-tables - diese zeichen sollten in den htmltables erscheinen - sonst nirgends
-
@liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:
@Nashra die werte in deinen datenpunkten lassen vermuten, das etwas mit dem scriptformat nicht stimmt
der scriptcounter darf auch nicht über 3 gehen - das script verennt sich !!
da stimmt etwas grundsätzliches nicht - bitte mach mal ein foto vom log , von neustart des scriptes bis scriptcounter= 4
ist ein zeichen, dass im script nicht vorkommt - da wird etwas übersetzt - ich nutze den ausdruck:
 
der ein leerzeichen darstellt das "nbsp;" steht für - glaube ich - mehrere leerzeichen
ich nutze das für die formatierung in den html-tables - diese zeichen sollten in den htmltables erscheinen - sonst nirgends
Nein nein, nach aktualisieren des Browsers sind die "nbsp" verschwunden.
javascript.0 2019-10-04 18:59:17.497 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 19 javascript.0 2019-10-04 18:58:57.497 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 18 javascript.0 2019-10-04 18:58:37.497 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 17 javascript.0 2019-10-04 18:58:17.496 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 16 javascript.0 2019-10-04 18:57:57.495 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 15 javascript.0 2019-10-04 18:57:37.496 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 14 javascript.0 2019-10-04 18:57:17.495 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 13 javascript.0 2019-10-04 18:56:57.495 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 12 javascript.0 2019-10-04 18:56:37.494 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 11 javascript.0 2019-10-04 18:56:17.493 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 10 javascript.0 2019-10-04 18:55:57.492 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 9 javascript.0 2019-10-04 18:55:37.493 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 8 javascript.0 2019-10-04 18:55:17.492 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 7 javascript.0 2019-10-04 18:54:57.479 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 6 javascript.0 2019-10-04 18:54:37.479 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 5 javascript.0 2019-10-04 18:54:17.479 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 4 javascript.0 2019-10-04 18:53:57.479 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 3 javascript.0 2019-10-04 18:53:37.479 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 2 javascript.0 2019-10-04 18:53:17.481 info script.js.Meine_Geräte.Unifi: -----------------------SCRIPTCOUNTER------------------ ist : 1 javascript.0 2019-10-04 18:52:51.608 info script.js.Meine_Geräte.Unifi: registered 10 subscriptions and 0 schedules javascript.0 2019-10-04 18:52:51.536 info Start javascript script.js.Meine_Geräte.Unifi
Läuft immer weiter...
-
@liv-in-sky ich habe heute auf js-controller 2.0.22 geupdatet und die Datenbank auf redis/redis umgestellt, jetzt wird in iqontrol die htmclients und htmlinfo nicht mehr dargestellt, iqontrol sagt "Datei existiert nicht"
Sie ist aber definitv vorhanden und wird in dem Pfad auch geändert.Aussage von Apollon77:
Das Skript sollte das mit "writeFile" korrekt im ioBroker-Storage ablegen und nicht an allem vorbei Aber wie gesagt: Thema am besten im iqontrol Thread besprechen.Hat von euch jemand den neuen Controller schon laufen mit redis?
-
@coyote
danke für den hinweis
ich glaube, ich weiß was da falsch ist - werd morgen mal testen und bescheid geben -
Guten Morgen @liv-in-sky
da es mir keine Ruhe ließ warum mit deinem letzten Script keine Daten geholt wurden,
habe ich mein Script mit deinem in WinMerge verglichen und den klitzekleinen Fehler gefunden.
In Zeile 39 fehlt ein Semikolon hinter "let respal"let respv; let respc; let respw; let resph; let respgv; let respa; let respal //geholte Daten
Script läuft jetzt, alle Daten da
-
@Nashra super, dass du das gefunden hast - habe es ausgebessert - echt seltsam, dass bei mir kein fehler kommt
bin eh gerade am "tüffteln" - es gibt ab und zu daten - da haben clients keinen hostnamen und kein alias obwohl sie im controller sichtbar sind - oder einem gerät habe ich ein alias gegeben und später wieder gelöscht - seit dem hat es in den angeforderten daten keinen hostnamen mehr - echt strange
-
@liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:
@Nashra super, dass du das gefunden hast - habe es ausgebessert - echt seltsam, dass bei mir kein fehler kommt
bin eh gerade am "tüffteln" - es gibt ab und zu daten - da haben clients keinen hostnamen und kein alias obwohl sie im controller sichtbar sind - oder einem gerät habe ich ein alias gegeben und später wieder gelöscht - seit dem hat es in den angeforderten daten keinen hostnamen mehr - echt strange
Genau deswegen wurden bei mir ja auch div. Clients nicht angezeigt. Im Controller war zwar ein Aliasname aber den muß
man explizit nochmal in der Config eingeben und speichern. Dachte auch, es ist ja da, also alles ok aber weit gefehlt.
Die Controllersoft ist schon der Hammer -
@liv-in-sky habe gerade auch die letzte Version des Scripts eingespielt und vorher alle DP's gelöscht, Script gestartet, alles da inkl. meinem USG
Hast du schon mal geschaut wegen der html Listen und js-controller 2.0?
Und ein Feature-Request hab ich noch, dann könnte ich nämlich den Unifi Controller auch deinstallieren. Könntest du unter dem USG die WAN-IP als DP mit einfügen? Es kommt zwar recht selten vor, aber ich lasse mir ein Telegram schicken, wenn sich die WAN-IP geändert hat.
Wäre prima, wenn das noch drin wäre.EDIT: Habe es im JSON gerade schon selbst gefunden, vllt schaffe ich es auch selbst einzubauen, wenn ich heute Abend noch Zeit habe. Mal schauen
EDIT2: Hab es schnell eingebaut, läuft
-
@coyote wollt gerade anfangen mit dem iqontrol thema
kanns du mir bitte deine änderungen zusenden - dann baue ich das ein - sonst mußt du bei jedem update deinen code wieder einbauen
-
kurze Zwischeninfo von mir:
Script macht für mich alles was er soll (Version vom 03.10.19).
Ich habe zwei UAP-AP-Pro und einen 24er switch von Unifi, sowohl einen FritzRepeater als AP im Garten im Einsatz. Vouchers nutze ich nicht.
18 users wird angezeigt und beim Durchzählen sind es auch 18 im WLAN. Die drei Geräte, die sich über den FritzRepeater einwählen erscheinen natürlich als LAN Geräte.
Ganz tolles Script! -
Suche tester:
mußte das sortieren und benennen die clients nochmal überarbeiten (der controller macht "komische" sachen) und brauche tester mit usg und/oder usw - aber z.b auch: mein gerootetes tablet hat keinen hostnamen oder löscht man den aliasnamen belibt der im datensatz als leer enthalten, was wiederrum probleme erzeugt hat
script-mit-neuer-sortierung.txt
das neue "verfahren" macht jetzt folgendes
wenn aliasname=false:
-
wenn kein hostname oder leerer hostname , dann aliasnamen verwenden -wenn der auch nicht existiert oder leer ist wird ein "name aus der ipadresse +repaired" gebildet
-
wenn aliasname=true
wenn kein aliasname oder leerer -> direct "name aus der ipadresse +repaired"
wie immer nur der teil unter "AB HIER NICHTS MEHR ÄNDERN" - -datenpunkte bitte löschen , diese könnten nun anders sein
-
interessant sind auch apple (iphone) user und wie erwähnt die usg und usw nutzer
-
bitte auch beobachten was mit clients passiert, die leerzeichen im namen oder alias haben (vorallen bei iphone nutzern)
-
zum rumspielen: es gibt auch einen datenpunkt mit dem man auf aliasname=true schalten kann ohne das script zu stoppen - in der vis sieht man dann sehr gut die veränderungen
so sieht es bei mir aus - habe nur 2 mit aliasnamen bestückt - der rest wird dann mit "repaired" angezeigt- somit weiß man, wo noch ein alias hin muss
-
-
das kam beim ersten Start
javascript.0 2019-10-05 18:30:36.135 error at Object.<anonymous> (script.js.Heiko.16Unifi.Unifi1:1284:82) javascript.0 2019-10-05 18:30:36.135 error Error in callback: TypeError: Cannot read property 'length' of undefined
das ist diese Zeile
setState(dpPrefix + "WLANUnifi.Wifi_Vouchers_ValueCodeList",listValue2.length+1)
nach einem "Neustart" des Script kam dann erstmal das hier
javascript.0 2019-10-05 18:31:37.279 warn script.js.Heiko.16Unifi.Unifi: Unifi Script ist in Pause wegen WLAN Umschalteung- bis: 18:33:57
Das Script scheint aber zu arbeiten, braucht wohl aber einen Moment bis alle Daten da sind.
Weiter testen kann ich leider heute nicht, war eben auch nur kurz. (habe wieder Besuch im Hause---übrigens ein iPhone im Gäste Wifi--hat keinen Hostnamen)
Aber
jetzt läuft das Log damit volljavascript.0 script.js.Heiko.16Unifi.Unifi1: setWifi: rejected: StatusCodeError: 401 - "{\"meta\":{\"rc\":\"error\",\"msg\":\"api.err.LoginRequired\"},\"data\":[]}"
mein Login stimmt aber...? (es werden auch Daten geholt
EDIT: mein USG wir nicht angezeigt
EDIT2: AP Infos werden nicht geschrieben.
EDIT3: Die Client Anzahl schwankt wieder (war schon mal weg)
-
@dslraser uuuppsss - schau ich mal - habe es nochmal (2mal) getestet und neu kopiert und draufgeladen - sollte alles in ordnung sein
script-mit-neuer-sortierung.txt
dann machen wir morgen weiter
-
@liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:
Suche tester:
mußte das sortieren und benennen die clients nochmal überarbeiten (der controller macht "komische" sachen) und brauche tester mit usg und/oder usw - aber z.b auch: mein gerootetes tablet hat keinen hostnamen oder löscht man den aliasnamen belibt der im datensatz als leer enthalten, was wiederrum probleme erzeugt hat
script-mit-neuer-sortierung.txt
das neue "verfahren" macht jetzt folgendes
wenn aliasname=false:
- wenn kein hostname oder leerer hostname , dann aliasnamen verwenden -wenn der auch nicht existiert oder leer ist wird ein "name aus der ipadresse +repaired" gebildet
OK
- wenn aliasname=true
wenn kein aliasname oder leerer -> direct "name aus der ipadresse +repaired"
OK
wie immer nur der teil unter "AB HIER NICHTS MEHR ÄNDERN" - -datenpunkte bitte löschen , diese könnten nun anders sein
- interessant sind auch apple (iphone) user und wie erwähnt die usg und usw nutzer
OK
- bitte auch beobachten was mit clients passiert, die leerzeichen im namen oder alias haben (vorallen bei iphone nutzern)
OK
- zum rumspielen: es gibt auch einen datenpunkt mit dem man auf aliasname=true schalten kann ohne das script zu stoppen - in der vis sieht man dann sehr gut die veränderungen
Nicht getestet
Im Log bis jetzt keine Meldungen
Super
-
@Nashra immer gut positives zu hören - schönen abend
-
@liv-in-sky dito
-
@liv-in-sky hab eigentlich ja nicht viel gemacht, sind nur 2 Zeilen dazu gekommen:
createState(dpPrefix + "WLANUnifi.Wifi_Info", { name: 'Info_HTML_Table_VIS', role: 'string', read: true, write: true,}); if (health) {createState(dpPrefix + "WLANUnifi.Health.WLAN.Status", { name: 'Health_Status', desc: 'Health_Status', type: 'string', unit: '', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.Users", { name: 'Health_Users', desc: 'Health_Users', type: 'number', unit: '', min: '0', max: '1000', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.Guests", { name: 'Health_Guests', desc: 'Health_Guests', type: 'number', unit: '', min: '0', max: '100', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.TXBytes", { name: 'Health_TXBytes', desc: 'Health_TXBytes', type: 'number', unit: '', min: '0', max: '9999999', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.RXBytes", { name: 'Health_RXBytes', desc: 'Health_RXBytes', type: 'number', unit: '', min: '0', max: '9999999', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.Adopted", { name: 'Health_Adopted', desc: 'Health_Adopted', type: 'number', unit: '', min: '0', max: '100', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.Disabled", { name: 'Health_Disabled', desc: 'Health_Disabled', type: 'number', unit: '', min: '0', max: '100', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WLAN.Disconnected", { name: 'Health_Disconnected', desc: 'Health_Disconnected', type: 'number', unit: '', min: '0', max: '100', role: '',read: true, write: true }); createState(dpPrefix + "WLANUnifi.Health.WAN.WAN_IP", {name: 'WAN_Adresse', desc: 'WAN_IP', role: 'state',read: true,write: true,type: 'string' }); }
und
resph=resph.replace(/-r/g, "_r") resph = JSON.parse(resph); mylog(resph.data[0].rx_bytes_r); setState(dpPrefix + "WLANUnifi.Health.WLAN.Status",resph.data[0].status ); setState(dpPrefix + "WLANUnifi.Health.WLAN.Users",resph.data[0].num_user); setState(dpPrefix + "WLANUnifi.Health.WLAN.Guests",resph.data[0].num_guest ); setState(dpPrefix + "WLANUnifi.Health.WLAN.TXBytes",resph.data[0].tx_bytes_r ); setState(dpPrefix + "WLANUnifi.Health.WLAN.RXBytes",resph.data[0].rx_bytes_r ); setState(dpPrefix + "WLANUnifi.Health.WLAN.Adopted",resph.data[0].num_adopted ); setState(dpPrefix + "WLANUnifi.Health.WLAN.Disabled",resph.data[0].num_disabled ); setState(dpPrefix + "WLANUnifi.Health.WLAN.Disconnected",resph.data[0].num_disconnected ); setState(dpPrefix + "WLANUnifi.Health.WAN.WAN_IP",resph.data[1].wan_ip );
jeweils immer die letzte Zeile
-
@coyote danke dir - macht es einfacher für mich - ich habe die daten nicht, da ich keine hardware dazu habe - werde es mit einpflegen
andere frage - nutzt du jetzt auch objects und files von redis - ist dass unser problem ?
wenn das file noch im directory existiert und upgedated wird - hast du dann keine rechte darauf oder ist das file leer