Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly, um nur nachts Werte zu aktualisieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly, um nur nachts Werte zu aktualisieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • BertDerKleine
      BertDerKleine last edited by BertDerKleine

      Hallo,

      ich möchte ein Blockly basteln, dass mir nachts alle 30 Sekunden alternierend einen Wert von 170,0 und 170,1 in einen Datenpunkt AAA schreibt.
      Irgendwie finde ich als Nichtentwickler da keinen Einstieg.
      Ich habe eine KI dazu befragt und die spuckt mir sowas hier aus:

      let nextValue = 170.0;
      let intervalId = null;
      
      // Funktion zum Starten/Stoppen des Intervals
      function checkNightMode() {
        const now = new Date();
        const sunrise = new Date(getState('astro.0.Sun.Rise').value);
        const sunset = new Date(getState('astro.0.Sun.Set').value);
        
        if (now > sunrise && now < sunset) { // Tag
          if (intervalId !== null) {
            clearInterval(intervalId);
            intervalId = null;
            log("Interval gestoppt (Tagmodus)");
          }
        } else { // Nacht
          if (intervalId === null) {
            intervalId = setInterval(() => {
              setState('AAA', nextValue);
              nextValue = nextValue === 170.0 ? 170.1 : 170.0;
            }, 30000); // 30 Sekunden
            log("Interval gestartet (Nachtmodus)");
          }
        }
      }
      
      // Initialisierung
      schedule('* */1 * * *', () => checkNightMode()); // Stündlicher Fallback
      on({ id: ['astro.0.Sun.Rise', 'astro.0.Sun.Set'], change: 'ne' }, checkNightMode);
      checkNightMode(); // Startprüfung
      

      Leider verstehe ich Javascript als solches nicht.
      Könnte jemand helfend skizzieren, wie ich derlei mit Blockly Bausteinen hinbekomme?

      Ich habe mal sowas hier versucht:
      b.png

      Dazu wird aber angemeckert:

      • while-Schleife blockiert den Thread: Die Endlosschleife blockiert die gesamte ioBroker-Instanz, da sie synchron läuft.
      • Intervalle häufen sich: Bei jedem Sonnenuntergang wird ein neues Intervall gestartet, ohne das vorherige zu stoppen.
      • Kein Stoppmechanismus: Es fehlt die Logik zum Beenden bei Sonnenaufgang.
      • Wartezeit unklar: wait(30000) im Intervall ist redundant, wenn bereits setInterval(60000) verwendet wird.

      Und nun weiss ich nicht weiter.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @BertDerKleine last edited by

        @bertderkleine sagte: nachts alle 30 Sekunden alternierend einen Wert von 170,0 und 170,1 in einen Datenpunkt AAA schreibt.

        Blockly_temp.JPG

        BertDerKleine 1 Reply Last reply Reply Quote 3
        • BertDerKleine
          BertDerKleine @paul53 last edited by

          @paul53 sagte in Blockly, um nur nachts Werte zu aktualisieren:

          @bertderkleine sagte: nachts alle 30 Sekunden alternierend einen Wert von 170,0 und 170,1 in einen Datenpunkt AAA schreibt.

          Blockly_temp.JPG

          Vielen Dank! Solche Denkanstösse, wie man etwas umsetzen kann sind immer hilfreich!

          👍

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @BertDerKleine last edited by

            @bertderkleine sagte: Denkanstösse, wie man etwas umsetzen kann

            Version mit weniger Mathematik:

            Blockly_temp.JPG

            BertDerKleine 1 Reply Last reply Reply Quote 1
            • BertDerKleine
              BertDerKleine @paul53 last edited by

              @paul53 sagte in Blockly, um nur nachts Werte zu aktualisieren:

              @bertderkleine sagte: Denkanstösse, wie man etwas umsetzen kann

              Version mit weniger Mathematik:

              Blockly_temp.JPG

              Nochmals danke! 👍

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              568
              Online

              31.8k
              Users

              79.9k
              Topics

              1.3m
              Posts

              2
              5
              124
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo