NEWS
Unifi WLAN Script
-
@liv-in-sky Hey, ich hab mir das Skript mal angeschaut.
Zwei Sachen sind mit aufgefallen:
- Variablen die du nur einer Funktion brauchst bitte nicht als globale Variable machen^^ Ist auch zugunsten vom Arbeitsspeicher besser es dann nur in der Funktion zu machen.
- Funktionen nur als async deklarieren, wenn man es auch wirklich braucht. Ansonsten werden sie parallel zum restlichen Code ausgeführt und es kann zu Fehlern kommen.
-
@thewhobox danke dir
ich schau mir das mal alles in ruhe an - heut ist ein "es klappt nix"- programmier tag
das mit der fehlersache klappt irgendwie nicht - wenn das script die clientdatenpunkte nicht mehr setzt und ich die javascript instanz neustarte kommen immer die promise fehler ! - werd jetzt erstmal ein video dazu anschauen
-
hab mal etwas getestet - login scheint zu funktionieren aber es hängt dann in der getStatus - zyklus 1 ist logeintrag vor getstatus - zyklus2 wäre logeintrag vor getvoucher() zyklus 3 logeintrag vor getclients()
ich habe dein login, getstatus und setwifis übernommen und die anfänge von (login und datenholen) in den anderen funktionen - hängt sich aber in getstatus() auf bzw - fehlendes resolve - got response sollte antwort von controller sein (resp)
anschliessend instanz neustarten mit folgenden fehler
so sieht getstatus aus
-
ich danke dir. Leider funktioniert es weiterhin nicht, ich habe 1:1 den gleichen Fehler wie vorher, obwohl das Skript komplett anders aussieht. Es ist immer die async login funktion, an der er sich aufhängt.
Habe alle diene Einstellungen nachgepflegt. Es bleibt bei den massiven Errors:
avascript.0 2019-09-05 20:02:56.673 error at WebSocket.ws.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:146:10) javascript.0 2019-09-05 20:02:56.673 error at WS.Transport.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:137:8) javascript.0 2019-09-05 20:02:56.673 error at WS.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:145:8) javascript.0 2019-09-05 20:02:56.673 error at WS.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) javascript.0 2019-09-05 20:02:56.672 error at WS.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:268:10) javascript.0 2019-09-05 20:02:56.672 error at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:451:14) javascript.0 2019-09-05 20:02:56.672 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) javascript.0 2019-09-05 20:02:56.672 error at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15) javascript.0 2019-09-05 20:02:56.672 error at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:322:16) javascript.0 2019-09-05 20:02:56.671 error at Decoder.add (/opt/iobroker/node_modules/socket.io-parser/index.js:246:12) javascript.0 2019-09-05 20:02:56.671 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:134:20) javascript.0 2019-09-05 20:02:56.671 error at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15) javascript.0 2019-09-05 20:02:56.671 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:332:8) javascript.0 2019-09-05 20:02:56.670 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) javascript.0 2019-09-05 20:02:56.669 error at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15) javascript.0 2019-09-05 20:02:56.669 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12) javascript.0 2019-09-05 20:02:56.669 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:312:9) javascript.0 2019-09-05 20:02:56.669 error at Socket.adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:745:17) javascript.0 2019-09-05 20:02:56.669 error at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1123:17) javascript.0 2019-09-05 20:02:56.668 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1070:37) javascript.0 2019-09-05 20:02:56.668 error at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:878:28) javascript.0 2019-09-05 20:02:56.668 error at Object.createScript (vm.js:56:10) javascript.0 2019-09-05 20:02:56.665 error SyntaxError: Unexpected token function javascript.0 2019-09-05 20:02:56.665 error ^^^^^^^^ javascript.0 2019-09-05 20:02:56.664 error async function login() { javascript.0 2019-09-05 20:02:56.664 error at script.js.common.System.WLAN_Ein_aus:145 javascript.0 2019-09-05 20:02:56.664 error script.js.common.System.WLAN_Ein_aus compile failed:
-
@tempestas hast du die zusatzmodule in der instanz installiert?
-
Ja, habe ich.
Js Adapter ist auf aktuellem stable.
Edit: omg, mein node js war uralt... v 6.11 oder so. Async geht erst ab v 7.6
habe jetzt aktualisiert, mal sehenedit 2: das war wohl nichts. rein gar keine änderung, leider
edit 3: ok, ich komme wohl ans ende meiner linux unkenntnis.
ich habe nodejs aktualisiert, hier steht auch
wie passt das zusammen? angeblich ist 10.16 installiert aber die v zeigt dan doch nur 6.11 an?
-
@tempestas bitte in dem node update thread posten
z.b https://forum.iobroker.net/topic/22867/how-to-node-js-für-iobroker-richtig-updaten
-
Danke dir. terminal neu starten hat gereicht nun zeigt er die richtige nodejs version an.
Bleibt die Frage, warum das Skript nicht magedit:
ha, irgendwas ist passiert, nur noch das hier als Fehler:
javascript.0 2019-09-05 22:30:51.532 error at Script.runInContext (vm.js:133:20) javascript.0 2019-09-05 22:30:51.531 error at script.js.common.System.WLAN_Ein_aus:61:20 javascript.0 2019-09-05 22:30:51.531 error at ProtectFs.writeFileSync (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:31:37) javascript.0 2019-09-05 22:30:51.531 error at writeFileSync (fs.js:1194:35) javascript.0 2019-09-05 22:30:51.531 error at Object.openSync (fs.js:443:3) javascript.0 2019-09-05 22:30:51.531 error Error: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/files/iqontrol/htmlvoucher.html' javascript.0 2019-09-05 22:30:51.531 error ^ javascript.0 2019-09-05 22:30:51.531 error throw err; javascript.0 2019-09-05 22:30:51.531 error script.js.common.System.WLAN_Ein_aus: fs.js:114
schaue ich mir morgen an
-
@tempestas welche fehlermeldung kommt jetzt
-
schalte mal alle 3 dieser variablen auf false anstatt true
let iqontrol = true; let anwesenheit = true; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen let vouchers = true;
-
@tempestas
Hast Du iQontrol installiert ? (es gibt anscheinend diesen Ordner dazu bei Dir nicht ?)
Hast Du ein Voucher System für Dein Gäste WLAN eingerichtet ? -
@liv-in-sky
@thewhobox
bei mir gibt es zwei Harmony HUB
aber es wir in den DP nur einer angelegt, wird einer irgendwie als doppelt weg gefiltert ?
es wird nur dieser angelegt
-
@thewhobox sagte in Unifi WLAN Script:
@liv-in-sky Hey, ich hab mir das Skript mal angeschaut.
Zwei Sachen sind mit aufgefallen:
- Variablen die du nur einer Funktion brauchst bitte nicht als globale Variable machen^^ Ist auch zugunsten vom Arbeitsspeicher besser es dann nur in der Funktion zu machen.
- Funktionen nur als async deklarieren, wenn man es auch wirklich braucht. Ansonsten werden sie parallel zum restlichen Code ausgeführt und es kann zu Fehlern kommen.
übrigens schaltet diese Variante jetzt das WLAN bei mir nicht mehr an / aus
-
@dslraser von meiner seite wird nichts gefiltered
du könntest die mal die daten, die vom controller kommen ansehen - in der getclient das log enabeln und mal ansehen
//-----------------------------------------GETCLIENTS--------------------------------------------------------------- async function getClients() { dlog("BIN IN CLIENTS"); return new Promise(async (resolve, reject) => { dlog("nur mal so"); if(!loggedIn) await login().catch((e) => reject(e)); let resp = await request.get({ url: unifi_controller + "/api/s/default/stat/sta/", headers: { Cookie: cookies.join("; ") } }).catch((e) => { dlog("getStatus reject " + e); reject(e) }); dlog("got response " + JSON.stringify(resp)); dlog(typeof resp); dlog("--------------------- " + resp); //resp = JSON.parse(resp);
in dieser zeile
dlog("--------------------- " + resp);
das dlog in log verwandeln
ich arbeite gerne mit notepad++ - darin kann man einen JSONViewer installieren oder einfach das log durchsuchen
- das wlan schalten sollte schon funktionieren - es kommt aber noch eine version - ich habe mal einen langzeit test gemacht und eine unstimmigkeit festgestellt - muss im script noch etwas ändern
-
@liv-in-sky
ich denke, ich weiß woran es liegt, das nur ein Harmony HUB gefunden wird. In dem Script wird auf hostname geschaut, die haben aber beide den gleichen hostnameich habe bei mir im Script mal alles auf
name
geändert, dann werden auch die DP dazu erstellt und mir werden die vergebenen Namen angezeigt, gefällt mir sogar besser.
-
@dslraser werd ich mal anschauen - ich habe auch ein problem damit - kommt gerade zur richtigen zeit!
-
@dslraser ändere nicht zuviel - habe script ziemlich umgeschrieben
-
@dslraser sagte in Unifi WLAN Script:
ich habe bei mir im Script mal alles auf
namegeändert, dann werden auch die DP dazu erstellt und mir werden die vergebenen Namen angezeigt, gefällt mir sogar besser.
das check ich nicht - was für einen namen hast du verwendet und wo ersetzt ? es gibt nur den hostnamen, der vom controller kommt
-
könntest du mir bitte erklären, warum deine funktionen als async konfiguriert sind - muss das so sein?
hat das was mit der server kommunication zu tun ?
-
@liv-in-sky sagte in Unifi WLAN Script:
das check ich nicht - was für einen namen hast du verwendet und wo ersetzt ? es gibt nur den hostnamen, der vom controller kommt
jetzt glaube verstehe ich - du hast ja nicht nur wie ich einen uap - du hast auch einen router - bekommst du andere daten als ich zurück ?