NEWS
Vergleich Solarprognosen Solarwetter und brightsky
-
das ist influx oder history oder ...
-
@klassisch sagte in Vergleich Solarprognosen Solarwetter und brightsky:
für solche flot-Kurven vorbereiten?
Könnte das noch jemand brauchen?ja!!!
wie machst du das mit den arrays(?) von Datenpunkten im Voraus?@ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:
history
-
kannst doch die voraussage in die history hauen und dann mit dem ist wert anzeigen? Wobei ich keine solar werte in der Stundenvoraussage habe... hm, hab aber net heute morgen geguckt
-
@ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:
das ist influx oder history oder ...
Ja, bei mir ist es history. History nimmt einen Teil der Arbeit ab.
Man schreibt die Daten val und ts in den entsprechenden Datenpunkt mit setState.
Wenn man dann die Werte updaten will, hilft history beim Löschen. Entweder einzeln oder in einem Zeitbereich.
sendTo('history',deleteRange, id, start, end)
https://github.com/ioBroker/ioBroker.history/blob/master/docs/en/README.mdMan kann mit sendTo(history.0,
-
@ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:
kannst doch die voraussage in die history hauen und dann mit dem ist wert anzeigen?
ja mit setState in ein entsprechendes Objekt schreiben. Val und ts kann da reingeschrieben werden und die üblichen Flags und Datenquellen.
Wenn man dann eine neue Prognose auswirft, kann man die künftigen Daten mit Hilfe von History löschen und mit den neuen Prognosedaten beschreiben
Wobei ich keine solar werte in der Stundenvoraussage habe... hm, hab aber net heute morgen geguckt
Sollten doch da sein. Also doch, ja, sind doch da. solar_estimate pro Stunde. Habe ich gestern manuell ausgelesen und mit dem python Script und meinen Frickelscript verglichen.
-
@ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:
kannst doch die voraussage in die history hauen und dann mit dem ist wert anzeigen?
das kenne/kann ich nicht mit Timestamps in der Zukunft.
7ch schreibe immer nur aktuelle Daten in einen DP, der dann in history geloggt wird. -
@homoran sagte in Vergleich Solarprognosen Solarwetter und brightsky:
@ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:
kannst doch die voraussage in die history hauen und dann mit dem ist wert anzeigen?
das kenne/kann ich nicht mit Timestamps in der Zukunft.
Es geht aber so
// Neue Werte in die History schreiben myResultSteps.forEach(entry => { setState(id, { val: entry.val, ts: entry.ts, ack: true });
-
@klassisch und die json Datensätzen in den json files sehen dann so aus
{ "val": 331.37224828504077, "ack": 1, "ts": 1758261600000, "q": 0, "c": "script.js.EnergyManagement.PvForecastBrightSkyBased", "from": "system.adapter.javascript.0", "user": "system.user.admin" },
Das System kümmert sich auch darum, daß diese Files auch in die richtigen Tagesfolder geschrieben werden.
Für den user einfacher als gedacht.
Und @Homoran muß seine schönen Hüllkurven nicht ständig manuell anpassen -
@klassisch geht zwar inzwischen schon ins OT vom OT, aber egal.
ich hab jetzt diesen DP angelegt.
den werde ich wahrscheinlich historisiwren müssen, oder?und dann mit sendto füttern?
muss mal dein js verdauen und in Blockly transformieren, damit ich das auch später noch nachvollziehen und ggf. woanders einsetzen kann
EDIT:
Bild nachgeliefert -
@homoran sagte in Vergleich Solarprognosen Solarwetter und brightsky:
@klassisch geht zwar inzwischen schon ins OT vom OT, aber egal.
ich hab jetzt diesen DP angelegt.
Gutden werde ich wahrscheinlich historisieren müssen, oder?
Ja, history ankreuzen, damit history sich drum kümmert
und dann mit sendto füttern?
Ganz normal mit setState, wie oben gezeigt
muss mal dein js verdauen und in Blockly transformieren, damit ich das auch später noch nachvollziehen und ggf. woanders einsetzen kann
Na, wer weiß. Vielleicht kann das auch mal der Adapter?
Edit:
sendTo braucht man, wenn history Datensätze löschen soll.Edit2:
// Neue Werte in die History schreiben myResultSteps.forEach(entry => { setState(id, { val: entry.val, ts: entry.ts, ack: true });
myResultSteps ist ein array mit den einzelnen Wertepaaren (val, ts) in der Perlenkette.
forEach nudelt die von vorne bis hinten durch
Und steState gibt die weg ans Fremework und durch das history-Kreuzchen kümmert sich history drum und organsiert die files.
So stelle ich mir das vor. -
Und warum machen wir die Prognosen? Z.B. für das netzdienliche Einspeisen.
Unser Netzbetreiber zeigt die aktuelle (geschätzte??) Situation in unserem Ort -
@klassisch sagte in Vergleich Solarprognosen Solarwetter und brightsky:
Unser Netzbetreiber zeigt die aktuelle (geschätzte??) Situation in unserem Ort
ooh, dann weisst du sogar was der will.
muss mal suchen, ob es so etwas hier auch gibt. -
@klassisch sorry, Bild fehlte, hab's editiert
for each ist klar,
var id = DatenpunktID
hinzufügen ?? -
@homoran id ist der Datenpunkt. z.B. '0_userdata.0.power.pvFrDCEnergy.SolarForecastPowerSteps'
Edit: Tricky wird es, wenn neue Forcast-Werte kommen. Denn dann will man die alten (schlechteren) raus haben und muß löschen bevor man neue reinschreibt. Dabei hilft sendTo(history(id,'deleteRange' ...
-
man kanns aber auch einfach woanders hin spiegeln
-
@ticaki sagte in Vergleich Solarprognosen Solarwetter und brightsky:
man kanns aber auch einfach woanders hin spiegeln
Das habe ich nicht verstanden.
Einen anderen Datenpunkt nehmen? Also einen Datenpunkt für die 05:00 und einen anderen für die 08:00 Prognose?
Wenn man 24 oder 48h forecast hat, wird man ums löschen kaum herumkommen. -
@klassisch ja, so hab ich das verstanden und versucht
ich denke, den Rest muss ich in dem Textbaustein zusammenbauen.
Der Code hat zumindest schon eine leichte Ähnlichkeit
var id; id = 'Messwerte.0.Solaranlage.Prognosen.clearSkyHourly'; sendTo('history.0', 'send', { 'parameter': '' + String(id), });
EDIT:
manchmal muss man erst posten um das Zahnrad zu sehen
aber so richtig passt es auch nicht
var id; id = 'Messwerte.0.Solaranlage.Prognosen.clearSkyHourly'; sendTo('history.0', 'send', { 'id': id, 'val': '', 'ts': '', 'ack': '', });
-
@homoran das einfache Speichern geht zumindest im Skript mit setState.
Blockly kenne ich nicht -
Mal was kompliziertes - hab keine Lust das in den Adapter einzubauen
Klont einen Datenpunkt oder ein Verzeichnis (sourceDir) in das Verzeichnis (targetDir) und schreibt alle Datenpunkte mit dem Zeitstempel relativ zum tigger zeitpunkt (ahead)
Das log am Ende kann man auskommentieren - das macht nur was, wenn die datenpunkte triggern - außer den channel erstellen wo es rein soll.
Hoffe hab den bedarf richtig verstanden... na wenn nicht, das kann ich bestimmt mal selbst gebrauchen.
EDIT: Muss setObject in den Einstellungen aktiviert sein.
-
Frage an den Meister @ticaki : In der Konfig des Adapters kann man ja z.B. die Anzahl der forecast Stunden eingeben. Kann man diese Zahl irgendwo aus der Datenstruktur auslesen oder ermitteln?