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, um nur nachts Werte zu aktualisieren

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Blockly, um nur nachts Werte zu aktualisieren

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 2 Kommentatoren 361 Aufrufe 1 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.
  • BertDerKleineB Offline
    BertDerKleineB Offline
    BertDerKleine
    schrieb am zuletzt editiert von BertDerKleine
    #1

    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.

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

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

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

      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

      BertDerKleineB 1 Antwort Letzte Antwort
      3
      • paul53P paul53

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

        Blockly_temp.JPG

        BertDerKleineB Offline
        BertDerKleineB Offline
        BertDerKleine
        schrieb am zuletzt editiert von
        #3

        @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!

        :+1:

        paul53P 1 Antwort Letzte Antwort
        0
        • BertDerKleineB BertDerKleine

          @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!

          :+1:

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

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

          Version mit weniger Mathematik:

          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

          BertDerKleineB 1 Antwort Letzte Antwort
          1
          • paul53P paul53

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

            Version mit weniger Mathematik:

            Blockly_temp.JPG

            BertDerKleineB Offline
            BertDerKleineB Offline
            BertDerKleine
            schrieb am zuletzt editiert von
            #5

            @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:

            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

            726

            Online

            32.6k

            Benutzer

            82.2k

            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