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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Unifi WLAN Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • dslraser
      dslraser Forum Testing Most Active @liv-in-sky last edited by dslraser

      @liv-in-sky
      Ich bin erst vor kurzem in die Unifi Welt eingestiegen. Bei der ersten Einrichtung hatte ich hervorragenden Support (telefonisch und per WhatsApp) von @Samson71 .
      Über dieses Script hier wird er sich besonders freuen, da er es haben wollte und auch nicht wusste wie es geht.

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

        @liv-in-sky sagte in Unifi WLAN Script:

        lass das script mal laufen und poste das lange log

        Mache ich gern später, jetzt gibt es erst mal Abendessen.

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

          @dslraser lass dir schmecken

          ersetze später die logzeile in setClients() (in der for schleife) mit

          log(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
          

          da sieht man die mac adresse und die wifi id zum hostnamen - wäre das was ?

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

            @dslraser mal als beispiel - html tabelle als string abgespeichert in datenpunkt:

            ACHTUNG meine Datenpunkte sind anders als bei dir - bitte anpassen

            createState("WLANUnifi.Wifi_Clients", {
                name: 'Unifi Wifi Status', 
                role: 'string',
                read:  true, 
                write: true,
            });
            

            Image 10.png

            async function getClients() {
                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);
            //log("--------------------- " + resp);
            
            dlog(resp.meta);
            dlog(resp.meta.rc);
            dlog(resp.data[2].hostname);
            dlog(resp.data.length);
            var clientListe = "<table>";
            for (var i = 0; i < resp.data.length; i++) { 
                dlog(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
                 clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+"&ensp;</td><td>"+resp.data[i].essid+"&ensp;&ensp;&ensp;&ensp;</td><td>"+resp.data[i].mac+"</td></tr>");
                dlog(clientListe);
            }
            setState("javascript.2.WLANUnifi.Wifi_Clients", clientListe.concat(clientListe+"</table>"));
            });
            
            }
            
            dslraser 1 Reply Last reply Reply Quote 0
            • dslraser
              dslraser Forum Testing Most Active @liv-in-sky last edited by

              @liv-in-sky
              also ich bekomme eine Liste, damit

              //angemeldete Geräte
              async function getClients() {
                 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);
              log("--------------------- " + resp);
              resp = JSON.parse(resp);
              //log("--------------------- " + resp);
              
              dlog(resp.meta);
              dlog(resp.meta.rc);
              dlog(resp.data[2].hostname);
              log(resp.data.length);
              var clientListe = "<table>";
              for (var i = 0; i < resp.data.length; i++) { 
                 log(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
                  clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+"&ensp;</td><td>"+resp.data[i].essid+"&ensp;&ensp;&ensp;&ensp;</td><td>"+resp.data[i].mac+"</td></tr>");
                  log(clientListe);
              setState("Eigene_Datenpunkte.25Unifi_Wifi.02Haupt_Wifi.04Haupt_Wifi_Geraeteliste", clientListe.concat(clientListe+"</table>"));
              }
              });
              }
              

              nun wollte ich diese Liste mit dem gleichen Befehl alle 10 Sekunden aktualisieren, aber dazu bin ich iwi zu blöd...

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

                @dslraser ich habe getClient(); in den teil geschrieben, der alle 10 sekunden aktualisiert wird -nur ich mach das alle 20 minuten

                setInterval(async () => {
                    getStatus();
                    setTimeout(function () {
                   getClients();
                        }, 8000);
                   /* let state = await getStatus();
                    setState("javascript.2.WLANUnifi.Wifi_Status", state, true);
                    log(state);*/
                }, 1200000); // Aktualisiert alle 10 Sekunden.
                
                
                dslraser 1 Reply Last reply Reply Quote 1
                • dslraser
                  dslraser Forum Testing Most Active @liv-in-sky last edited by

                  @liv-in-sky
                  und ich hatte die Funktion nochmals gemacht/kopiert für getClient, das ging dann wahrscheinlich schief🙈

                  1 Reply Last reply Reply Quote 0
                  • Flexer
                    Flexer last edited by

                    Wenn ich an die Voucher fürs Gäste Wlan dran kommen könnte wäre das gigantisch!

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

                      @dslraser

                      mein ganzes script - auch mit anzahl der clients - es fehlen die oberen variablen - die mit den passwörtern

                      let cookies = [];
                      let loggedIn = false;
                      let debug = false;
                      
                      
                      //Datenpunkt für Wifi Status erstellen
                      createState("WLANUnifi.Wifi_Status", {
                         name: 'Unifi Wifi Status', 
                         role: 'boolean',
                         read:  true, 
                         write: true,
                      });
                      
                      //Datenpunkt Button für Wifi an erstellen
                      createState("WLANUnifi.Wifi_an", {
                         name: 'Unifi Wifi an', 
                         role: 'switch',
                         read:  true, 
                         write: true,
                         type: "boolean",
                         "smartName": {
                         "de": "02Gäste Wlan an",
                         "smartType": "SWITCH"
                      }
                      });
                      
                      //Datenpunkt Button für Wifi aus erstellen
                      createState("WLANUnifi.Wifi_aus", {
                         name: 'Unifi Wifi aus', 
                         role: 'switch',
                         read:  true, 
                         write: true,
                         type: "boolean",
                         "smartName": {
                         "de": "03Gäste Wlan aus",
                         "smartType": "SWITCH"
                      }
                      });
                      createState("WLANUnifi.Wifi_Clients", {
                         name: 'Unifi Wifi Status', 
                         role: 'string',
                         read:  true, 
                         write: true,
                      });
                      
                      createState('WLANUnifi.Wifi_Clients_Anzahl', 0, { name: 'Wifi_Clients_Anzahl', desc: 'Wifi_Clients_Anzahl', type: 'number', unit: '', min: '0', max: '100', role: '',read: true, write: true }); 
                      
                      function dlog(message) {
                        if(debug)
                            console.log(message);
                      }
                      
                      async function login() {
                        return new Promise(async (resolve, reject) => {
                            let resp = await request.post({
                                resolveWithFullResponse: true,
                                url: unifi_controller + "/api/login",
                                body: JSON.stringify({ username: unifi_username, password: unifi_password }),
                                headers: { 'Content-Type': 'application/json' }
                            }).catch((e) => { dlog("login: reject"), reject(e) });
                            
                            if(resp != null) {
                                dlog("login: login war erfolgreich! " + ((resp.headers && resp.headers.hasOwnProperty("set-cookie")) ? "Mit Cookies":"Ohne Cookies"));
                                if(resp.headers && resp.headers.hasOwnProperty("set-cookie")) {
                                    let set_cookies = resp.headers["set-cookie"];
                                    for(i = 0; i < set_cookies.length; i++) {
                                        let cookie = set_cookies[i];
                                        cookie = cookie.split(";")[0];
                                        cookies.push(cookie);
                                    }
                                } else {
                                    dlog("login: no cookies to set!")
                                }
                                loggedIn = true;
                                resolve();
                            } else {
                                dlog("login: rejected")
                                reject("resp = null");
                            }
                        });
                      }
                      
                      async function getStatus() {
                         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/rest/wlanconf/" + wifi_id,
                                 headers: { Cookie: cookies.join("; ") }
                             }).catch((e) => { dlog("getStatus reject " + e); reject(e) });
                         
                      dlog("got response " + JSON.stringify(resp));
                      dlog(typeof resp);
                      resp = JSON.parse(resp);
                      dlog(resp.meta);
                      dlog(resp.meta.rc);
                             
                             let wlanOn = resp.data[0].enabled;
                             dlog("WLAN 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"));
                                 setState("javascript.2.WLANUnifi.Wifi_Status", wlanOn);
                                 
                                 resolve(wlanOn);
                             } else {
                                 dlog("nicht ok...")
                                 
                                 reject(JSON.stringify(resp));
                             }
                         });
                      }
                      
                         async function getClients() {
                         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);
                      //log("--------------------- " + resp);
                      
                      dlog(resp.meta);
                      dlog(resp.meta.rc);
                      dlog(resp.data[2].hostname);
                      dlog(resp.data.length);
                      setState("javascript.2.WLANUnifi.Wifi_Clients_Anzahl",resp.data.length);
                      var clientListe = "<table>";
                      for (var i = 0; i < resp.data.length; i++) { 
                         dlog(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
                          clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+"&ensp;</td><td>"+resp.data[i].essid+"&ensp;&ensp;&ensp;&ensp;</td><td>"+resp.data[i].mac+"</td></tr>");
                          dlog(clientListe);
                      }
                      setState("javascript.2.WLANUnifi.Wifi_Clients", clientListe.concat(clientListe+"</table>"));
                      });
                      
                      }
                      
                      
                      async function dlogout() {
                        return new Promise(async (resolve, reject) => {
                            let resp = await request.get({
                                url: unifi_controller + "/dlogout",
                                headers: { Cookie: cookies.join("; ") }
                            }).catch((e) => reject(e));
                            if(resp != null) {
                                dlog("Du bist nun ausgedloggt.");
                                dlog(resp);
                                resolve();
                            } else {
                                reject("resp = null");
                            }
                        });
                      }
                      
                      async function setWifi(enabled) {
                        return new Promise(async (resolve, reject) => {
                            dlog("setWifi: start set wifi");
                            if(!loggedIn) { dlog("need to login"); await login().catch((e) => reject(e)); }
                            dlog("setWifi: now setting wifi");
                            let resp = request.post({
                                url: unifi_controller + "/api/s/default/upd/wlanconf/" + wifi_id,
                                body: JSON.stringify({ enabled }),
                                headers: { 'Content-Type': 'application/json', Cookie: cookies.join("; ") }
                            }).catch((e) => { dlog("setWifi: rejected: " + e); reject(e) });
                            dlog("setWifi: got response")
                            if(resp != null) {
                                dlog("setWifi: Wifi wurde erfolgreich " + (enabled ? "eingeschaltet" : "ausgeschaltet"));
                                dlog(resp);
                                resolve();
                            } else {
                                dlog("setWifi: rejetced")
                                dlog("resp: " + JSON.stringify(resp));
                                reject("msg: " + JSON.parse(resp.body).meta.msg);
                            }
                        });
                      }
                      
                      async function test() {
                        dlog("starting test");
                        await setWifi(false).catch((e) => dlog("reject1: " + e));
                        dlog("getting status");
                        let wlan = await getStatus().catch((e) => dlog("reject2: " + e));
                        console.log("fin")
                        console.log(wlan);
                      }
                      
                      setInterval(async () => {
                         getStatus();
                         setTimeout(function () {
                        getClients();
                             }, 8000);
                        /* let state = await getStatus();
                         setState("javascript.2.WLANUnifi.Wifi_Status", state, true);
                         log(state);*/
                      }, 1200000); // Aktualisiert alle 10 Sekunden.
                      
                      
                      on("javascript.2.WLANUnifi.Wifi_an", (state) => {
                         setWifi(true);
                         setTimeout(function () {
                             getStatus();
                             setState("javascript.2.WLANUnifi.Wifi_an", false);
                      }, 10000);
                      });
                      on("javascript.2.WLANUnifi.Wifi_aus", (state) => {
                         setWifi(false);
                         setTimeout(function () {
                            getStatus();   
                            setState("javascript.2.WLANUnifi.Wifi_aus", false);
                      }, 1200000);
                      });
                      
                      //test();
                      

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

                        @Flexer
                        @dslraser

                        falls lust mal testen - sollte voucher ausgeben - erster test

                        async function getVouchers() {
                            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/voucher",
                                    headers: { Cookie: cookies.join("; ") }
                                }).catch((e) => { dlog("getStatus reject " + e); reject(e) });  
                           
                        dlog("got response " + JSON.stringify(resp));
                        dlog(typeof resp);
                        log("--------------------- " + resp);
                        resp = JSON.parse(resp);
                        //log("--------------------- " + resp);
                        
                        dlog(resp.meta);
                        dlog(resp.meta.rc);
                        dlog(resp.data[1].code);
                        log(resp.data.length);
                        /*var clientListe = "<table>";
                        for (var i = 0; i < resp.data.length; i++) { 
                            log(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
                             clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+"&ensp;</td><td>"+resp.data[i].essid+"&ensp;&ensp;&ensp;&ensp;</td><td>"+resp.data[i].mac+"</td></tr>");
                             log(clientListe);
                        }
                        setState("javascript.2.WLANUnifi.Wifi_Clients", clientListe.concat(clientListe+"</table>"));*/
                        });
                        
                        }
                        
                        dslraser Flexer 3 Replies Last reply Reply Quote 1
                        • dslraser
                          dslraser Forum Testing Most Active @liv-in-sky last edited by

                          @liv-in-sky sagte in Unifi WLAN Script:

                          async function getVouchers() { 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/voucher", headers: { Cookie: cookies.join("; ") } }).catch((e) => { dlog("getStatus reject " + e); reject(e) }); dlog("got response " + JSON.stringify(resp)); dlog(typeof resp); log("--------------------- " + resp); resp = JSON.parse(resp); //log("--------------------- " + resp); dlog(resp.meta); dlog(resp.meta.rc); dlog(resp.data[1].code); log(resp.data.length); /var clientListe = "<table>"; for (var i = 0; i < resp.data.length; i++) { log(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac); clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+" </td><td>"+resp.data[i].essid+"    </td><td>"+resp.data[i].mac+"</td></tr>"); log(clientListe); } setState("javascript.2.WLANUnifi.Wifi_Clients", clientListe.concat(clientListe+"</table>"));/ }); }

                          bei mir klappt es, die Liste wird erstellt 👍 . Jetzt muß ich nur noch schauen wie ich die Liste vernünftig in iQontrol angezeigt bekomme.

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

                            @liv-in-sky
                            warum ist ist bei Dir so einiges auskommentiert ?

                            Bildschirmfoto 2019-08-28 um 21.49.11.png

                            Bildschirmfoto 2019-08-28 um 21.49.24.png

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

                              @dslraser hört sich vielleicht doof an

                              mach doch in deiner vis einen extra view nur die vouchers - und in iqontrol einen link zu dieser view

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

                                @liv-in-sky sagte in Unifi WLAN Script:

                                in deiner vis

                                ich habe keine VIS 😊

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

                                  @liv-in-sky
                                  wie erstelle ich jetzt daraus eine Liste für den Datenpunkt (Hier ist ja noch mac Adresse usw drin, die ja hier nicht gebraucht wird. )
                                  Mit den auskommentierten Sachen habe ich die Vouchers zu mindestens im Log.

                                  Hier mal Dein Script, was logischerweise so noch in Zeile 206 einen Fehler produziert

                                  //Datenpunkt für Wifi Status erstellen
                                  createState("WLANUnifi.Wifi_Status", {
                                    name: 'Unifi Wifi Status', 
                                    role: 'boolean',
                                    read:  true, 
                                    write: true,
                                  });
                                  //Datenpunkt Button für Wifi an erstellen
                                  createState("WLANUnifi.Wifi_an", {
                                    name: 'Unifi Wifi an', 
                                    role: 'switch',
                                    read:  true, 
                                    write: true,
                                  });
                                  //Datenpunkt Button für Wifi aus erstellen
                                  createState("WLANUnifi.Wifi_aus", {
                                    name: 'Unifi Wifi aus', 
                                    role: 'switch',
                                    read:  true, 
                                    write: true,
                                    type: "boolean",
                                    "smartName": {
                                    "de": "03Gäste Wlan aus",
                                    "smartType": "SWITCH"
                                  }
                                  });
                                  createState("WLANUnifi.Wifi_Clients", {
                                    name: 'Unifi Wifi Status', 
                                    role: 'string',
                                    read:  true, 
                                    write: true,
                                  });
                                  
                                  createState('WLANUnifi.Wifi_Clients_Anzahl', 0, { name: 'Wifi_Clients_Anzahl', desc: 'Wifi_Clients_Anzahl', type: 'number', unit: '', min: '0', max: '100', role: '',read: true, write: true }); 
                                  
                                  function dlog(message) {
                                   if(debug)
                                       console.log(message);
                                  }
                                  
                                  async function login() {
                                   return new Promise(async (resolve, reject) => {
                                       let resp = await request.post({
                                           resolveWithFullResponse: true,
                                           url: unifi_controller + "/api/login",
                                           body: JSON.stringify({ username: unifi_username, password: unifi_password }),
                                           headers: { 'Content-Type': 'application/json' }
                                       }).catch((e) => { dlog("login: reject"), reject(e) });
                                       
                                       if(resp != null) {
                                           dlog("login: login war erfolgreich! " + ((resp.headers && resp.headers.hasOwnProperty("set-cookie")) ? "Mit Cookies":"Ohne Cookies"));
                                           if(resp.headers && resp.headers.hasOwnProperty("set-cookie")) {
                                               let set_cookies = resp.headers["set-cookie"];
                                               for(i = 0; i < set_cookies.length; i++) {
                                                   let cookie = set_cookies[i];
                                                   cookie = cookie.split(";")[0];
                                                   cookies.push(cookie);
                                               }
                                           } else {
                                               dlog("login: no cookies to set!")
                                           }
                                           loggedIn = true;
                                           resolve();
                                       } else {
                                           dlog("login: rejected")
                                           reject("resp = null");
                                       }
                                   });
                                  }
                                  
                                  async function getStatus() {
                                    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/rest/wlanconf/" + wifi_id,
                                            headers: { Cookie: cookies.join("; ") }
                                        }).catch((e) => { dlog("getStatus reject " + e); reject(e) });
                                    
                                  dlog("got response " + JSON.stringify(resp));
                                  dlog(typeof resp);
                                  resp = JSON.parse(resp);
                                  dlog(resp.meta);
                                  dlog(resp.meta.rc);
                                        
                                        let wlanOn = resp.data[0].enabled;
                                        dlog("WLAN 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"));
                                            setState("javascript.2.WLANUnifi.Wifi_Status", wlanOn);
                                            
                                            resolve(wlanOn);
                                        } else {
                                            dlog("nicht ok...")
                                            
                                            reject(JSON.stringify(resp));
                                        }
                                    });
                                  }
                                  
                                    async function getClients() {
                                    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);
                                  //log("--------------------- " + resp);
                                  
                                  dlog(resp.meta);
                                  dlog(resp.meta.rc);
                                  dlog(resp.data[2].hostname);
                                  dlog(resp.data.length);
                                  setState("javascript.0.WLANUnifi.Wifi_Clients_Anzahl",resp.data.length);
                                  var clientListe = "<table>";
                                  for (var i = 0; i < resp.data.length; i++) { 
                                    dlog(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
                                     clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+"&ensp;</td><td>"+resp.data[i].essid+"&ensp;&ensp;&ensp;&ensp;</td><td>"+resp.data[i].mac+"</td></tr>");
                                     dlog(clientListe);
                                  }
                                  setState("javascript.0.WLANUnifi.Wifi_Clients", clientListe.concat(clientListe+"</table>"));
                                  });
                                  }
                                  
                                  async function dlogout() {
                                   return new Promise(async (resolve, reject) => {
                                       let resp = await request.get({
                                           url: unifi_controller + "/dlogout",
                                           headers: { Cookie: cookies.join("; ") }
                                       }).catch((e) => reject(e));
                                       if(resp != null) {
                                           dlog("Du bist nun ausgedloggt.");
                                           dlog(resp);
                                           resolve();
                                       } else {
                                           reject("resp = null");
                                       }
                                   });
                                  }
                                  
                                  async function setWifi(enabled) {
                                   return new Promise(async (resolve, reject) => {
                                       dlog("setWifi: start set wifi");
                                       if(!loggedIn) { dlog("need to login"); await login().catch((e) => reject(e)); }
                                       dlog("setWifi: now setting wifi");
                                       let resp = request.post({
                                           url: unifi_controller + "/api/s/default/upd/wlanconf/" + wifi_id,
                                           body: JSON.stringify({ enabled }),
                                           headers: { 'Content-Type': 'application/json', Cookie: cookies.join("; ") }
                                       }).catch((e) => { dlog("setWifi: rejected: " + e); reject(e) });
                                       dlog("setWifi: got response")
                                       if(resp != null) {
                                           dlog("setWifi: Wifi wurde erfolgreich " + (enabled ? "eingeschaltet" : "ausgeschaltet"));
                                           dlog(resp);
                                           resolve();
                                       } else {
                                           dlog("setWifi: rejetced")
                                           dlog("resp: " + JSON.stringify(resp));
                                           reject("msg: " + JSON.parse(resp.body).meta.msg);
                                       }
                                   });
                                  }
                                  async function getVouchers() {
                                     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/voucher",
                                             headers: { Cookie: cookies.join("; ") }
                                         }).catch((e) => { dlog("getStatus reject " + e); reject(e) });  
                                    
                                  dlog("got response " + JSON.stringify(resp));
                                  dlog(typeof resp);
                                  log("--------------------- " + resp);
                                  resp = JSON.parse(resp);
                                  //log("--------------------- " + resp);
                                  
                                  dlog(resp.meta);
                                  dlog(resp.meta.rc);
                                  dlog(resp.data[1].code);
                                  log(resp.data.length);
                                  var clientListe = "<table>";
                                  for (var i = 0; i < resp.data.length; i++) { 
                                     log(resp.data[i].hostname + " --- " + resp.data[i].essid + " --- " + resp.data[i].mac);
                                      clientListe = clientListe.concat("<tr><td>"+resp.data[i].hostname+"&ensp;</td><td>"+resp.data[i].essid+"&ensp;&ensp;&ensp;&ensp;</td><td>"+resp.data[i].mac+"</td></tr>");
                                      log(clientListe);
                                  }
                                  setState("javascript.0.WLANUnifi.Wifi_Vouchers", clientListe.concat(clientListe+"</table>"));
                                  });
                                  }
                                  
                                  async function test() {
                                   dlog("starting test");
                                   await setWifi(false).catch((e) => dlog("reject1: " + e));
                                   dlog("getting status");
                                   let wlan = await getStatus().catch((e) => dlog("reject2: " + e));
                                   console.log("fin")
                                   console.log(wlan);
                                  }
                                  
                                  setInterval(async () => {
                                    getStatus();
                                    setTimeout(function () {
                                   getClients();
                                        }, 8000);
                                   /* let state = await getStatus();
                                    setState("javascript.2.WLANUnifi.Wifi_Status", state, true);
                                    log(state);*/
                                  }, 1200000); // Aktualisiert alle 10 Sekunden.
                                  
                                  
                                  on("javascript.0.WLANUnifi.Wifi_an", (state) => {
                                    setWifi(true);
                                    setTimeout(function () {
                                        getStatus();
                                        setState("javascript.0.WLANUnifi.Wifi_an", false);
                                  }, 10000);
                                  });
                                  on("javascript.0.WLANUnifi.Wifi_aus", (state) => {
                                    setWifi(false);
                                    setTimeout(function () {
                                       getStatus();   
                                       setState("javascript.0.WLANUnifi.Wifi_aus", false);
                                  }, 1200000);
                                  });
                                  
                                  getVouchers();
                                  

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    dos1973 last edited by

                                    Wow, Klasse Sache was ihr hier macht... werde das sobald zu Hause auch mal versuchen!

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

                                      @dslraser

                                      ich mach morgen mittag weiter - heut ist feierabend

                                      du hast ja genug cpu und ram resourcen - mach doch eine simple vis mit einer view - dauert nicht lange - ich wollte eh morgen mal noch die voucher sache formatieren - falls du hilfe benötigst mit der vis - einfach sagen

                                      ich habe ein flotdiagramm in iqontrol eingebunden als popup - sieht cool aus

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

                                        @dslraser sagte in Unifi WLAN Script:

                                        @liv-in-sky
                                        warum ist ist bei Dir so einiges auskommentiert ?

                                        Bildschirmfoto 2019-08-28 um 21.49.11.png

                                        Bildschirmfoto 2019-08-28 um 21.49.24.png

                                        der obere teil ist auskomentiert, weil ich die daten noch nicht verarbeite (kommt erst heute mittag) - war froh , dass ich die daten überhaupt bekommen habe 🙂 während der entwicklung kommentiere ich lieber aus bevor ich etwas lösche, was ich später noch brauchen könnte

                                        der untere teil ist auskommentiert, weil das bei mir irgendwie nicht klappte - und ich den einfachen aufruf der funktion nutze - vielleicht schau ich mir das auch nochmal an, was da schief lief

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

                                          @liv-in-sky
                                          ich bin heute frühestens 19.00 Uhr zu Hause, danach (oder zwischendurch wenn Zeit ist) wollte ich auch weiter "testen".
                                          Bis später...

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

                                            @liv-in-sky Kann man die Voucher in datenpunkte speichern?

                                            Code01
                                            Code02....

                                            liv-in-sky 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            380
                                            35471
                                            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