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 2 mit Anwesenheitskontrolle

    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 2 mit Anwesenheitskontrolle

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

      @aleks-83

      hier sehr "quick and dirty" zusammenkopiert - bei mir geht es

      macht unter javascript.x datenpunkte, die geschalten werden können - ansonsten musst du oben im script deine daten eingeben

      
      const unifi_username = "username";
      const unifi_password = "password";
      const unifi_controller = "https://192.168.178.157:8443";
      
      let siteName ="default";   //Site name 
      
      let cookies = [];
      const dpPrefix = "javascript."+ instance +".";
      const request = require('request-promise-native').defaults({ rejectUnauthorized: false });
      let loggedIn = false;
      let wifiDPs = [];
      let testerrws;
      let debug = false;
      
      // DEFINITION der zu anzeigenden Netzwerke am besten bis auf id und smart alle gleich setzen
      const wifis = {
        "WLAN_DragonRoot1": { name: "WLAN_DragonRoot1",         id: "5caxxxxxxxd7e5381", desc: "WLAN_DragonRoot1" } ,
        "WLAN_DragonRootGuest": { name: "WLAN_DragonRootGuest", id: "5d65xxxxxedd761", desc: "WLAN_DragonRootGuest" }
      }
      
      for(let wifi_name in wifis) {
          wifiDPs.push(dpPrefix + "WLANSchalten." + wifis[wifi_name].name);
          createState(dpPrefix + "WLANSchalten."+ wifi_name, { name: wifis[wifi_name].desc, role: 'switch', read: true, write: true, type: "boolean" });}
      
      async function setWifi(enabled, wifi) {
      
        return new Promise(async (resolve, reject) => {
            //log("setWifi: start set Wifi_haupt");
            if (!loggedIn) { log("need to login"); await login().catch((e) => reject(e)); }
           // dlog("setWifi: now setting Wifi_haupt");
            let resp = request.post({
                url: unifi_controller + "/api/s/"+siteName+"/upd/wlanconf/" + wifi.id,
                body: JSON.stringify({ enabled }),
                headers: { 'Content-Type': 'application/json', Cookie: cookies.join("; ") }
            }).catch((e) => { log("setWifi: rejected: " + e); /*reject(e)*/ return testerrws=true; });
           // dlog("setWifi: got response")
      
            if (resp != null) {
             //   dlog("setWifi: Wifi wurde erfolgreich " + (enabled ? "eingeschaltet" : "ausgeschaltet"));
               // dlog(resp);
                        // getclient()  Pause für umschalten
      
           
              
             
                setState(dpPrefix + "WLANSchalten." + wifi.name, enabled, enabled);
                resolve();
            } else {
             //   dlog("setWifi: rejetced")
             //   dlog("resp: " + JSON.stringify(resp));
                reject("msg: " + JSON.parse(resp.body).meta.msg);}
            
        });
      
      }
      
      
      
      async function login() {
        return new Promise(async (resolve, reject) => {
            cookies=[];
            let respl = 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) => { log("login: reject"), reject(e);  loggedIn =false;return respl=[];});
            
            if(respl != null) {
                log("login: login war erfolgreich! " + ((respl.headers && respl.headers.hasOwnProperty("set-cookie")) ? "Mit Cookies":"Ohne Cookies"));
                if(respl.headers && respl.headers.hasOwnProperty("set-cookie")) {
                    let set_cookies = respl.headers["set-cookie"];
                    for(i = 0; i < set_cookies.length; i++) {
                        let cookie = set_cookies[i];
                        //log(set_cookies[i]);
                        cookie = cookie.split(";")[0];
                        cookies.push(cookie);
                    }
                } else {
                    log("login: no cookies to set!")
                }
                loggedIn = true;
                      
                resolve();
            } else {
                log("login: rejected")
                  loggedIn = false;
                reject("respl = null");
            }
        });
      }
      
      
      
      on({id: wifiDPs, ack: false, change: "ne"}, function (obj) { 
       var value = obj.state.val;
       var dp2 = obj.name
       setWifi(value, wifis[dp2]);
      // dlog(wifis[dp2])
       //if (firstTime<wifiLength+1) firstTime++;
                
      });
      
      
      function getStatus(wifi) {
          // mylog("BIN IN STATUS");
        return new Promise(async (resolve, reject) => {
        //    dlog("nur mal so");
            if (!loggedIn) await login().catch((e) => reject(e));
            let resp = await request.get({
                url: unifi_controller + "/api/s/"+siteName+"/rest/wlanconf/" + wifi.id,
                headers: { Cookie: cookies.join("; ") }
            }).catch((e) => { dlog("getStatus reject " + e); /*reject(e)*/ return testerrws=true; });
          if (!testerrws) {
          //  dlog("got response " + JSON.stringify(resp));
            resp = JSON.parse(resp);
      
            let wlanOn = resp.data[0].enabled;
          //  dlog("WLAN " + wifi.name + " ist: " + (wlanOn ? "an" : "aus"));
      
            if (resp != null && resp.meta && resp.meta.rc == "ok") {
                dlog("Status erfolgreich geholt!");
                dlog(resp);
                let wlanOn = resp.data[0].enabled;
                dlog("WLAN ist: " + (wlanOn ? "an" : "aus"));
                setStateDelayed(dpPrefix + "WLANSchalten." + wifi.name, wlanOn, 200);
             
                resolve(wlanOn);
            } else {
                log("nicht ok... getStatusWifi")
                reject(JSON.stringify(resp));
            }
            } else {dlog("reject weil respslogin ist 00"); dlog("BIN raus aus LOGOUT"); reject();}
           // mylog("BIN aus STATUS raus");
        });
         
      }
      
      function dlog(message) {
        if(debug)
            console.log(message);
      }
      
      
       for(let wifi_name in wifis) {
         //    if ( firstTime == 3 && getState(dpPrefix + "WLANUnifi."+wifi_name).val !== null ) firstTime = 3;
              getStatus(wifis[wifi_name])}   
      
      
      

      A 1 Reply Last reply Reply Quote 1
      • A
        aleks-83 @liv-in-sky last edited by

        @liv-in-sky Hey cool. Danke.
        Werde ich mal ausprobieren und mich melden.

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

          @aleks-83 du weißt ja, dass das umschalten eines wlans den ganzen accesspoint neustartet - daher etwas warten bis sich das netzwerk dann zeigt

          A 1 Reply Last reply Reply Quote 1
          • A
            aleks-83 @liv-in-sky last edited by aleks-83

            @liv-in-sky
            Der ganze AP startet neu? Auch wenn ich ein Gast WLAN schalte?
            Und wenn die SSID auf 2 APs läuft starten beide automatisch neu?
            Warum ist das so?

            Das dauert doch dann jedes mal ne Minute oder mehr!?

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

              @aleks-83 sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

              Warum ist das so?

              gute Frage, stelle die mal bei Unifi....Ist leider so.

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

                @aleks-83 ja ist wie weihnachten - bei umschalten des wlan's blinken alle sonoffs im haus, weil sie ihre verbindung verlieren

                1 Reply Last reply Reply Quote 0
                • A
                  aleks-83 last edited by

                  😁 Stimmt

                  Ist für mich aber Grund genug, das Ganze nicht zu nutzen.
                  Ich wollte eigentlich nur das Gäste WLAN damit umschalten.
                  Für den Spaß ist es mir das nicht wert.

                  Dass man das auch nicht mal in der UniFi App gescheit machen kann...
                  Man muss in jeden einzelnen AP rein gehen und die WLAN SSID de-/aktivieren.

                  Danke trotzdem.

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

                    @aleks-83 dann evtl über die fritzbox - nur für gäste - ist zwar nicht so toll (z.b. kein voucher), wenn man schon unifi hat, aber sollte ohne probleme integrierbar sein

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

                      @liv-in-sky Das WLAN an der Fritte habe ich komplett deaktiviert weil sie sowieso im HWR steht wo kein Signal rein oder raus geht...

                      Vouchers nutze ich nicht. Bin kein Hotelier 😬

                      Nutzt ihr Vouchers für eure Freunde und Verwandte?

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

                        @aleks-83 ich nicht - aber ein paar leute haben das integriert

                        1 Reply Last reply Reply Quote 0
                        • M
                          martinschm last edited by

                          Hi,

                          seit ein paar Tagen ist bei mir die Anwesenheitserkennung sehr "flatterhaft".
                          Sowohl bei meinem Honor 8 (das hat immer schonmal mucken gemacht) aber auch dem S8 meiner Frau wird mir häufig wechselnde Anwesenheit/Abwesenheit signalisiert.

                          Kann es an der neuen Firmware von den Access Points liegen ?

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

                            @martinschm sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                            Kann es an der neuen Firmware

                            hat sich nix geändert.
                            Welche Firmware, für welche AP´s?
                            einzigste was es bei mir anzeigt, wäre ein Upgrade des USG, hab ich aber noch nicht gemacht, da diese bei mir mit einer anderen Version läuft

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

                              @martinschm habe auch auf update der accesspoints gedrückt - bisher keine auffallenden meldungen bei mir (S9)

                              version 4.0.80.10875

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

                                @liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                                version 4.0.80.10875

                                die läuft bei mir schon Wochenlang

                                @martinschm sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                                häufig wechselnde Anwesenheit/Abwesenheit signalisiert.

                                das hab ich nach wie vor, wenn zwischen 5 und 2,4 Frequenz gewechselt wird
                                möglich wäre z.b. nen Datenpunkt zu erstellen, mit nem kleinen blockly und timeout abstimmen

                                dslraser M 2 Replies Last reply Reply Quote 0
                                • dslraser
                                  dslraser Forum Testing Most Active @crunchip last edited by dslraser

                                  @crunchip sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                                  das hab ich nach wie vor, wenn zwischen 5 und 2,4 Frequenz gewechselt wird

                                  das habe ich bei mir inzwischen so geregelt, das die Geräte in nur ein Netz können.
                                  Also zwei WLAN, eins mit 5 GHz und eins mit 2,4 GHz mit unterschiedlichen Zugangsdaten. Auf den jeweiligen AP kann man ja die gewünschten Frequenzen der Netze aktivieren/deaktivieren.
                                  Ich habe noch einige wenige Geräte die nur 2,4 können (5 Stück)

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

                                    @dslraser wäre eine Möglichkeit,
                                    ich verwende aktuell nur einen AP, hab zwar noch einen zweiten da, ist aber aufgrund der Räumlichkeiten eigentlich nicht nötig.

                                    jedoch habe ich mein Netzwerk unterteilt

                                    • normales Netz
                                    • für IoT
                                    • für NoT
                                      in allen drei 2,4 und 5 GHz aktiv, die ich auch benötige
                                      könnte theoretisch 5 GHz abschalten, jedoch führt das dann zu Verbindungsabbrüchen, da ich zu viele Geräte im Netz habe
                                      ältere Geräte hab ich auch noch im Gebrauch, bekomm ich aber zur Zeit gar nicht zum laufen.
                                      Genauso mein Bush&Jäger Unterputzradio, das will irgendwie nicht laufen
                                    dslraser 1 Reply Last reply Reply Quote 0
                                    • dslraser
                                      dslraser Forum Testing Most Active @crunchip last edited by dslraser

                                      @crunchip
                                      ich habe da am Anfang echt sau viel gefummelt und keine guten Ergebnisse erzielt. Erst, seit dem ich das so mache wie beschrieben, läuft wirklich alles rund und stabil. Auch mit Autokanal hatte ich miese Ergebnisse. Ich habe jetzt nur noch zwei feste Kanäle laufen, 11 für 2,4 und 36 für 5.
                                      Auch die Sendeleistung habe ich zum Teil runter geschraubt. Ich dachte zu Anfang auch das ich alles auf die höchste Leistung stelle, war aber falsch. Das ist dann im Grunde so, als wenn zwei Leute direkt nebeneinander stehen und sich anbrüllen, dann versteht auch keiner mehr was.
                                      Aber es kommt auch immer auf die Örtlichkeiten und die Umgebung an. Ich habe hier noch "Glück", es gibt zwar einige Netze in der Umgebung, aber nicht sooo viele. (Einfamilienhaus/Wohngebiet) Auch da kann es nützlich sein mal zu schauen auf welchen Kanälen die Nachbarn so funken. Unterm Strich ist das aber immer alles recht individuell.

                                      Screenshot_20200322-135625_Chrome.jpg

                                      Screenshot_20200322-135845_Chrome.jpg

                                      Leitung ist 100.000 (kein Glasfaser)

                                      Screenshot_20200322-135759_Chrome.jpg

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

                                        vielen dank an euch beide: @dslraser und @crunchip

                                        ich kann da eigentlich nicht wirklich was dazu beitragen

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

                                          @liv-in-sky alles gut, war nur Smalltalk zwischendurch☺

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

                                            @crunchip emfand das nich als smalltalk - sondern wichtige hinweise, wie man das stabil hinbekommt

                                            crunchip 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            726
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring
                                            46
                                            1358
                                            328666
                                            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