Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Zigbee Überwachung letzer empfangener Wert

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    282

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

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

Zigbee Überwachung letzer empfangener Wert

Scheduled Pinned Locked Moved Skripten / Logik
javascriptblockly
9 Posts 6 Posters 1.6k Views 13 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    ChrisXY
    wrote on last edited by
    #1

    Hallo,
    ich suche eine script vorlage JS oder Blockly egal, welche meine Zigbee Geräte Überwacht.
    Ich will einen Wert angeben z.b letzte 12 Stunden keinen Wert geändert = meldung Telegram ..
    Würde dies anhand der Batterie / Signal /wert ausmachen.

    Hat hier jemand schon mal was gemacht worauf ich aufbauen könnte ? Danke

    1 Reply Last reply
    0
    • ZandrialZ Offline
      ZandrialZ Offline
      Zandrial
      wrote on last edited by Zandrial
      #2

      Du kannst auch ein Javascript schreiben:

      (getState("DEINOBJECT.state).lc

      lc ist last changed also zuletzt geändert... einfach mit aktueller Zeit vergleichen, wenn Differenz größer als X -> Telegram

      C 1 Reply Last reply
      0
      • ZandrialZ Zandrial

        Du kannst auch ein Javascript schreiben:

        (getState("DEINOBJECT.state).lc

        lc ist last changed also zuletzt geändert... einfach mit aktueller Zeit vergleichen, wenn Differenz größer als X -> Telegram

        C Offline
        C Offline
        ChrisXY
        wrote on last edited by
        #3

        @Zandrial said in Zigbee Überwachung letzer empfangener Wert:

        Du kannst auch ein Javascript schreiben:

        (getState("DEINOBJECT.state).lc

        lc ist last changed also zuletzt geändert... einfach mit aktueller Zeit vergleichen, wenn Differenz größer als X -> Telegram

        Okay Danke aber in Javascript bin ich leider nicht so fitt.
        Würde das auch per Blockly klappen?

        AsgothianA 1 Reply Last reply
        0
        • C ChrisXY

          @Zandrial said in Zigbee Überwachung letzer empfangener Wert:

          Du kannst auch ein Javascript schreiben:

          (getState("DEINOBJECT.state).lc

          lc ist last changed also zuletzt geändert... einfach mit aktueller Zeit vergleichen, wenn Differenz größer als X -> Telegram

          Okay Danke aber in Javascript bin ich leider nicht so fitt.
          Würde das auch per Blockly klappen?

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          wrote on last edited by
          #4

          @ChrisXY
          Prinzipiell ja, aber du musst dann eine Liste aller zu überwachenden Geräte manuell im Blockly eintragen.

          in JS kannst du das ganze über einen Selektor lösen. Ist einfacher / besser wartbar.

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

          1 Reply Last reply
          0
          • ZandrialZ Offline
            ZandrialZ Offline
            Zandrial
            wrote on last edited by Zandrial
            #5

            @ChrisXY ich hab noch was gefunden im forum:

            https://forum.iobroker.net/topic/25854/zigbee-geräte-überwachen

            EDIT:
            Da ich anscheinend zu viel Zeit habe und ich das auch gebrauchen konnte:

            var zigbees = 0; //zigbees sind unsere zigbee sensoren
            var OFFLINE = []; //das array enthält unsere geräte die offline sind
            
            
            $('channel[id=^zigbee.0.*]').each(function(id, i) { //der selector holt erstmal alles was unter zigbee.0. steht
                if(id.endsWith("link_quality")){ //wenn es link_quality kanal ist haben wir nen sensor
                    ++zigbees; //sensoren hochzählen
                    if(Math.round((new Date() - new Date(getState(id).ts)) / 1000 / 60) > 60){ //wenn über ne minute nicht gemeldet ist er offline
                        var offLineOBJ = getObject(id.split(".").slice(0,-1).join(".")).common.name; //wir splitten den string um unser object zu erhalten
                        OFFLINE.push(offLineOBJ); //Objektname ins OFFLINE-Array schieben
                    }
                }
            });
            
            log("Es sind " + OFFLINE.length + " von " + zigbees + " Geräte Offline:"); //Ausgabe
            OFFLINE.forEach(element => log("-" +element)); //Geräte aus Offline-Array ausgeben
            

            Ausgabe ist dann so:
            18:55:26.531 info javascript.0 (1319) script.js.ZigbeeTest: Es sind 2 von 3 Geräte Offline:
            18:55:26.531 info javascript.0 (1319) script.js.ZigbeeTest: -Vibrationssensor Briefkasten
            18:55:26.531 info javascript.0 (1319) script.js.ZigbeeTest: -Fenstersensor Bad

            1 Reply Last reply
            0
            • C Offline
              C Offline
              ChrisXY
              wrote on last edited by ChrisXY
              #6

              Super das geht :) Danke
              Das aus dem Post geht bei mir leider nicht .. steht anzahl Geräte 0 ..
              Deins klappt. Wie bekomm ich das den gespeichert in einem Wert?
              Im Log gibt er es aus.

              Edit: Hab bei dem Script aus dem anderen Post nur ein . hinzugefügt dann geht es auch...
              aus const zigbee = $('zigbee.0*.link_quality');
              habe ich:
              const zigbee = $('zigbee.0.*.link_quality');
              gemacht

              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();
              
              
              1 Reply Last reply
              0
              • T Offline
                T Offline
                toki1973
                wrote on last edited by
                #7

                Tolle Sache! Und wie bekomme ich das Ergebnis von Java in Telegram?

                NUC, PROXMOX, Grafana, Influx, Unify

                1 Reply Last reply
                0
                • chucky666C Offline
                  chucky666C Offline
                  chucky666
                  wrote on last edited by
                  #8

                  gibt es sowas für den Deconz Adapter auch ?

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    charakterkopf
                    wrote on last edited by charakterkopf
                    #9

                    Hi,
                    hatte so ein Skript vor einiger Zeit schon gepostet. Telegram meldung müsste ja einfach sein:

                    // setState("telegram.0.communicate.response", "Info: Gerät nicht erreicht");

                    mal auskomentieren.

                    Vielleicht Hilfts - Gruß Martin

                    @charakterkopf said in [Aufruf] Welche guten JavaScripts setzt ihr ein?:

                    Die Idee ist super. Es fehlt wirklich eine Script Bibliothek.

                    Hier ein Script um Datenpunkte von z.B. Funksensoren auf Lebendigkeit zu testen. Meine Zigbee Sensoren schmierten früher immer gerne ab und ich habe es nie erkannt.

                    //Das Script überprüft regelmässig die Datenpunkte auf Aktualisierung
                    
                    //Angabe des Datenpunkts= Datenpunkt der Überwacht werden soll
                    //StateBezeichnung= Unter pfad_javascript.StateBezeichung wird ein State angelegt; True = Daten sind aktuell / False = Daten veraltet
                    //Zeit in Sekunden = Zeit die vergangen sein darf seit der letzen Aktualisierung des Datenpunkts  (0 = default Zeit wird genommen).
                    
                    schedule("*/3 * * * *" , function () {                                  
                    
                        // Angabe des Datenpunkts;StateBezeichnung;Zeit in Sekunden
                        var ueberwachung = ['fritzdect.0.Comet_119610277592.temp;Heizung;400', 
                                            'mqtt.0.zigbee2mqtt.Kuehlschrank;Temp_Kuehlschrank;7000',
                                            'mqtt.0.zigbee2mqtt.gefrierfach;Temp_Gefrierschrank;7000',
                                            'mqtt.0.zigbee2mqtt.TemperaturBad;Bad_Feuchtigkeit;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_1;Fenster_1;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_2;Fenster_2;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_3;Fenster_3;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_4;Fenster_4;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_5;Fenster_5;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_6;Fenster_6;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_7;Fenster_7;7000',
                                            'mqtt.0.zigbee2mqtt.Fenster_8;Fenster_8;7000'];
                    
                    
                        var default_zeit = 240;
                        var pfad_javascript ='javascript.0.watchdog.';   // Beispiel: 'javascript.0.watchdog.'  !Punkt nicht vergessen am Ende!
                    
                    
                        //------------------------------------------------------------------
                        //Ab hier nichts mehr Ändern
                        //------------------------------------------------------------------
                        var zeit= Math.floor(Date.now() / 1000);
                        var differenz, lchange;
                        var daten, tchange;
                    
                        ueberwachung.forEach(function(item, index, array) 
                        {
                            // Array Splitten
                               daten = item.split(";");
                    
                            //Datenpunkt erstellen wenn nicht vorhanden
                                createState(pfad_javascript + daten[1], { read: true, write: false, name: "Watchdog " + daten[1], type: "boolean", role: " ", def: "false"});
                    
                            //Differenz Zeit default oder manuell?
                                differenz = parseInt(daten[2]);
                                if (differenz == 0) differenz=default_zeit;
                    
                            //Zeitstempel abfragen in Sekunden
                                tchange=parseInt(getState(daten[0]).ts / 1000);
                                
                            //Vergleichen der Zeitstempel
                                    if ((zeit-tchange)>differenz)
                                    {
                                        setState(pfad_javascript + daten[1], false);
                                        //console.log(daten[1] + "  ist älter als " + differenz + " Sekunden");
                                  //Telegramm
                                       // setState("telegram.0.communicate.response", "Info: Gerät nicht erreicht");
                                      // setState("telegram.0.communicate.response", daten[1]);
                                    }
                                    else
                                    {
                                        setState(pfad_javascript + daten[1], true);
                                        //console.log(daten[1] + "  ist jünger als " + differenz + " Sekunden");
                                    } 
                     
                        });  
                    });
                    
                    
                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    548

                    Online

                    32.7k

                    Users

                    82.5k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe