Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Unifi WLAN Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Unifi WLAN Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @thewhobox last edited by liv-in-sky

      @thewhobox

      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)

      Image 5.png

      anschliessend instanz neustarten mit folgenden fehler

      Image 3.png

      so sieht getstatus aus

      //Updatet status vom Wifi
      //wifi: wifi object aus der konstanten wifis
      async function getStatus(wifi) {
         dlog("BIN IN STATUS");
         return new Promise(async (resolve, reject) => {
             dlog("nur mal so");
             if (!loggedIn) await login().catch((e) => reject(e));
             let resp = await request.get(unifi_controller + "/api/s/default/rest/wlanconf/" + wifi.id)
                 .catch((e) => { dlog("getStatus reject " + e); reject(e) });
      
             log("got response " + JSON.stringify(resp));
             resp = JSON.parse(resp);
      
             let wlanOn = resp.data[0].enabled;
             log("WLAN " + wifi.name + " ist: " + (wlanOn ? "an" : "aus"));
      
             if (resp != null && resp.meta && resp.meta.rc == "ok") {
                 dlog("Status erfolgreich geholt!");
                 dlog(resp);
                 let wlanOn = resp.data[0].enabled;
                 dlog("WLAN ist: " + (wlanOn ? "an" : "aus"));
                 setStateDelayed(dpPrefix + "WLANUnifi." + wifi.name, wlanOn, 200);
      
                 resolve(wlanOn);
             } else {
                 dlog("nicht ok...")
                 reject(JSON.stringify(resp));
             } dlog("BIN aus STATUS raus");
         });
      
      }
      

      1 Reply Last reply Reply Quote 0
      • T
        tempestas @liv-in-sky last edited by

        @liv-in-sky

        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: 
        
        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @tempestas last edited by

          @tempestas hast du die zusatzmodule in der instanz installiert?

          T 1 Reply Last reply Reply Quote 0
          • T
            tempestas @liv-in-sky last edited by tempestas

            @liv-in-sky

            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 sehen

            edit 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

            d3fa5082-a971-4246-a280-cc1c42f406b7-grafik.png

            wie passt das zusammen? angeblich ist 10.16 installiert aber die v zeigt dan doch nur 6.11 an?

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @tempestas last edited by

              @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

              T 1 Reply Last reply Reply Quote 0
              • T
                tempestas @liv-in-sky last edited by tempestas

                @liv-in-sky

                Danke dir. terminal neu starten hat gereicht nun zeigt er die richtige nodejs version an.
                Bleibt die Frage, warum das Skript nicht mag

                edit:

                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

                liv-in-sky dslraser 3 Replies Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @tempestas last edited by

                  @tempestas welche fehlermeldung kommt jetzt

                  1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @tempestas last edited by

                    @tempestas

                    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;
                    
                    1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @tempestas last edited by dslraser

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

                      1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active last edited by

                        @liv-in-sky
                        @thewhobox
                        bei mir gibt es zwei Harmony HUB

                        Bildschirmfoto 2019-09-05 um 22.51.00.png
                        aber es wir in den DP nur einer angelegt, wird einer irgendwie als doppelt weg gefiltert ?
                        es wird nur dieser angelegt
                        Bildschirmfoto 2019-09-05 um 22.52.48.png

                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • dslraser
                          dslraser Forum Testing Most Active @thewhobox last edited by dslraser

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

                          unifi.txt

                          übrigens schaltet diese Variante jetzt das WLAN bei mir nicht mehr an / aus

                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @dslraser last edited by

                            @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
                            1 Reply Last reply Reply Quote 0
                            • dslraser
                              dslraser Forum Testing Most Active last edited by dslraser

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

                              Bildschirmfoto 2019-09-06 um 13.16.57.png

                              Bildschirmfoto 2019-09-06 um 13.17.13.png

                              ich 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.
                              Bildschirmfoto 2019-09-06 um 14.02.44.png

                              liv-in-sky 3 Replies Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @dslraser last edited by

                                @dslraser werd ich mal anschauen - ich habe auch ein problem damit - kommt gerade zur richtigen zeit!

                                1 Reply Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @dslraser last edited by

                                  @dslraser ändere nicht zuviel - habe script ziemlich umgeschrieben 🙂

                                  1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @dslraser last edited by

                                    @dslraser sagte in Unifi WLAN Script:

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

                                    das check ich nicht - was für einen namen hast du verwendet und wo ersetzt ? es gibt nur den hostnamen, der vom controller kommt

                                    liv-in-sky 2 Replies Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @liv-in-sky last edited by

                                      @thewhobox

                                      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 ?

                                      1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky @liv-in-sky last edited by liv-in-sky

                                        @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

                                        @dslraser

                                        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 ?

                                        dslraser 1 Reply Last reply Reply Quote 0
                                        • dslraser
                                          dslraser Forum Testing Most Active @liv-in-sky last edited by dslraser

                                          @liv-in-sky
                                          ich habe wie besprochen auf log gestellt. Das Log habe ich mir dann im Editor angesehen, da kommt auch name.
                                          Dann habe ich alles was im Script hostname heißt mal Testweise auf name geändert. Das Ergebnis ist wie beschrieben.

                                          liv-in-sky 1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @dslraser last edited by

                                            @dslraser liegt wohl am unterschiedlichen setting

                                            bei mir gibt es keinen namen - nur hostnamen

                                            dslraser 3 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            904
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            380
                                            43183
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo