NEWS
Script zum hochrechnen des Stromverbrauchs
-
Kann sowas funktionieren oder ist da ein Denkfehler drin?
schedule('{"time":{"exactTime":true,"start":"00:01"},"period":{"days":1}}', async function () { setState("0_userdata.0.Strom.Hochrechnung"/*Hochrechnung*/, (parseFloat((parseFloat(getState("0_userdata.0.Stromverbrauch.Verbrauch_Abrechnungsjahr").val) / formatDate(new Date(), "j"))) * 365)); });
Soweit ich das gelesen habe müsste ich mit dem Befehl
date +%j
ja den aktuellen Tag des Jahres ausggeben bekommen. Aber ich habe keine Ahnung ob das unter Javascript so umsetzbar ist. -
-
@arteck
Danke für den Link. Den habe ich gestern gesehen und ausprobiert.
Mit der Konsolenausgabe kam irgendwie nichts und wenn ich es versucht habe in einen Datenpunkt zu schreiben kam eine Fehlermeldung:javascript.0 2022-06-27 08:38:00.048 error at processTimers (node:internal/timers:502:7) javascript.0 2022-06-27 08:38:00.048 error at listOnTimeout (node:internal/timers:559:17) javascript.0 2022-06-27 08:38:00.048 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7) javascript.0 2022-06-27 08:38:00.047 error at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28 javascript.0 2022-06-27 08:38:00.047 error at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15) javascript.0 2022-06-27 08:38:00.046 error at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1408:34) javascript.0 2022-06-27 08:38:00.046 error at Object.<anonymous> (script.js.Strom.TagDesJahres:9:58) javascript.0 2022-06-27 08:38:00.040 error Error in callback: TypeError: tag is not a function
schedule("* * * * *", function () { // Tag des Jahres var jetzt = new Date(); var Jahr = jetzt.getFullYear(); var heutestart = new Date(jetzt.setHours(0,0,0,0)); var neujahr = new Date(Jahr,0,1); var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1; var tag = Math.ceil(difftage); setState("0_userdata.0.TagDesJahres"/*TagDesJahres*/, tag(tag)); });
-
Gelöscht
-
@chaot sagte in Script zum hochrechnen des Stromverbrauchs:
setState("0_userdata.0.TagDesJahres"/TagDesJahres/, tag(tag));
mach doch nicht so kopliziert
hier ist der Fehler, so muss es sein
setState("0_userdata.0.TagDesJahres"/*TagDesJahres*/, tag);
aber schau erst obs geht.. ohne den schedule geraffel
// Tag des Jahres var jetzt = new Date(); var Jahr = jetzt.getFullYear(); var heutestart = new Date(jetzt.setHours(0,0,0,0)); var neujahr = new Date(Jahr,0,1); var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1; var tag = Math.ceil(difftage); log.console("tag ----------> " + tag);
-
@arteck sagte in Script zum hochrechnen des Stromverbrauchs:
log.console("tag ----------> " + tag);
Mag mich nicht
Ich hatte noch eine Fehlermeldung in der Rechenzeile (6) die ich mit.getTime
wegbekommen habe.
log.console gibt eine Fehlermeldung und unter console.log kommt keine Ausgabe.// Tag des Jahres var jetzt = new Date(); var Jahr = jetzt.getFullYear(); var heutestart = new Date(jetzt.setHours(0,0,0,0)).getTime(); var neujahr = new Date(Jahr,0,1).getTime(); var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1; var tag = Math.ceil(difftage); console.log("tag ----------> " + tag);
-
@chaot dann andersrum.. verwechsel ich immrt
log.console("tag ----------> " + tag);
-
@arteck
Kommt zwar auch nichts in der Konsole, aber das Teil läuft!!!!!!// Hochrechnung var jetzt = new Date(); var Jahr = jetzt.getFullYear(); var heutestart = new Date(jetzt.setHours(0,0,0,0)).getTime(); var neujahr = new Date(Jahr,0,1).getTime(); var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1; var tag = Math.ceil(difftage); setState("0_userdata.0.Strom.Hochrechnung"/*Hochrechnung*/, ((getState("0_userdata.0.Stromverbrauch.Verbrauch_Abrechnungsjahr").val) / tag) * 365);
-
@chaot
Jetzt noch die Kommastellen wegbekommen und ich bin zufrieden -
Das Script funktioniert so wie ich das will.
Danke @arteck für die Tips und Hinweise in die richtige Richtung.// Hochrechnung Jahresverbrauch schedule("0,1 0 * * *", async function () { var jetzt = new Date(); var Jahr = jetzt.getFullYear(); var heutestart = new Date(jetzt.setHours(0,0,0,0)).getTime(); var neujahr = new Date(Jahr,0,1).getTime(); var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1; var tag = Math.ceil(difftage); setState("0_userdata.0.Strom.Hochrechnung"/*Hochrechnung*/, (((getState("0_userdata.0.Stromverbrauch.Verbrauch_Abrechnungsjahr").val) / tag) * 365).toFixed(0)); });