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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Watchdog für Alter der Datenpunkte

NEWS

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

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

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

Watchdog für Alter der Datenpunkte

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklymonitoring
30 Beiträge 4 Kommentatoren 2.5k Aufrufe 3 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.
  • paul53P paul53

    @sts85 sagte: Das Ergebnis ist aber dasselbe?!

    Gerade getestet: Du hast recht. Erklären kann ich mir das Verhalten aber nicht.

    T Offline
    T Offline
    ticaki
    schrieb am zuletzt editiert von ticaki
    #18

    @paul53
    msg muss als 3. Parameter an die interne Intervall Funktion übergeben werden. Das geht doch auch bei seinterval?

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    paul53P 1 Antwort Letzte Antwort
    0
    • T ticaki

      @paul53
      msg muss als 3. Parameter an die interne Intervall Funktion übergeben werden. Das geht doch auch bei seinterval?

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

      @ticaki sagte: msg muss als 3. Parameter an die interne Intervall Funktion übergeben werden.

      Gerade getestet: Funktioniert auch nicht.

      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 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @ticaki sagte: msg muss als 3. Parameter an die interne Intervall Funktion übergeben werden.

        Gerade getestet: Funktioniert auch nicht.

        T Offline
        T Offline
        ticaki
        schrieb am zuletzt editiert von
        #20

        @paul53

        Hast auch

        function(msg)
        

        Geändert?

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        paul53P 1 Antwort Letzte Antwort
        0
        • T ticaki

          @paul53

          Hast auch

          function(msg)
          

          Geändert?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
          0
          • paul53P paul53

            @ticaki sagte: function(msg)

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

            T Offline
            T Offline
            ticaki
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • paul53P paul53

              @ticaki sagte: function(msg)

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

              sts85S Offline
              sts85S Offline
              sts85
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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 Offline
                    T Offline
                    ticaki
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • T ticaki

                      @sts85

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

                      sts85S Offline
                      sts85S Offline
                      sts85
                      schrieb am zuletzt editiert von
                      #27

                      @ticaki

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

                      T paul53P 2 Antworten Letzte Antwort
                      0
                      • sts85S sts85

                        @ticaki

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

                        T Offline
                        T Offline
                        ticaki
                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 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

                            402

                            Online

                            32.4k

                            Benutzer

                            81.4k

                            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