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. ZigBee-Geräte überwachen

NEWS

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

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

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

ZigBee-Geräte überwachen

Geplant Angeheftet Gesperrt Verschoben Gelöst ioBroker Allgemein
zigbee cc2531zigbee adapter cc2531
9 Beiträge 3 Kommentatoren 1.6k Aufrufe 7 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.
  • S Offline
    S Offline
    sebastian0010
    schrieb am zuletzt editiert von
    #1

    Hallo liebes Forum,

    ich habe eine Frage: auf welche ich derzeit noch keine Antwort gefunden habe.
    Ich würde sehr gerne alle meine Zigbeegeräte am Zigbeeadapter (via CC2531-Stick) überwachen.
    Ich meine damit, dass ich gerne benachrichtigt werden würde, wenn eines der Geräte über einen längeren Zeitraum nicht erreichbar war.
    Hat dafür jemand eine Lösung?

    Vielen herzlichen Dank im Voraus,
    Liebe Grüße
    Sebastian

    AsgothianA 1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      sebastian0010
      schrieb am zuletzt editiert von sebastian0010
      #9

      Für alle Interessierten:

      Ich konnte mein Problem nun mit folgenden Skriptadaptierungen lösen:

      createState('zigbeestatus.Anzahl_Geräte', 0, {type: 'number'});
      createState('zigbeestatus.offline', 0, {type: 'number'});
      createState('zigbeestatus.Gerät', " ", {type: 'string'});
      
      const zigbee = $('zigbee.0*.link_quality');
      const loggen = true;
      
      var arrOFFLINE;
      
      function offline(id){
          var obj = getObject(id);
          arrOFFLINE.push(obj.common.name);
          if(loggen) log("Gerät: " + obj.common.name);
      }
      
      function countOffline() {
         var moeglicheOFFLINE = 0;
         arrOFFLINE =[];
         zigbee.each(function (id, i){
          
          if(Math.round((new Date() - new Date(getState(id).ts)) / 1000 / 60) > 60) offline(id);
          ++moeglicheOFFLINE;
         });
         
         if(loggen) log("Text: "+arrOFFLINE.join(', '));
         if(loggen) log("Anzahl Geräte: " + moeglicheOFFLINE + " // davon offline: " + arrOFFLINE.length);
         
         setState("zigbeestatus.Gerät",     arrOFFLINE.join(',<br>'));
         setState("zigbeestatus.offline",   arrOFFLINE.length);
         setState("zigbeestatus.Anzahl_Geräte", moeglicheOFFLINE);
      
      }
      
      countOffline();
      

      Es werden nun die Geräte gezählt, bei denen der link_quality-Timestamp älter ist als 60 Minuten.

      LG Sebastian

      1 Antwort Letzte Antwort
      3
      • S sebastian0010

        Hallo liebes Forum,

        ich habe eine Frage: auf welche ich derzeit noch keine Antwort gefunden habe.
        Ich würde sehr gerne alle meine Zigbeegeräte am Zigbeeadapter (via CC2531-Stick) überwachen.
        Ich meine damit, dass ich gerne benachrichtigt werden würde, wenn eines der Geräte über einen längeren Zeitraum nicht erreichbar war.
        Hat dafür jemand eine Lösung?

        Vielen herzlichen Dank im Voraus,
        Liebe Grüße
        Sebastian

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von Asgothian
        #2

        @sebastian0010
        Es gibt dafür zwei einfache Möglichkeiten:

        • alle Objekte die „Router“ funktionalität haben besitzen einen datenpunkt „alive“ oder ähnlich (bin nicht zu Hause, kann nicht schauen)
        • bei allen anderen Objekten kannst du den Zeitstempel der link-quality überwachen. Diese wird immer dann aktualisiert wenn mit dem Gerät kommuniziert wird,

        A.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          sebastian0010
          schrieb am zuletzt editiert von
          #3

          Vielen Dank für die rasche Antwort!
          Das mit den Routern funktioniert schon perfekt!
          Kannst du mir auch sagen, wo ich den Zeitstempel bei den andren Geräten bei lik-quality abrufen kann? Habe den Expertenmodus in den Objekten aktiv, kann diesbezüglich aber keine Infos anzeigen.

          Liebe Grüße
          Sebastian

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            sebastian0010
            schrieb am zuletzt editiert von
            #4

            Bzw. hat jemand von euch schon ein Skript, dass alle Datenpunkte link_quality unter Objekte ausliest und nach beliebiger Zeit alarmiert, wenn ein Datenpunkt nicht mehr geändert wurde?

            LG
            Sebastian

            1 Antwort Letzte Antwort
            0
            • MicM Offline
              MicM Offline
              Mic
              Developer
              schrieb am zuletzt editiert von
              #5

              Hi Sebastian,
              beschäftigte dich mit JavaScript :-)
              Geht ganz einfach.

              Hier ein Beispiel, brauchst nur deinen Datenpunkt in der ersten Zeile eintragen:

              const STATE_PATH = 'zigbee.0.xxxxxxxx.link_quality';
              
              
              const DIFFERENCE_MIN = 60; // Mindest-Zeit in Minuten, die das Gerät nicht mehr erreichbar war.
              
              
              let stateDt = new Date(getState(STATE_PATH).ts);    // Zeitstempel in Datums-Objekt umgewandelt
              log ('Letzte Änderung Datum/Uhrzeit:' + stateDt); // Log-Ausgabe
              log ('Letzte Änderung war vor ' + Math.round((new Date() - stateDt) / 1000 / 60) + ' Minuten.')
              
              
              if ( dateAddMinutes(stateDt, DIFFERENCE_MIN) < new Date() ) {
                  log ('Letzte Änderung war vor länger als ' + DIFFERENCE_MIN + ' Minuten.')
                  // Hier kannst du reagieren, da letzte Änderung länger als gewünschte Anzahl Minuten her war.
              } else {
                  log ('Letzte Änderung war vor weniger als ' + DIFFERENCE_MIN + ' Minuten.')
              }
              
              
              
              
              /**
               * Add certain number of minutes to a given date/time.
               * @param {object}    dateInp      Date created with "new Date()". If you want the current date, use "new Date()"
               * @param {number}    minutesInp   Number of minutes to be added to the given date.
               * @return {object}   New date with the minutes added
               */
              function dateAddMinutes(dateInp, minutesInp) {
                  return new Date(dateInp.getTime() + (minutesInp * 60000));
              }
              
              
              
              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                sebastian0010
                schrieb am zuletzt editiert von
                #6

                Vielen Dank euch beiden für die Infos!
                Das mit dem Skript funktioniert schon wunderbar. Bei Javascript bin ich leider noch blutiger Anfänger.
                Werde versuchen mir übers Wochenende ein Skript zu basteln, womit ich alle Zigbeegeräte automatisiert auslese und mir eine Info pushen lasse, falls - und wenn ja, welches - ein Gerät längere Zeit nicht reagiert hat. Mal schauen ob das klappt. :blush:

                Schönes Wochenende und Liebe Grüße!

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  sebastian0010
                  schrieb am zuletzt editiert von
                  #7

                  Liebe Leute,

                  habe jetzt folgendes Skript anhand eines Batterieskriptes, welches ich vor längerer Zeit online gefunden habe versucht zu adaptieren, um den Timestamp auszulesen.
                  Es soll die Anzahl an Geräten die offline sind (Deshalb 3600000 als ms für 60min), sowie der Name der entsprechenden Geräte angezeigt werden - alle Zigbeegeräte durchgehen.
                  Prinzipiell werden mir hier zwar Geräte ausgespuckt, aber die Definition mit 3600000 passt anscheinend leider noch nicht genau.
                  Hat hier jemand Lösungsvorschläge?

                  createState('zigbeestatus.Anzahl_Geräte', 0, {type: 'number'});
                  createState('zigbeestatus.offline', 0, {type: 'number'});
                  createState('zigbeestatus.Gerät', " ", {type: 'string'});
                  
                  const zigbee = $('zigbee.0*.link_quality');
                  const loggen = true;
                  
                  var arrOFFLINE;
                  
                  function offline(id){
                      var obj = getObject(id);
                      arrOFFLINE.push(obj.common.name);
                      if(loggen) log("Gerät: " + obj.common.name);
                  }
                  
                  function countOffline() {
                     var moeglicheOFFLINE = 0;
                     arrOFFLINE =[];
                     zigbee.each(function (id, i){
                      if(getState(id).ts > 3600000) offline(id);
                      ++moeglicheOFFLINE;
                     });
                     
                     if(loggen) log("Text: "+arrOFFLINE.join(', '));
                     if(loggen) log("Anzahl Geräte: " + moeglicheOFFLINE + " // davon offline: " + arrOFFLINE.length);
                     
                     setState("zigbeestatus.Gerät",     arrOFFLINE.join(',<br>'));
                     setState("zigbeestatus.offline",   arrOFFLINE.length);
                     setState("zigbeestatus.Anzahl_Geräte", moeglicheOFFLINE);
                  
                  }
                  
                  countOffline();
                  

                  Vielen Dank euch gleich im Voraus,
                  Liebe Grüße
                  Sebastian

                  1 Antwort Letzte Antwort
                  0
                  • S Offline
                    S Offline
                    sebastian0010
                    schrieb am zuletzt editiert von
                    #8

                    Habe heute noch mit

                    var time = getState('zigbee.0.xxxxxxxxxxx.link_quality').ts;
                    

                    den Wert von ts geloggt, wobei dann Werte um 1600000000000 (also etwa 50 Jahre) angezeigt werden. Lt. Manual sollte es doch in ms ausgegeben werden (seit jetzt nehme ich mal an)? Mit dem tatsächlichen Datumswert stimmt der angegebene Wert in ms jedoch leider gar nicht ein.
                    Kann mir hier jemand helfen?

                    Dank gleich mal,
                    Liebe Grüße
                    Sebastian

                    1 Antwort Letzte Antwort
                    0
                    • S Offline
                      S Offline
                      sebastian0010
                      schrieb am zuletzt editiert von sebastian0010
                      #9

                      Für alle Interessierten:

                      Ich konnte mein Problem nun mit folgenden Skriptadaptierungen lösen:

                      createState('zigbeestatus.Anzahl_Geräte', 0, {type: 'number'});
                      createState('zigbeestatus.offline', 0, {type: 'number'});
                      createState('zigbeestatus.Gerät', " ", {type: 'string'});
                      
                      const zigbee = $('zigbee.0*.link_quality');
                      const loggen = true;
                      
                      var arrOFFLINE;
                      
                      function offline(id){
                          var obj = getObject(id);
                          arrOFFLINE.push(obj.common.name);
                          if(loggen) log("Gerät: " + obj.common.name);
                      }
                      
                      function countOffline() {
                         var moeglicheOFFLINE = 0;
                         arrOFFLINE =[];
                         zigbee.each(function (id, i){
                          
                          if(Math.round((new Date() - new Date(getState(id).ts)) / 1000 / 60) > 60) offline(id);
                          ++moeglicheOFFLINE;
                         });
                         
                         if(loggen) log("Text: "+arrOFFLINE.join(', '));
                         if(loggen) log("Anzahl Geräte: " + moeglicheOFFLINE + " // davon offline: " + arrOFFLINE.length);
                         
                         setState("zigbeestatus.Gerät",     arrOFFLINE.join(',<br>'));
                         setState("zigbeestatus.offline",   arrOFFLINE.length);
                         setState("zigbeestatus.Anzahl_Geräte", moeglicheOFFLINE);
                      
                      }
                      
                      countOffline();
                      

                      Es werden nun die Geräte gezählt, bei denen der link_quality-Timestamp älter ist als 60 Minuten.

                      LG Sebastian

                      1 Antwort Letzte Antwort
                      3
                      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

                      858

                      Online

                      32.4k

                      Benutzer

                      81.6k

                      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