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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    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

      @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
                                          • liv-in-sky
                                            liv-in-sky @Flexer last edited by

                                            @Flexer wie genau willst du sie speichern bzw anzeigen ?

                                            • jeden einzeln als datenpunkt - dann wäre es einfacher eine feste anzahl zu definieren
                                              wenn du dynamisch eine anzahl wählst wird nicht nur das programm sondern auch die anzeige etwas komplizierter
                                            • alle in einer art html tabelle - zum auflisten in der vis - wäre am einfachsten
                                            Flexer 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            855
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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