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. ioBroker Allgemein
  4. Unifi Script

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Unifi Script

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
10 Beiträge 5 Kommentatoren 507 Aufrufe 5 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.
  • R Online
    R Online
    Reese1
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    nutzt hier eventuell jemand ein aktuelles script für den unifi adapter 0.70 und javascript 9.0.11 um die geräte in vis 1 anzeigen zu lassen? der unifi adapter läuft problemlos und die geräte werden im adapter unter unifi.0.default.clients angezeigt, hab schon zig Versionen was man so findet ausprobiert, leider lief keine da diese schon älter sind und mit javascript 9.0.11 scheinbar nicht laufen,

    CodierknechtC ilovegymI 2 Antworten Letzte Antwort
    0
    • R Reese1

      Hallo zusammen,

      nutzt hier eventuell jemand ein aktuelles script für den unifi adapter 0.70 und javascript 9.0.11 um die geräte in vis 1 anzeigen zu lassen? der unifi adapter läuft problemlos und die geräte werden im adapter unter unifi.0.default.clients angezeigt, hab schon zig Versionen was man so findet ausprobiert, leider lief keine da diese schon älter sind und mit javascript 9.0.11 scheinbar nicht laufen,

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @reese1

      Hilft das hier?

      const devices = $('unifi.0.default.clients.*.is_online').toArray();
      const jsonId = '0_userdata.0.Monitoring.Unifi.Devices';
       
      function checkOnline() {
          let list = [];
          devices.forEach(function (id) {
              let deviceName = getState(id.replace('.is_online', '.name')).val;
              if (!deviceName) deviceName = getState(id.replace('.is_online', '.hostname')).val;
              const idIP = id.replace('.is_online', '.ip');
              const idLastSeen = id.replace('.is_online', '.last_seen_by_uap');
              const idMac = id.replace('.is_online', '.mac');
              let obj = {
                  "Name": deviceName,
                  "IP": getState(idIP).val,
                  "Online": getState(id).val,
                  "Aktiv": getState(idLastSeen).val,
                  "MAC": existsState(idMac) ?  getState(idMac).val : ''
              };    
              list.push(obj);
          });
          setState(jsonId, JSON.stringify(list), true);
      }
       
      on({id: devices, change: "ne"}, function(obj) {
          checkOnline();
      });
      
      checkOnline();
      

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      R 1 Antwort Letzte Antwort
      0
      • R Reese1

        Hallo zusammen,

        nutzt hier eventuell jemand ein aktuelles script für den unifi adapter 0.70 und javascript 9.0.11 um die geräte in vis 1 anzeigen zu lassen? der unifi adapter läuft problemlos und die geräte werden im adapter unter unifi.0.default.clients angezeigt, hab schon zig Versionen was man so findet ausprobiert, leider lief keine da diese schon älter sind und mit javascript 9.0.11 scheinbar nicht laufen,

        ilovegymI Online
        ilovegymI Online
        ilovegym
        schrieb am zuletzt editiert von
        #3

        @reese1

        Naja der javascript 9.x ist ja noch beta und da warte ich lieber auf das release und das changelog und docu, bevor ich meine scripte ändere..

        1 Antwort Letzte Antwort
        0
        • CodierknechtC Codierknecht

          @reese1

          Hilft das hier?

          const devices = $('unifi.0.default.clients.*.is_online').toArray();
          const jsonId = '0_userdata.0.Monitoring.Unifi.Devices';
           
          function checkOnline() {
              let list = [];
              devices.forEach(function (id) {
                  let deviceName = getState(id.replace('.is_online', '.name')).val;
                  if (!deviceName) deviceName = getState(id.replace('.is_online', '.hostname')).val;
                  const idIP = id.replace('.is_online', '.ip');
                  const idLastSeen = id.replace('.is_online', '.last_seen_by_uap');
                  const idMac = id.replace('.is_online', '.mac');
                  let obj = {
                      "Name": deviceName,
                      "IP": getState(idIP).val,
                      "Online": getState(id).val,
                      "Aktiv": getState(idLastSeen).val,
                      "MAC": existsState(idMac) ?  getState(idMac).val : ''
                  };    
                  list.push(obj);
              });
              setState(jsonId, JSON.stringify(list), true);
          }
           
          on({id: devices, change: "ne"}, function(obj) {
              checkOnline();
          });
          
          checkOnline();
          
          R Online
          R Online
          Reese1
          schrieb am zuletzt editiert von
          #4

          @codierknecht
          danke aber sollte nicht unter 0_userdata.0. ein Ordner angelegt werden wo die entsprechenden geräte drinnen sind, zumindest finde ich diesen nicht

          CodierknechtC 1 Antwort Letzte Antwort
          0
          • R Reese1

            @codierknecht
            danke aber sollte nicht unter 0_userdata.0. ein Ordner angelegt werden wo die entsprechenden geräte drinnen sind, zumindest finde ich diesen nicht

            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @reese1 sagte in Unifi Script:

            sollte nicht unter 0_userdata.0. ein Ordner angelegt werden

            Alles unter 0_userdata.0 legst Du selbst an. Ich habe dort einen DP 0_userdata.0.Monitoring.Unifi.Devices der das JSON bekommt. Das wertet bei mir dann Grafana aus.

            Das soll kein fertiges Script sein, sondern als Anregung verstanden werden. Anpassungen auf die eigenen Wünsche sind dort mit Sicherheit noch notwendig.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            R 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @reese1 sagte in Unifi Script:

              sollte nicht unter 0_userdata.0. ein Ordner angelegt werden

              Alles unter 0_userdata.0 legst Du selbst an. Ich habe dort einen DP 0_userdata.0.Monitoring.Unifi.Devices der das JSON bekommt. Das wertet bei mir dann Grafana aus.

              Das soll kein fertiges Script sein, sondern als Anregung verstanden werden. Anpassungen auf die eigenen Wünsche sind dort mit Sicherheit noch notwendig.

              R Online
              R Online
              Reese1
              schrieb am zuletzt editiert von Reese1
              #6

              @codierknecht

              danke dir, hab es hinbekommen, anzeige in vis geht auch :+1: :+1:

              M 1 Antwort Letzte Antwort
              0
              • R Reese1

                @codierknecht

                danke dir, hab es hinbekommen, anzeige in vis geht auch :+1: :+1:

                M Offline
                M Offline
                MarkusL
                schrieb am zuletzt editiert von
                #7

                @reese1 hallo zusammen, könntet Ihr mir bitte das genauer erklären? Der Adapter holt die DPs, das Script erstellt ein JSON ein nd das wiederum schickt Ihr an Grafana? Benutzt Ihr dort ein fertiges Dashboard ? Sorry, bin verwirrt… danke!

                R 1 Antwort Letzte Antwort
                0
                • M MarkusL

                  @reese1 hallo zusammen, könntet Ihr mir bitte das genauer erklären? Der Adapter holt die DPs, das Script erstellt ein JSON ein nd das wiederum schickt Ihr an Grafana? Benutzt Ihr dort ein fertiges Dashboard ? Sorry, bin verwirrt… danke!

                  R Online
                  R Online
                  Reese1
                  schrieb am zuletzt editiert von
                  #8

                  @markusl

                  genau, der unifi adapter holt sich die Datenpunkte vom Cloud Gateway zb., dass script erstellt ein json in einem von dir erstellten Ordner, diese Daten kannst du dann zb. in vis mit einem table widget oder einem html widget anzeigen lassen, zu grafana kann ich nichts sagen, dass nutze ich nicht,

                  NegaleinN 1 Antwort Letzte Antwort
                  0
                  • R Reese1

                    @markusl

                    genau, der unifi adapter holt sich die Datenpunkte vom Cloud Gateway zb., dass script erstellt ein json in einem von dir erstellten Ordner, diese Daten kannst du dann zb. in vis mit einem table widget oder einem html widget anzeigen lassen, zu grafana kann ich nichts sagen, dass nutze ich nicht,

                    NegaleinN Offline
                    NegaleinN Offline
                    Negalein
                    Global Moderator
                    schrieb am zuletzt editiert von
                    #9

                    @reese1

                    kannst du dein fertiges Script hier zeigen?

                    ° Node.js: 20.17.0 NPM: 10.8.2
                    ° Proxmox, Ubuntu 22.04.3 LTS
                    ° Fixer ---> iob fix

                    R 1 Antwort Letzte Antwort
                    0
                    • NegaleinN Negalein

                      @reese1

                      kannst du dein fertiges Script hier zeigen?

                      R Online
                      R Online
                      Reese1
                      schrieb am zuletzt editiert von Reese1
                      #10

                      klar, hier dass script dafür,

                      const jsonSource = '0_userdata.0.Monitoring.Unifi.Devices';
                      const jsonPathPrefix = '0_userdata.0.Monitoring.Unifi.DeviceList.';
                      
                      function updateDeviceList() {
                          const raw = getState(jsonSource).val;
                          if (!raw) return;
                      
                          let list;
                          try {
                              list = JSON.parse(raw);
                          } catch (e) {
                              log('Fehler beim Parsen des JSONs: ' + e, 'error');
                              return;
                          }
                      
                          list.forEach((device, index) => {
                              const base = jsonPathPrefix + index + '.';
                              setState(base + 'Name', device.Name || '', true);
                              setState(base + 'IP', device.IP || '', true);
                              setState(base + 'Online', device.Online || false, true);
                              setState(base + 'Aktiv', device.Aktiv || '', true);
                              setState(base + 'MAC', device.MAC || '', true);
                          });
                      }
                      
                      on({id: jsonSource, change: 'ne'}, updateDeviceList);
                      updateDeviceList();
                      
                      

                      und hier dass script zum erstellen des entsprechenden Ordner in objekte/0_userdata

                      // === KONFIGURATION ===
                      const jsonId = '0_userdata.0.Monitoring.Unifi.Devices';
                      const deviceSelector = $('unifi.0.default.clients.*.is_online');
                      
                      // === Datenpunkt erstellen, falls nicht vorhanden ===
                      if (!existsState(jsonId)) {
                          createState(jsonId, {
                              type: 'string',
                              name: 'UniFi Geräteübersicht',
                              read: true,
                              write: true,
                              def: '',
                              role: 'json'
                          }, () => {
                              log('Datenpunkt erstellt: ' + jsonId);
                              checkOnline(); // Direkt nach Erstellung ausführen
                          });
                      } else {
                          checkOnline(); // Falls vorhanden, direkt starten
                      }
                      
                      // === Hauptfunktion: Geräte einsammeln und JSON schreiben ===
                      function checkOnline() {
                          const devices = deviceSelector.toArray();  // Alle .is_online States
                          let list = [];
                      
                          devices.forEach(function (id) {
                              const idBase = id.replace('.is_online', '');
                              const name = getState(idBase + '.name')?.val || getState(idBase + '.hostname')?.val || 'Unbekannt';
                              const ip = getState(idBase + '.ip')?.val || '';
                              const mac = existsState(idBase + '.mac') ? getState(idBase + '.mac').val : '';
                              const lastSeen = getState(idBase + '.last_seen_by_uap')?.val || null;
                              const online = getState(id)?.val || false;
                      
                              list.push({
                                  "Name": name,
                                  "IP": ip,
                                  "Online": online,
                                  "Aktiv": lastSeen,
                                  "MAC": mac
                              });
                          });
                      
                          // JSON schreiben
                          setState(jsonId, JSON.stringify(list), true);
                          log('UniFi Geräte-JSON aktualisiert. Anzahl Geräte: ' + list.length, 'info');
                      }
                      
                      // === Trigger: Bei jeder Änderung eines is_online-Werts neu berechnen ===
                      on({ id: deviceSelector, change: "ne" }, function (obj) {
                          checkOnline();
                      });
                      
                      

                      so läut es momenten bei mir mit einem table widget in vis 1, ist zwar noch nicht perfekt aber es zeigt schon mal alles an,

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


                      Support us

                      ioBroker
                      Community Adapters
                      Donate
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      619

                      Online

                      32.4k

                      Benutzer

                      81.5k

                      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