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. Skripten / Logik
  4. Blockly
  5. [gelöst] Daten in unterschiedlichen Intervallen verarbeiten?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    5
    1
    61

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

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

[gelöst] Daten in unterschiedlichen Intervallen verarbeiten?

Geplant Angeheftet Gesperrt Verschoben Blockly
7 Beiträge 3 Kommentatoren 418 Aufrufe 2 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.
  • A Offline
    A Offline
    Alchemi
    schrieb am zuletzt editiert von Alchemi
    #1

    Hallo zusammen,

    bislang konnte ich meine kleinen Herausforderungen durch viel lesen und ausprobieren, auch dank diesem Forum, ohne weitere Mithilfe lösen. Ich sehe mich aber immer noch als Anfänger.

    Aktuell stoße ich jedoch an meine Grenzen und benötige Eure Hilfe bei meinem Blockly...

    Ziel:

    • Ein CO2-Sensor meldet fleißig seine Daten an ioBroker. -> umgesetzt
    • Je nach Wertebereich und Uhrzeit/Anwesenheit soll eine Meldung mit dem aktuellen Wert erzeugt werden. -> umgesetzt
    • Die Meldungen sollen je nach Wertebereich in unterschiedlichen Intervallen wiederholt werden. -> UNGELÖST

    Hier mein aktueller Stand und das gewünschte Ziel:

    Blockly CO2 Monitor.png


    var Sprachausgabe_OK, Wertgrenze;

    on({ id: 'esphome.0.xxx.Sensor.xxx.state' /* State of CO2 /, change: 'ne' }, async (obj) => {
    let value = obj.state.val;
    let oldValue = obj.oldState.val;
    // Sprachausgabe eingrenzen auf Uhrzeit (To-Do: auf Anwesenheit und Sleep-Staus umstellen.)
    if (compareTime('08:00', null, '>') && compareTime('22:00', null, '<')) {
    Sprachausgabe_OK = 1;
    } else {
    Sprachausgabe_OK = 0;
    }
    // Wertegrenzen
    if ((obj.state ? obj.state.val : '') < 800) {
    Wertgrenze = 0;
    } else if ((obj.state ? obj.state.val : '') >= 800 && (obj.state ? obj.state.val : '') < 1000) {
    Wertgrenze = 1;
    } else if ((obj.state ? obj.state.val : '') >= 1000 && (obj.state ? obj.state.val : '') < 1500) {
    Wertgrenze = 2;
    } else if ((obj.state ? obj.state.val : '') >= 1500 && (obj.state ? obj.state.val : '') < 2000) {
    Wertgrenze = 3;
    } else if ((obj.state ? obj.state.val : '') >= 2000 && (obj.state ? obj.state.val : '') <= 3000) {
    Wertgrenze = 4;
    }
    // Infoausgabe
    if (Sprachausgabe_OK == 1 && Wertgrenze == 0) {
    setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
    speak /, (['Die Raumluftqualität ist gut. Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
    } else if (Sprachausgabe_OK == 1 && Wertgrenze == 1) {
    setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
    speak /, (['Die Raumluftqualität ist nicht gut. Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
    } else if (Sprachausgabe_OK == 1 && Wertgrenze == 2) {
    setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
    speak /, (['Die Raumluftqualität ist nur mäßig. Der CO2-Wert ist schon bei: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
    } else if (Sprachausgabe_OK == 1 && Wertgrenze == 3) {
    setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
    speak /, (['Die Raumluftqualität hat den Maximalwert überschritten. Der CO2-Wert liegt bei: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
    } else if (Sprachausgabe_OK == 1 && Wertgrenze == 4) {
    setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
    speak */, (['Die Raumluftqualität ist bedenklich für Körper und Geist!! Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
    }
    });

    Mit „Timeouts/Intervall“ hatte ich bereits „experimentiert“, aber das war mehr „im Trüben fischen“, als das es zielführend war. ☹

    Ist mein bisheriger Ansatz überhaupt OK? Oder habe ich Logik-Knoten im Kopf?
    Das Ziel bleibt dasselbe... Bitte helft.

    Viele Grüße
    Alchemi

    OliverIOO paul53P 2 Antworten Letzte Antwort
    0
    • A Alchemi

      Hallo zusammen,

      bislang konnte ich meine kleinen Herausforderungen durch viel lesen und ausprobieren, auch dank diesem Forum, ohne weitere Mithilfe lösen. Ich sehe mich aber immer noch als Anfänger.

      Aktuell stoße ich jedoch an meine Grenzen und benötige Eure Hilfe bei meinem Blockly...

      Ziel:

      • Ein CO2-Sensor meldet fleißig seine Daten an ioBroker. -> umgesetzt
      • Je nach Wertebereich und Uhrzeit/Anwesenheit soll eine Meldung mit dem aktuellen Wert erzeugt werden. -> umgesetzt
      • Die Meldungen sollen je nach Wertebereich in unterschiedlichen Intervallen wiederholt werden. -> UNGELÖST

      Hier mein aktueller Stand und das gewünschte Ziel:

      Blockly CO2 Monitor.png


      var Sprachausgabe_OK, Wertgrenze;

      on({ id: 'esphome.0.xxx.Sensor.xxx.state' /* State of CO2 /, change: 'ne' }, async (obj) => {
      let value = obj.state.val;
      let oldValue = obj.oldState.val;
      // Sprachausgabe eingrenzen auf Uhrzeit (To-Do: auf Anwesenheit und Sleep-Staus umstellen.)
      if (compareTime('08:00', null, '>') && compareTime('22:00', null, '<')) {
      Sprachausgabe_OK = 1;
      } else {
      Sprachausgabe_OK = 0;
      }
      // Wertegrenzen
      if ((obj.state ? obj.state.val : '') < 800) {
      Wertgrenze = 0;
      } else if ((obj.state ? obj.state.val : '') >= 800 && (obj.state ? obj.state.val : '') < 1000) {
      Wertgrenze = 1;
      } else if ((obj.state ? obj.state.val : '') >= 1000 && (obj.state ? obj.state.val : '') < 1500) {
      Wertgrenze = 2;
      } else if ((obj.state ? obj.state.val : '') >= 1500 && (obj.state ? obj.state.val : '') < 2000) {
      Wertgrenze = 3;
      } else if ((obj.state ? obj.state.val : '') >= 2000 && (obj.state ? obj.state.val : '') <= 3000) {
      Wertgrenze = 4;
      }
      // Infoausgabe
      if (Sprachausgabe_OK == 1 && Wertgrenze == 0) {
      setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
      speak /, (['Die Raumluftqualität ist gut. Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
      } else if (Sprachausgabe_OK == 1 && Wertgrenze == 1) {
      setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
      speak /, (['Die Raumluftqualität ist nicht gut. Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
      } else if (Sprachausgabe_OK == 1 && Wertgrenze == 2) {
      setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
      speak /, (['Die Raumluftqualität ist nur mäßig. Der CO2-Wert ist schon bei: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
      } else if (Sprachausgabe_OK == 1 && Wertgrenze == 3) {
      setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
      speak /, (['Die Raumluftqualität hat den Maximalwert überschritten. Der CO2-Wert liegt bei: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
      } else if (Sprachausgabe_OK == 1 && Wertgrenze == 4) {
      setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
      speak */, (['Die Raumluftqualität ist bedenklich für Körper und Geist!! Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
      }
      });

      Mit „Timeouts/Intervall“ hatte ich bereits „experimentiert“, aber das war mehr „im Trüben fischen“, als das es zielführend war. ☹

      Ist mein bisheriger Ansatz überhaupt OK? Oder habe ich Logik-Knoten im Kopf?
      Das Ziel bleibt dasselbe... Bitte helft.

      Viele Grüße
      Alchemi

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #2

      @alchemi

      Das sieht doch schon einmal okay aus.
      Mich würde es wahrscheinlich nach einer Weile nerven, wenn die Sprachausgabe sich ständig meldet und mir den aktuellen Stand ausgibt.
      Interessanter wäre es wahrscheinlich, wenn innerhalb einer gewissen Zeitspanne, ein radikaler Anstieg oder Abfall der Luftqualität stattfindet.
      Das was du ermittelst ist ziemlich okay für eine Anzeige

      du hast leider vergessen zu schreiben, wo du jetzt deine Grenzen siehst und was willst du noch umsetzen?

      im Sinne von JavaSkript/Blocky sehe ich jetzt kein Intervall oder time out.
      Das Skript reagiert ja einfach nur, bei Wertänderung

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      A 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @alchemi

        Das sieht doch schon einmal okay aus.
        Mich würde es wahrscheinlich nach einer Weile nerven, wenn die Sprachausgabe sich ständig meldet und mir den aktuellen Stand ausgibt.
        Interessanter wäre es wahrscheinlich, wenn innerhalb einer gewissen Zeitspanne, ein radikaler Anstieg oder Abfall der Luftqualität stattfindet.
        Das was du ermittelst ist ziemlich okay für eine Anzeige

        du hast leider vergessen zu schreiben, wo du jetzt deine Grenzen siehst und was willst du noch umsetzen?

        im Sinne von JavaSkript/Blocky sehe ich jetzt kein Intervall oder time out.
        Das Skript reagiert ja einfach nur, bei Wertänderung

        A Offline
        A Offline
        Alchemi
        schrieb am zuletzt editiert von
        #3

        Danke für die Antwort, aber meine eigentliche Frage habe ich vermutlich nicht eindeutig formuliert:
        @alchemi sagte in Daten in unterschiedlichen Intervallen verarbeiten?:

        • Die Meldungen sollen je nach Wertebereich in unterschiedlichen Intervallen wiederholt werden. -> UNGELÖST

        Siehe Bild vom Blockly...

        Und genau: Bei meinen bisherigen Versuche nerven die Ansagen! Deshalb die Frage nach Intervallen...

        1 Antwort Letzte Antwort
        0
        • A Alchemi

          Hallo zusammen,

          bislang konnte ich meine kleinen Herausforderungen durch viel lesen und ausprobieren, auch dank diesem Forum, ohne weitere Mithilfe lösen. Ich sehe mich aber immer noch als Anfänger.

          Aktuell stoße ich jedoch an meine Grenzen und benötige Eure Hilfe bei meinem Blockly...

          Ziel:

          • Ein CO2-Sensor meldet fleißig seine Daten an ioBroker. -> umgesetzt
          • Je nach Wertebereich und Uhrzeit/Anwesenheit soll eine Meldung mit dem aktuellen Wert erzeugt werden. -> umgesetzt
          • Die Meldungen sollen je nach Wertebereich in unterschiedlichen Intervallen wiederholt werden. -> UNGELÖST

          Hier mein aktueller Stand und das gewünschte Ziel:

          Blockly CO2 Monitor.png


          var Sprachausgabe_OK, Wertgrenze;

          on({ id: 'esphome.0.xxx.Sensor.xxx.state' /* State of CO2 /, change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          // Sprachausgabe eingrenzen auf Uhrzeit (To-Do: auf Anwesenheit und Sleep-Staus umstellen.)
          if (compareTime('08:00', null, '>') && compareTime('22:00', null, '<')) {
          Sprachausgabe_OK = 1;
          } else {
          Sprachausgabe_OK = 0;
          }
          // Wertegrenzen
          if ((obj.state ? obj.state.val : '') < 800) {
          Wertgrenze = 0;
          } else if ((obj.state ? obj.state.val : '') >= 800 && (obj.state ? obj.state.val : '') < 1000) {
          Wertgrenze = 1;
          } else if ((obj.state ? obj.state.val : '') >= 1000 && (obj.state ? obj.state.val : '') < 1500) {
          Wertgrenze = 2;
          } else if ((obj.state ? obj.state.val : '') >= 1500 && (obj.state ? obj.state.val : '') < 2000) {
          Wertgrenze = 3;
          } else if ((obj.state ? obj.state.val : '') >= 2000 && (obj.state ? obj.state.val : '') <= 3000) {
          Wertgrenze = 4;
          }
          // Infoausgabe
          if (Sprachausgabe_OK == 1 && Wertgrenze == 0) {
          setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
          speak /, (['Die Raumluftqualität ist gut. Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
          } else if (Sprachausgabe_OK == 1 && Wertgrenze == 1) {
          setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
          speak /, (['Die Raumluftqualität ist nicht gut. Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
          } else if (Sprachausgabe_OK == 1 && Wertgrenze == 2) {
          setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
          speak /, (['Die Raumluftqualität ist nur mäßig. Der CO2-Wert ist schon bei: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
          } else if (Sprachausgabe_OK == 1 && Wertgrenze == 3) {
          setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
          speak /, (['Die Raumluftqualität hat den Maximalwert überschritten. Der CO2-Wert liegt bei: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
          } else if (Sprachausgabe_OK == 1 && Wertgrenze == 4) {
          setState('alexa2.0.Echo-Devices.xxx.Commands.speak' /
          speak */, (['Die Raumluftqualität ist bedenklich für Körper und Geist!! Der CO2-Wert beträgt: ',(obj.state ? obj.state.val : ''),' ppm.'].join('')));
          }
          });

          Mit „Timeouts/Intervall“ hatte ich bereits „experimentiert“, aber das war mehr „im Trüben fischen“, als das es zielführend war. ☹

          Ist mein bisheriger Ansatz überhaupt OK? Oder habe ich Logik-Knoten im Kopf?
          Das Ziel bleibt dasselbe... Bitte helft.

          Viele Grüße
          Alchemi

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

          @alchemi sagte: je nach Wertebereich in unterschiedlichen Intervallen wiederholt werden.

          Versuche es mal 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

          A 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @alchemi sagte: je nach Wertebereich in unterschiedlichen Intervallen wiederholt werden.

            Versuche es mal so:

            Blockly_temp.JPG

            A Offline
            A Offline
            Alchemi
            schrieb am zuletzt editiert von
            #5

            @paul53 : Vielen Dank für Deinen Vorschlag!!!

            Funktioniert soweit „wie gewünscht“, nur das anscheinend innerhalb des Intervalls der „Trigger-Wert“ nicht aktualisierst wird solange das Intervall läuft.
            Dies konnte ich mit einer weiteren Variablen lösen:

            2024-10-01 15_51_32-2024-10-01 15_01_07-Services.jpg
            2024-10-01 15_45_56-Services.jpg

            Nur leider habe ich meine Idee wieder nicht genau genug formuliert. ☹
            Ich meinte eigentlich:
            […] Die Meldungen sollen je nach „Eintritt“ in einen Wertebereich direkt erfolgen und dann in unterschiedlichen Intervallen wiederholt werden bis eine anderer Wertebereich erreicht ist.[…]

            Hat dazu jemand ne Idee?

            Sorry für Eure Zeit bisher – ich gelobe Besserung bei meinen Formulierungen!

            Gruß
            Alchemi

            paul53P 1 Antwort Letzte Antwort
            0
            • A Alchemi

              @paul53 : Vielen Dank für Deinen Vorschlag!!!

              Funktioniert soweit „wie gewünscht“, nur das anscheinend innerhalb des Intervalls der „Trigger-Wert“ nicht aktualisierst wird solange das Intervall läuft.
              Dies konnte ich mit einer weiteren Variablen lösen:

              2024-10-01 15_51_32-2024-10-01 15_01_07-Services.jpg
              2024-10-01 15_45_56-Services.jpg

              Nur leider habe ich meine Idee wieder nicht genau genug formuliert. ☹
              Ich meinte eigentlich:
              […] Die Meldungen sollen je nach „Eintritt“ in einen Wertebereich direkt erfolgen und dann in unterschiedlichen Intervallen wiederholt werden bis eine anderer Wertebereich erreicht ist.[…]

              Hat dazu jemand ne Idee?

              Sorry für Eure Zeit bisher – ich gelobe Besserung bei meinen Formulierungen!

              Gruß
              Alchemi

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

              @alchemi sagte: „Eintritt“ in einen Wertebereich direkt erfolgen

              Du meinst: Ohne die Verzögerung durch das Intervall? Dann verwende eine Funktion:

              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

              A 1 Antwort Letzte Antwort
              1
              • paul53P paul53

                @alchemi sagte: „Eintritt“ in einen Wertebereich direkt erfolgen

                Du meinst: Ohne die Verzögerung durch das Intervall? Dann verwende eine Funktion:

                Blockly_temp.JPG

                A Offline
                A Offline
                Alchemi
                schrieb am zuletzt editiert von
                #7

                @paul53 Das wars! Vielen lieben Dank!!

                Das Skript funktioniert perfekt!
                Ergebnis.png

                Und dabei habe ich auch einiges gelernt!

                Gruß
                Alchemi

                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

                572

                Online

                32.7k

                Benutzer

                82.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