NEWS
Scriptoptimierung Solarprognose
-
@homoran said in Scriptoptimierung Solarprognose:
wie sieht denn das JSON aus?
[["06:00",[0,0]],["07:00",[1.077,1.077]],["08:00",[2.167,3.244]],["09:00",[3.308,6.552]],["10:00",[4.04,10.592]],["11:00",[4.29,14.882]],["12:00",[3.934,18.816]],["13:00",[2.361,21.177]],["14:00",[1.77,22.947]],["15:00",[0,22.947]]]Also Uhrzeit dann Leistung und Energie.
Also müsste ich ein Blockly haben was mir dann aus der JSON zwei Werte in DP schreibt, hier von heute:
DP Uhrzeit 12:00
DP Leistung 3.934 -
@homoran said in Scriptoptimierung Solarprognose:
wie sieht denn das JSON aus?
[["06:00",[0,0]],["07:00",[1.077,1.077]],["08:00",[2.167,3.244]],["09:00",[3.308,6.552]],["10:00",[4.04,10.592]],["11:00",[4.29,14.882]],["12:00",[3.934,18.816]],["13:00",[2.361,21.177]],["14:00",[1.77,22.947]],["15:00",[0,22.947]]]Also Uhrzeit dann Leistung und Energie.
Also müsste ich ein Blockly haben was mir dann aus der JSON zwei Werte in DP schreibt, hier von heute:
DP Uhrzeit 12:00
DP Leistung 3.934 -
@homoran said in Scriptoptimierung Solarprognose:
wie sieht denn das JSON aus?
[["06:00",[0,0]],["07:00",[1.077,1.077]],["08:00",[2.167,3.244]],["09:00",[3.308,6.552]],["10:00",[4.04,10.592]],["11:00",[4.29,14.882]],["12:00",[3.934,18.816]],["13:00",[2.361,21.177]],["14:00",[1.77,22.947]],["15:00",[0,22.947]]]Also Uhrzeit dann Leistung und Energie.
Also müsste ich ein Blockly haben was mir dann aus der JSON zwei Werte in DP schreibt, hier von heute:
DP Uhrzeit 12:00
DP Leistung 3.934 -
kommst du damit besser klar
const url = 'http://www.solarprognose.de/web/solarprediction/api/v1?_format=json&access-token=xxxxxxxxxxxxxxxxxxxxxx&item=location&id=xxxx&type=hourly'; const path = '0_userdata.0.Solar2'; schedule('4 8,10,12,14,16 * * *', function() { abfrage(); }); function abfrage() { httpGet(url, function (error, response) { if (error) { log(error, 'error'); } else { let obj = JSON.parse(response.data); dpCreate('', obj.data, 'string'); dpFill(obj); } }); } function dpFill(obj) { if (obj.status) { log('Fehler: ' + obj.status, 'warn'); } else { let data = obj.data; const outArray = formatAndSplitData(data); dpCreate('.heute', outArray.heute); dpCreate('.morgen', outArray.morgen); dpCreate('.uebermorgen', outArray.uebermorgen); } } function formatAndSplitData(data) { const SECONDS_IN_A_DAY = 86400; const MS_IN_A_SECOND = 1000; const now = new Date(); const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime(); const tomorrowStart = todayStart + SECONDS_IN_A_DAY * MS_IN_A_SECOND; const dayAfterTomorrowStart = tomorrowStart + SECONDS_IN_A_DAY * MS_IN_A_SECOND; const result = { heute: [], morgen: [], uebermorgen: [] }; for (const [timestamp, values] of Object.entries(data)) { const ts = Number(timestamp) * MS_IN_A_SECOND; // Convert timestamp to milliseconds const date = new Date(ts); const formattedTime = date.toLocaleTimeString("de-DE", { hour: "2-digit", minute: "2-digit" }); // Format as "hh:mm" const entry = [formattedTime, ...values]; if (ts >= todayStart && ts < tomorrowStart) { result.heute.push(entry); } else if (ts >= tomorrowStart && ts < dayAfterTomorrowStart) { result.morgen.push(entry); } else if (ts >= dayAfterTomorrowStart) { result.uebermorgen.push(entry); } } return result; } function dpCreate(text, data, typ) { createState(path + text + '.Json', [], false, { name: 'json' + text, type: typ == "string" ? typ : 'array', role: 'json', read: true, write: false }); setTimeout(function () { setState(path + text + '.Json', data, true); }, 600); }der genereirt nur arrays für heute morgen und übermorgen

die kannst du dann im blockly weiterverarbeiten
@arteck said in Scriptoptimierung Solarprognose:
kommst du damit besser klar
Soweit funktioniert das Script, allerdings ist mir aufgefallen, das anscheinend in das JSON 'Z-Zeiten' eingetragen werden.
Da, wenn man mal reinschaut die Zeiten mit den höchsten Erträgen um zwei Stunden nach vorne verschoben sind.Ich denke nicht das um 11:00L Uhr der höchste Ertrag zu erwarten ist.
[["06:00",[0,0]],["07:00",[0.435,0.435]],["08:00",[1.472,1.907]],["09:00",[2.19,4.097]],["10:00",[2.819,6.916]],["11:00",[3.486,10.402]],["12:00",[3.202,13.604]],["13:00",[2.175,15.779]],["14:00",[0.953,16.732]],["15:00",[0,16.732]]] -
@arteck said in Scriptoptimierung Solarprognose:
kommst du damit besser klar
Soweit funktioniert das Script, allerdings ist mir aufgefallen, das anscheinend in das JSON 'Z-Zeiten' eingetragen werden.
Da, wenn man mal reinschaut die Zeiten mit den höchsten Erträgen um zwei Stunden nach vorne verschoben sind.Ich denke nicht das um 11:00L Uhr der höchste Ertrag zu erwarten ist.
[["06:00",[0,0]],["07:00",[0.435,0.435]],["08:00",[1.472,1.907]],["09:00",[2.19,4.097]],["10:00",[2.819,6.916]],["11:00",[3.486,10.402]],["12:00",[3.202,13.604]],["13:00",[2.175,15.779]],["14:00",[0.953,16.732]],["15:00",[0,16.732]]]@icebear jetzt wo du es sagst... ziehmal das script nochmal
ich hab aber auch die ausgabe geändert .. so kann man es direkt im JSON Table widget nutzen
[["07:00",0,0],["08:00",0.291,0.291],["09:00",1.333,1.624],["10:00",2.62,4.244],["11:00",3.213,7.457],["12:00",3.677,11.134],["13:00",3.686,14.82],["14:00",3.247,18.067],["15:00",1.353,19.42],["16:00",0,19.42]]
-
@icebear jetzt wo du es sagst... ziehmal das script nochmal
ich hab aber auch die ausgabe geändert .. so kann man es direkt im JSON Table widget nutzen
[["07:00",0,0],["08:00",0.291,0.291],["09:00",1.333,1.624],["10:00",2.62,4.244],["11:00",3.213,7.457],["12:00",3.677,11.134],["13:00",3.686,14.82],["14:00",3.247,18.067],["15:00",1.353,19.42],["16:00",0,19.42]]
-
kommst du damit besser klar
const url = 'http://www.solarprognose.de/web/solarprediction/api/v1?_format=json&access-token=xxxxxxxxxxxxxxxxxxxxxx&item=location&id=xxxx&type=hourly'; const path = '0_userdata.0.Solar2'; schedule('4 8,10,12,14,16 * * *', function() { abfrage(); }); function abfrage() { httpGet(url, function (error, response) { if (error) { log(error, 'error'); } else { let obj = JSON.parse(response.data); dpCreate('', obj.data, 'string'); dpFill(obj); } }); } function dpFill(obj) { if (obj.status) { log('Fehler: ' + obj.status, 'warn'); } else { let data = obj.data; const outArray = formatAndSplitData(data); dpCreate('.heute', outArray.heute); dpCreate('.morgen', outArray.morgen); dpCreate('.uebermorgen', outArray.uebermorgen); } } function formatAndSplitData(data) { const SECONDS_IN_A_DAY = 86400; const MS_IN_A_SECOND = 1000; const now = new Date(); const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime(); const tomorrowStart = todayStart + SECONDS_IN_A_DAY * MS_IN_A_SECOND; const dayAfterTomorrowStart = tomorrowStart + SECONDS_IN_A_DAY * MS_IN_A_SECOND; const result = { heute: [], morgen: [], uebermorgen: [] }; for (const [timestamp, values] of Object.entries(data)) { const ts = Number(timestamp) * MS_IN_A_SECOND; // Convert timestamp to milliseconds const date = new Date(ts); const formattedTime = date.toLocaleTimeString("de-DE", { hour: "2-digit", minute: "2-digit" }); // Format as "hh:mm" const entry = [formattedTime, ...values]; if (ts >= todayStart && ts < tomorrowStart) { result.heute.push(entry); } else if (ts >= tomorrowStart && ts < dayAfterTomorrowStart) { result.morgen.push(entry); } else if (ts >= dayAfterTomorrowStart) { result.uebermorgen.push(entry); } } return result; } function dpCreate(text, data, typ) { createState(path + text + '.Json', [], false, { name: 'json' + text, type: typ == "string" ? typ : 'array', role: 'json', read: true, write: false }); setTimeout(function () { setState(path + text + '.Json', data, true); }, 600); }der genereirt nur arrays für heute morgen und übermorgen

die kannst du dann im blockly weiterverarbeiten
@arteck sagte in Scriptoptimierung Solarprognose:
kommst du damit besser klar
Ich habe das Skript mal hier implementiert, bekomme aber für
uebermorgenkeine Ergebnisse, obwohl ich heute beisolarprognose.dedie Prognose von 2 auf 3 Tage erhöht habe.
Hast Du eine Idee, woran das liegen könnte, und was hast Du da eingetragen?

-
@arteck sagte in Scriptoptimierung Solarprognose:
kommst du damit besser klar
Ich habe das Skript mal hier implementiert, bekomme aber für
uebermorgenkeine Ergebnisse, obwohl ich heute beisolarprognose.dedie Prognose von 2 auf 3 Tage erhöht habe.
Hast Du eine Idee, woran das liegen könnte, und was hast Du da eingetragen?

@meister-mopper ich weiss nicht wann die die Daten für welchen Tag zur verfügung stellen..

-
@meister-mopper ich weiss nicht wann die die Daten für welchen Tag zur verfügung stellen..

Ich glaub du mußt auch nochmal nach dem Script schauen, weil ich bei 'übermorgen' drei Tage im JSON drin stehen hab.
[["08:00",0,0],["09:00",0.237,0.237],["10:00",2.297,2.534],["11:00",2.928,5.462],["12:00",1.611,7.073],["13:00",1.399,8.472],["14:00",2.316,10.788],["15:00",0.543,11.331],["16:00",0,11.331],["07:00",0,0],["08:00",0.004,0.004],["09:00",0.157,0.161],["10:00",0.443,0.604],["11:00",0.641,1.245],["12:00",0.731,1.976],["13:00",0.726,2.702],["14:00",0.65,3.352],["15:00",0.429,3.781],["16:00",0,3.781],["08:00",0,0],["09:00",0.144,0.144],["10:00",0.443,0.587],["11:00",0.614,1.201],["12:00",0.702,1.903],["13:00",0.699,2.602],["14:00",0.59,3.192],["15:00",0.396,3.588],["16:00",0,3.588]]Ist mir erst gar nicht aufgefallen.
-
@arteck said in Scriptoptimierung Solarprognose:
poste mal den JSON aus dem Hauptordner
{"1733468400":[0,0],"1733472000":[0.144,0.144],"1733475600":[0.443,0.587],"1733479200":[0.668,1.255],"1733482800":[0.702,1.957],"1733486400":[0.753,2.71],"1733490000":[0.63,3.34],"1733493600":[0.56,3.9],"1733497200":[0,3.9],"1733551200":[0,0],"1733554800":[0.144,0.144],"1733558400":[0.21,0.354],"1733562000":[0.443,0.797],"1733565600":[0.614,1.411],"1733569200":[1.962,3.373],"1733572800":[1.775,5.148],"1733576400":[0.951,6.099],"1733580000":[1.068,7.167],"1733583600":[0,7.167],"1733637600":[0,0],"1733641200":[0.048,0.048],"1733644800":[0.157,0.205],"1733648400":[0.506,0.711],"1733652000":[3.037,3.748],"1733655600":[3.281,7.029],"1733659200":[2.798,9.827],"1733662800":[2.275,12.102],"1733666400":[1.092,13.194],"1733670000":[0,13.194],"1733727600":[0,0],"1733731200":[0.144,0.144],"1733734800":[0.443,0.587],"1733738400":[0.641,1.228],"1733742000":[0.761,1.989],"1733745600":[0.78,2.769],"1733749200":[0.65,3.419],"1733752800":[0.421,3.84],"1733756400":[0,3.84],"1733814000":[0,0],"1733817600":[0.144,0.144],"1733821200":[0.443,0.587],"1733824800":[0.614,1.201],"1733828400":[0.702,1.903],"1733832000":[0.699,2.602],"1733835600":[0.59,3.192],"1733839200":[0.396,3.588],"1733842800":[0,3.588]}



