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. Blockly
  5. Watchdog für Alter der Datenpunkte

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Watchdog für Alter der Datenpunkte

Scheduled Pinned Locked Moved Blockly
blocklymonitoring
30 Posts 4 Posters 2.8k Views 3 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.
  • T ticaki

    @paul53

    Hast auch

    function(msg)
    

    Geändert?

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by paul53
    #21

    @ticaki sagte: function(msg)

    Damit funktioniert es. Ist aber keine Option für Blockly?

    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

    T sts85S 2 Replies Last reply
    0
    • paul53P paul53

      @ticaki sagte: function(msg)

      Damit funktioniert es. Ist aber keine Option für Blockly?

      T Do not disturb
      T Do not disturb
      ticaki
      wrote on last edited by
      #22

      @paul53
      Statt der Intervall reference die Nachricht im Array speichern mit nur einem Intervall der das Array überprüft und die Nachricht verschickt?

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      sts85S 1 Reply Last reply
      0
      • paul53P paul53

        @ticaki sagte: function(msg)

        Damit funktioniert es. Ist aber keine Option für Blockly?

        sts85S Offline
        sts85S Offline
        sts85
        wrote on last edited by
        #23

        @paul53 @ticaki

        Danke euch.
        So schnell kommt man an die Grenzen von Blockly - ich dachte nur, ich hab was grundlegend nicht verstanden.
        Zur Not muss ich das direkt in Javascript umsetzen, nur bin ich mit der Programmiersprache nicht vertraut, auch wenn grundlegende Programmierkenntnisse vorhanden sind.

        1 Reply Last reply
        0
        • T ticaki

          @paul53
          Statt der Intervall reference die Nachricht im Array speichern mit nur einem Intervall der das Array überprüft und die Nachricht verschickt?

          sts85S Offline
          sts85S Offline
          sts85
          wrote on last edited by sts85
          #24

          @ticaki said in Watchdog für Alter der Datenpunkte:

          @paul53
          Statt der Intervall reference die Nachricht im Array speichern mit nur einem Intervall der das Array überprüft und die Nachricht verschickt?

          Den Ansatz hatte ich auch eben, hab es aber in Blockly noch nicht so schnell umgesetzt bekommen.
          Dann kommen alle betroffenen Meldungen immer gemeinsam, das wäre aber vollkommen OK.

          sts85S 1 Reply Last reply
          0
          • sts85S sts85

            @ticaki said in Watchdog für Alter der Datenpunkte:

            @paul53
            Statt der Intervall reference die Nachricht im Array speichern mit nur einem Intervall der das Array überprüft und die Nachricht verschickt?

            Den Ansatz hatte ich auch eben, hab es aber in Blockly noch nicht so schnell umgesetzt bekommen.
            Dann kommen alle betroffenen Meldungen immer gemeinsam, das wäre aber vollkommen OK.

            sts85S Offline
            sts85S Offline
            sts85
            wrote on last edited by sts85
            #25

            Ob es elegant ist, sei dahingestellt, aber so geht es:

            d389ad63-dcbe-4be5-bb50-4f5fc0794db6-image.png

            var ids, id, intervalle, messages, idx, Intervall, msg, i, idm, message_there;
            
            function listsRepeat(value, n) {
              var array = [];
              for (var i = 0; i < n; i++) {
                array[i] = value;
              }
              return array;
            }
            
            // Beschreibe diese Funktion …
            async function getName(id) {
                return getObject(id).common.name;
            }
            
            
            ids = Array.prototype.slice.apply($("state[id=*](functions=watchdog)"));
            intervalle = listsRepeat(null, ids.length);
            messages = listsRepeat(null, ids.length);
            schedule("*/2 * * * * *", async function () {
              for (var id_index in ids) {
                id = ids[id_index];
                idx = ids.indexOf(id) + 1;
                Intervall = intervalle[(idx - 1)];
                messages[(idx - 1)] = 'Sensorwert zu alt: ' + String(await getName(id));
                msg = messages[(idx - 1)];
                if (parseFloat((new Date().getTime())) - getState(id).ts <= 900000) {
                  (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                  messages[(idx - 1)] = null;
                } else if (!Intervall) {
                  console.log(msg);
                  Intervall = setInterval(async function () {
                    for (var i_index in ids) {
                      i = ids[i_index];
                      idm = ids.indexOf(i) + 1;
                      message_there = intervalle[(idm - 1)];
                      if (message_there != null) {
                        console.log(('Sensorwert zu alt: ' + String(await getName(i))));
                      }
                    }
                  }, 6000);
                }
                intervalle[(idx - 1)] = Intervall;
              }
            });
            

            Danke euch nochmals!

            Edit: Kleiner Denkfehler, jetzt werden natürlich nich mehrere Intervalle ausgelöst...

            T 1 Reply Last reply
            0
            • sts85S sts85

              Ob es elegant ist, sei dahingestellt, aber so geht es:

              d389ad63-dcbe-4be5-bb50-4f5fc0794db6-image.png

              var ids, id, intervalle, messages, idx, Intervall, msg, i, idm, message_there;
              
              function listsRepeat(value, n) {
                var array = [];
                for (var i = 0; i < n; i++) {
                  array[i] = value;
                }
                return array;
              }
              
              // Beschreibe diese Funktion …
              async function getName(id) {
                  return getObject(id).common.name;
              }
              
              
              ids = Array.prototype.slice.apply($("state[id=*](functions=watchdog)"));
              intervalle = listsRepeat(null, ids.length);
              messages = listsRepeat(null, ids.length);
              schedule("*/2 * * * * *", async function () {
                for (var id_index in ids) {
                  id = ids[id_index];
                  idx = ids.indexOf(id) + 1;
                  Intervall = intervalle[(idx - 1)];
                  messages[(idx - 1)] = 'Sensorwert zu alt: ' + String(await getName(id));
                  msg = messages[(idx - 1)];
                  if (parseFloat((new Date().getTime())) - getState(id).ts <= 900000) {
                    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                    messages[(idx - 1)] = null;
                  } else if (!Intervall) {
                    console.log(msg);
                    Intervall = setInterval(async function () {
                      for (var i_index in ids) {
                        i = ids[i_index];
                        idm = ids.indexOf(i) + 1;
                        message_there = intervalle[(idm - 1)];
                        if (message_there != null) {
                          console.log(('Sensorwert zu alt: ' + String(await getName(i))));
                        }
                      }
                    }, 6000);
                  }
                  intervalle[(idx - 1)] = Intervall;
                }
              });
              

              Danke euch nochmals!

              Edit: Kleiner Denkfehler, jetzt werden natürlich nich mehrere Intervalle ausgelöst...

              T Do not disturb
              T Do not disturb
              ticaki
              wrote on last edited by
              #26

              @sts85

              Dein jetziges Script verschickt sensorenanzahl^2 Meldungen im Höchstfall alle 6 Sekunden. Oder?

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              sts85S 1 Reply Last reply
              0
              • T ticaki

                @sts85

                Dein jetziges Script verschickt sensorenanzahl^2 Meldungen im Höchstfall alle 6 Sekunden. Oder?

                sts85S Offline
                sts85S Offline
                sts85
                wrote on last edited by
                #27

                @ticaki

                Haha, siehe edit. Hab ich auch gerade gemerkt. Ich darf hier natürlich nur einen Intervall nutzen.

                T paul53P 2 Replies Last reply
                0
                • sts85S sts85

                  @ticaki

                  Haha, siehe edit. Hab ich auch gerade gemerkt. Ich darf hier natürlich nur einen Intervall nutzen.

                  T Do not disturb
                  T Do not disturb
                  ticaki
                  wrote on last edited by ticaki
                  #28

                  @sts85
                  Als Nächstes dann draus eine Nachricht bilden die du dir bei Änderungen per Telegramm selbst zu schickst. :)

                  Z.B
                  ⚠️ Warmwassershelly hat sich seit 01:00:00 nicht mehr aktualisiert

                  (Hier fieses grinse smiley einsetzten)

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  1 Reply Last reply
                  0
                  • sts85S sts85

                    @ticaki

                    Haha, siehe edit. Hab ich auch gerade gemerkt. Ich darf hier natürlich nur einen Intervall nutzen.

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #29

                    @sts85 sagte: Ich darf hier natürlich nur einen Intervall nutzen.

                    Ja, etwa so:

                    Blockly_temp.JPG

                    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

                    sts85S 1 Reply Last reply
                    0
                    • paul53P paul53

                      @sts85 sagte: Ich darf hier natürlich nur einen Intervall nutzen.

                      Ja, etwa so:

                      Blockly_temp.JPG

                      sts85S Offline
                      sts85S Offline
                      sts85
                      wrote on last edited by
                      #30

                      @paul53 said in Watchdog für Alter der Datenpunkte:

                      @sts85 sagte: Ich darf hier natürlich nur einen Intervall nutzen.

                      Ja, etwa so:

                      Blockly_temp.JPG

                      Perfekt, super, läuft 1A.

                      Hatte eben auch schon was gebastelt, aber dies ist hier noch ein wenig eleganter. Nur deine Zähl-Schleife habe ich durch eine "für jeden Wert" Schleife ersetzt.

                      b5806609-9133-4f58-b2b4-6efbeb8e91fb-image.png

                      Einiges gelernt...
                      Nochmals vielen Dank euch allen! 🥳🎉

                      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

                      706

                      Online

                      32.6k

                      Users

                      82.3k

                      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