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üfungLeider 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.
-
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üfungLeider 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.

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

Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login