NEWS
[gelöst] Schedule für Monatswechsel triggert täglich
-
Ich habe mit Blockly einen Monatswechsel programmiert. Das Ganze wird zur gewünschten Zeit, aber eben täglich ausgeführt. Ich prüfe jetzt deshalb zusätzlich, ob der Monat der Ausführung mit dem gespeicherten laufenden Monat übereinstimmt. Sieht aber als Code ziemlich häßlich aus ;-)

Wenn man sich den Schedule mit dem Blockly Wizard anschaut dann sieht es wie folgt aus:

Als JavaScript so:
var currentMonth, monthFromCurrentDate; // Beschreibe diese Funktion … async function getCurrentMonth() { let monthList = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September', 'Oktober','November','Dezember']; let now = new Date().getMonth(); return monthList[now];; } // Beschreibe diese Funktion … async function getTimestamp() { return new Date().toString(); } schedule('{"time":{"exactTime":true,"start":"00:02"},"period":{"months":1}}', async function () { console.log('MonthlySwitch called'); currentMonth = await getCurrentMonth(); monthFromCurrentDate = getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.DateTeaser").val; if (currentMonth != monthFromCurrentDate) { setState("0_userdata.0.Sungrow.EarningsPerMonth.PrevMonth.EnergyOwnConsumed"/*EnergyOwnConsumedPrevMonth*/, getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.EnergyConsumed").val);Ich bin mit der Syntax des Schedule-Kommandos nicht vertraut, aber es sieht für mich plausibel aus.
-
Ich habe mit Blockly einen Monatswechsel programmiert. Das Ganze wird zur gewünschten Zeit, aber eben täglich ausgeführt. Ich prüfe jetzt deshalb zusätzlich, ob der Monat der Ausführung mit dem gespeicherten laufenden Monat übereinstimmt. Sieht aber als Code ziemlich häßlich aus ;-)

Wenn man sich den Schedule mit dem Blockly Wizard anschaut dann sieht es wie folgt aus:

Als JavaScript so:
var currentMonth, monthFromCurrentDate; // Beschreibe diese Funktion … async function getCurrentMonth() { let monthList = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September', 'Oktober','November','Dezember']; let now = new Date().getMonth(); return monthList[now];; } // Beschreibe diese Funktion … async function getTimestamp() { return new Date().toString(); } schedule('{"time":{"exactTime":true,"start":"00:02"},"period":{"months":1}}', async function () { console.log('MonthlySwitch called'); currentMonth = await getCurrentMonth(); monthFromCurrentDate = getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.DateTeaser").val; if (currentMonth != monthFromCurrentDate) { setState("0_userdata.0.Sungrow.EarningsPerMonth.PrevMonth.EnergyOwnConsumed"/*EnergyOwnConsumedPrevMonth*/, getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.EnergyConsumed").val);Ich bin mit der Syntax des Schedule-Kommandos nicht vertraut, aber es sieht für mich plausibel aus.
@gombersiob sagte: Ich bin mit der Syntax des Schedule-Kommandos nicht vertraut
Nimm besser einen CRON-String: "2 0 1 * *"
-
Ich habe mit Blockly einen Monatswechsel programmiert. Das Ganze wird zur gewünschten Zeit, aber eben täglich ausgeführt. Ich prüfe jetzt deshalb zusätzlich, ob der Monat der Ausführung mit dem gespeicherten laufenden Monat übereinstimmt. Sieht aber als Code ziemlich häßlich aus ;-)

Wenn man sich den Schedule mit dem Blockly Wizard anschaut dann sieht es wie folgt aus:

Als JavaScript so:
var currentMonth, monthFromCurrentDate; // Beschreibe diese Funktion … async function getCurrentMonth() { let monthList = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September', 'Oktober','November','Dezember']; let now = new Date().getMonth(); return monthList[now];; } // Beschreibe diese Funktion … async function getTimestamp() { return new Date().toString(); } schedule('{"time":{"exactTime":true,"start":"00:02"},"period":{"months":1}}', async function () { console.log('MonthlySwitch called'); currentMonth = await getCurrentMonth(); monthFromCurrentDate = getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.DateTeaser").val; if (currentMonth != monthFromCurrentDate) { setState("0_userdata.0.Sungrow.EarningsPerMonth.PrevMonth.EnergyOwnConsumed"/*EnergyOwnConsumedPrevMonth*/, getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.EnergyConsumed").val);Ich bin mit der Syntax des Schedule-Kommandos nicht vertraut, aber es sieht für mich plausibel aus.
@gombersiob ich würde eher cron string nehmen. Probier es mal so:

//edit oh @paul53 war schneller :D
-
Ich habe mit Blockly einen Monatswechsel programmiert. Das Ganze wird zur gewünschten Zeit, aber eben täglich ausgeführt. Ich prüfe jetzt deshalb zusätzlich, ob der Monat der Ausführung mit dem gespeicherten laufenden Monat übereinstimmt. Sieht aber als Code ziemlich häßlich aus ;-)

Wenn man sich den Schedule mit dem Blockly Wizard anschaut dann sieht es wie folgt aus:

Als JavaScript so:
var currentMonth, monthFromCurrentDate; // Beschreibe diese Funktion … async function getCurrentMonth() { let monthList = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September', 'Oktober','November','Dezember']; let now = new Date().getMonth(); return monthList[now];; } // Beschreibe diese Funktion … async function getTimestamp() { return new Date().toString(); } schedule('{"time":{"exactTime":true,"start":"00:02"},"period":{"months":1}}', async function () { console.log('MonthlySwitch called'); currentMonth = await getCurrentMonth(); monthFromCurrentDate = getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.DateTeaser").val; if (currentMonth != monthFromCurrentDate) { setState("0_userdata.0.Sungrow.EarningsPerMonth.PrevMonth.EnergyOwnConsumed"/*EnergyOwnConsumedPrevMonth*/, getState("0_userdata.0.Sungrow.EarningsPerMonth.CurrentMonth.EnergyConsumed").val);Ich bin mit der Syntax des Schedule-Kommandos nicht vertraut, aber es sieht für mich plausibel aus.
@gombersiob
Dein Schedule sagt Dir ja schon, dass es jeden Tag läuft:

Nimm - wie die anderen bereits empfohlen haben - CRON
-
@gombersiob
Dein Schedule sagt Dir ja schon, dass es jeden Tag läuft:

Nimm - wie die anderen bereits empfohlen haben - CRON
@codierknecht said in Schedule für Monatswechsel triggert täglich:
Dein Schedule sagt Dir ja schon, dass es jeden Tag läuft:
Shame on me!!!
-
@gombersiob sagte: Ich bin mit der Syntax des Schedule-Kommandos nicht vertraut
Nimm besser einen CRON-String: "2 0 1 * *"
@paul53 said in Schedule für Monatswechsel triggert täglich:
Nimm besser einen CRON-String: "2 0 1 * *"
Mach ich, ist übersichtlicher! Danke
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden