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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Unifi WLAN Script 2 mit Anwesenheitskontrolle

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

      @liv-in-sky

      Ich hab einen Alias vergeben und nun taucht es auch unter wifi_client_state auf! Vielen Dank

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

        Ich würde gerne wissen wie man unabhängig von diesem Skript ein WLAN ein- und ausschalten kann.
        Kann ich einen Datenpunkt des Adapters schalten? Kann ich eine URL aufrufen?
        Das habe ich im Skript unter SET WIFIS - WIFI EIN-AUSSCHALTEN nicht gefunden.

        Das Skript selbst kann ich leider nicht verwenden da ich einige Datenpunkte brauche (tx_rate, tx_bytes...) die es nur im Adapter gibt.

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            744
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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