NEWS
Blockly, um nur nachts Werte zu aktualisieren
-
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:
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.
-
@bertderkleine sagte: nachts alle 30 Sekunden alternierend einen Wert von 170,0 und 170,1 in einen Datenpunkt AAA schreibt.
-
@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.
Vielen Dank! Solche Denkanstösse, wie man etwas umsetzen kann sind immer hilfreich!
-
-
@paul53 sagte in Blockly, um nur nachts Werte zu aktualisieren:
@bertderkleine sagte: Denkanstösse, wie man etwas umsetzen kann
Version mit weniger Mathematik:
Nochmals danke!