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.
    • dslraser
      dslraser Forum Testing Most Active @liv-in-sky last edited by dslraser

      @liv-in-sky
      das sind aber alle Geräte in diesem Netz, nicht nur WLAN, also auch LAN Geräte

      Bildschirmfoto 2019-08-28 um 18.18.27.png

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

        @dslraser - ja ich weiß - bei mir auch - aber die abfrage für diesen wert verlangt keine wifi_id - ich müßte also die wifi_id noch in die abfrage selbst verarbeiten - arbeite noch dran

        wie sollen wir die liste mit den clients machen - damit sie gut in die vis passen - eigentlich brauchen wir 2 listen für jedes netzwerk

        das mit dem voucher kannte ich nicht .- siehe gerade youtube um zu lernen

        dslraser 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:

          das mit dem voucher kannte ich nicht

          sieht ungefähr so aus....(den halben Voucher habe ich nicht im Bild)

          Bildschirmfoto 2019-08-28 um 18.20.22.png

          Die haben alle dieses Format
          26124-22157

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

            @dslraser

            hab da was missverstanden - es werden nur die wlan geräte angezeigt von allen wlannetzwerken in getClients() - keine lan-geräte - die info hat er ja garnicht - bei mir jedenfalls

            im log ist auch die anzahl zu sehen - bei mir 38 wlangeräte

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

              @liv-in-sky
              bei mir sind WLAN und LAN Geräte in der Liste. Anzahl stimmt auch.

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

                @dslraser siehst du die auch wenn du im browser den unifi controller aufrufst ? - du hast doch eine fritzbox - oder einen unifi router ?

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

                  @liv-in-sky
                  Fritzbox und dahinter

                  Screenshot_20190828-183224_Chrome.jpg

                  Wobei doppel NAT schon deaktiviert ist.

                  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:

                    siehst du die auch wenn du im browser den unifi controller aufrufst ?

                    ja, da sehe ich die auch

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

                      @dslraser oh mann - warum sollte es einfach sein

                      lass das script mal laufen und poste das lange log unter dem script - darin müßte man irgendwie erkennen, in welchen netzwerk der client ist - damit könnte man dann eine aufteilung machen eine liste:

                      clientname - macadresse - netzwerkname

                      evtl in html formatiert und in einen string geschrieben ?

                      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 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            897
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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