Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Über Datenpunkte iterieren und Inhalte auswerten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    925

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] Über Datenpunkte iterieren und Inhalte auswerten

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
4 Beiträge 2 Kommentatoren 418 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • HiltexH Offline
    HiltexH Offline
    Hiltex
    schrieb am zuletzt editiert von Hiltex
    #1

    Hi zusammen,

    für ein neues Feature in meiner Heimautomation möchte ich mehrere Datenpunkte auswerten, weiß jedoch nicht, wie ich diese im Script greifen kann.
    Der Aufbau sieht so aus:

    unifi.0.default.clients.<mac_1>.essid
    unifi.0.default.clients.<mac_1>.last_seen
    unifi.0.default.clients.<mac_2>.essid
    unifi.0.default.clients.<mac_2>.last_seen
    ...
    unifi.0.default.clients.<mac_n>.essid
    unifi.0.default.clients.<mac_n>.last_seen

    Bildschirmfoto 2020-08-21 um 17.51.18.png

    Die Anzahl der Einträge ist unbekannt und kann sich jederzeit ändern. Jeder Eintrag besitzt jedoch immer die gleichen Datenpunkte.

    Hintergrund der Frage:
    Ich möchte gerne wissen, wieviele Teilnehmer sich aktuell im Gäste-WLAN befinden um in der Automation entsprechend darauf reagieren zu können. Die vorhandenen Datenpunkte reichen dafür leider nicht aus.

    Kann mir jemand auf die Sprünge helfen, die MAC-Adressen zu greifen und die darunter liegenden Datenpunkte für eine Auswertung heranzuziehen?

    Vielen Dank schonmal.

    Blog: indibit.de

    paul53P 1 Antwort Letzte Antwort
    0
    • HiltexH Hiltex

      Hi zusammen,

      für ein neues Feature in meiner Heimautomation möchte ich mehrere Datenpunkte auswerten, weiß jedoch nicht, wie ich diese im Script greifen kann.
      Der Aufbau sieht so aus:

      unifi.0.default.clients.<mac_1>.essid
      unifi.0.default.clients.<mac_1>.last_seen
      unifi.0.default.clients.<mac_2>.essid
      unifi.0.default.clients.<mac_2>.last_seen
      ...
      unifi.0.default.clients.<mac_n>.essid
      unifi.0.default.clients.<mac_n>.last_seen

      Bildschirmfoto 2020-08-21 um 17.51.18.png

      Die Anzahl der Einträge ist unbekannt und kann sich jederzeit ändern. Jeder Eintrag besitzt jedoch immer die gleichen Datenpunkte.

      Hintergrund der Frage:
      Ich möchte gerne wissen, wieviele Teilnehmer sich aktuell im Gäste-WLAN befinden um in der Automation entsprechend darauf reagieren zu können. Die vorhandenen Datenpunkte reichen dafür leider nicht aus.

      Kann mir jemand auf die Sprünge helfen, die MAC-Adressen zu greifen und die darunter liegenden Datenpunkte für eine Auswertung heranzuziehen?

      Vielen Dank schonmal.

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @Hiltex sagte:

      Die Anzahl der Einträge ist unbekannt und kann sich jederzeit ändern.

      Dann müssen zyklisch per $Selector die IDs ermittelt werden.

      schedule('* * * * *', function() {
         let ids = $('unifi.0.default.clients.*.essid');
         log('Anzahl Verbindungen: ' + ids.length);
         ids.each(function(id, i) {
            log('essid: ' + getState(id).val);
            log('MAC: ' + id.split('.')[4]);
         });
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      HiltexH 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Hiltex sagte:

        Die Anzahl der Einträge ist unbekannt und kann sich jederzeit ändern.

        Dann müssen zyklisch per $Selector die IDs ermittelt werden.

        schedule('* * * * *', function() {
           let ids = $('unifi.0.default.clients.*.essid');
           log('Anzahl Verbindungen: ' + ids.length);
           ids.each(function(id, i) {
              log('essid: ' + getState(id).val);
              log('MAC: ' + id.split('.')[4]);
           });
        });
        
        HiltexH Offline
        HiltexH Offline
        Hiltex
        schrieb am zuletzt editiert von
        #3

        @paul53 Besten Dank, das funktioniert wie gewünscht.

        Blog: indibit.de

        HiltexH 1 Antwort Letzte Antwort
        0
        • HiltexH Hiltex

          @paul53 Besten Dank, das funktioniert wie gewünscht.

          HiltexH Offline
          HiltexH Offline
          Hiltex
          schrieb am zuletzt editiert von
          #4

          Falls das noch jemand gebrauchen kann - hier der Code, der ansich funktioniert.
          Muss nur jeder für sich schauen, ob er andere Datenpunkte für die Auswertung heranziehen will, beispielsweise is_online. Da teste ich gerade noch, was besser passt. Im Moment frage ich ab, ob der jeweilige Client zuletzt mit dem Gast-WLAN verbunden war und in den letzten 2 Minuten gesehen wurde...

          In den Adaptereinstellungen kann man das Offset für is_online einstellen. Setzt man diesen Wert auf 0 ist der Wert nach ca. 2 Minuten false, wenn der Client das WLAN verlassen hat.

          Das Prinzip der Abfrage dürfte mit diesem Script klar werden.

          schedule("*/10 * * * * *", function () {
          
              var GuestClients = 0;
          
              //WLAN-Clients holen mit Datenpunkt, der immer vorhanden ist
              let Clients = $('unifi.0.default.clients.*.is_online');
          
              //Clients auswerten
              Clients.each(function(id, i) {
                  
                  //Datenpunkt abschneiden (Client erzeugen)
                  var Client = id.split('.is_online')[0];
          
                  var ClientESSID = Client + '.essid'
                  var ClientLastSeen = Client + '.last_seen_by_uap'
          
                  //Netzwerknamen des Clients abfragen
                  if (existsState(ClientESSID) && getState(ClientESSID).val == 'tremendous-Guest') {
                      
                      //Letzte Online-Zeit abfragen
                      if (existsState(ClientLastSeen)) {
          
                          var TimeLastSeen = getDateObject(getState(ClientLastSeen).val).getTime();
                          var TimeNow = new Date().getTime()
          
                          //Wenn Client in den letzten 2 Minuten gesehen wurde...
                          if (TimeNow - TimeLastSeen < 120000) {
                              ++GuestClients;
                          }
          
                      }
                  }
              });
          
              setState('0_userdata.0.Netzwerk.WLAN.Anzahl_Gäste', GuestClients, true);
              //log('Gäste im WLAN: ' + GuestClients.toString());
          });
          

          Blog: indibit.de

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          792

          Online

          32.6k

          Benutzer

          82.2k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe