PV Erzeugung über forecast.solar

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

denni
Beiträge: 24
Registriert: 4. Sep 2019 15:25

Re: PV Erzeugung über forecast.solar

Beitrag von denni »

Hat jemand dazu eine Idee? Wie kann ich den String nachbearbeiten, damit ich den als Zahl habe?

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: PV Erzeugung über forecast.solar

Beitrag von udo1toni »

Es ist etwas unglücklich, nach über drei Monaten zu fragen "Hat jemand dazu eine Idee?" Schon allein, weil unglücklicherweise dieses Posting auf der nächsten Seite gelandet ist. :)

Du musst dafür sorgen, dass nur ein Wert zurückgegeben wird. Dieser darf nur Ziffern und maximal einen Dezimalpunkt enthalten, kein Komma.
JS gibt, wenn ich mich richtig erinnere, immer einen String aus. Enthält dieser String aber eine gültige Zahl ohne Unit, so kann ein Number Channel diesen String dennoch als Zahlenwert interpretieren und an ein Number Item weitergeben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

denni
Beiträge: 24
Registriert: 4. Sep 2019 15:25

Re: PV Erzeugung über forecast.solar

Beitrag von denni »

udo1toni hat geschrieben: 3. Apr 2022 16:10 Es ist etwas unglücklich, nach über drei Monaten zu fragen "Hat jemand dazu eine Idee?" Schon allein, weil unglücklicherweise dieses Posting auf der nächsten Seite gelandet ist. :)
Das stimmt, ist eine Weile her. Hatte jetzt erst wieder Zeit an dem Thema zu arbeiten. Ist tatsächlich etwas unglücklich.
udo1toni hat geschrieben: 3. Apr 2022 16:10 Du musst dafür sorgen, dass nur ein Wert zurückgegeben wird. Dieser darf nur Ziffern und maximal einen Dezimalpunkt enthalten, kein Komma.
JS gibt, wenn ich mich richtig erinnere, immer einen String aus.
Um das zu realisieren habe ich die JS Funktion angepasst:

pvforecastkwh.js

Code: Alles auswählen

(function(string) {
    var value = string.replace("["," ").replace("]"," ");
    var forecast = value.split(", ");
    return (forecast[1]/1000).toFixed(1);
})(input)
Das Ergebnis daraus sieht so aus: "27.8" (sichtbar auf der Sitemap).
Der Channel ist aber noch als "string" zugewiesen. Ich kann deshalb noch nicht direkt damit rechnen/vergleichen.

.things

Code: Alles auswählen

Thing http:url:forecastsolar "forecastsolar" [ authMode="BASIC", baseURL="https://api.forecast.solar", refresh=3600, stateMethod= "GET", timeout=40000, bufferSize=2048] {
        Channels:
            Type string  :  Solar_forecast       "PV_Vorhersage"     [ stateExtension="URL.json?time=minutes", stateTransformation="JSONPATH:$.result.watt_hours_day[*]" ]
}
.items

Code: Alles auswählen

String Solar_forecast    "PV_Vorhersage morgen [JS(pvforecastkwh.js):%s]"                  { channel="http:url:forecastsolar:Solar_forecast" }
udo1toni hat geschrieben: 3. Apr 2022 16:10 Enthält dieser String aber eine gültige Zahl ohne Unit, so kann ein Number Channel diesen String dennoch als Zahlenwert interpretieren und an ein Number Item weitergeben.
Wie würde dafür die Umsetzung in der .things grob aussehen?

.things

Code: Alles auswählen

Thing http:url:forecastsolar "forecastsolar" [ authMode="BASIC", baseURL="https://api.forecast.solar", refresh=3600, stateMethod= "GET", timeout=40000, bufferSize=2048] {
        Channels: 
        	Type number  :  Solar_forecast_number       "PV_Vorhersage [JS(pvforecastkwh.js):%s]"     [ stateExtension="URL.json?time=minutes", stateTransformation="JSONPATH:$.result.watt_hours_day[*]" ]
        	}
.items

Code: Alles auswählen

Number Solar_forecast_number_item    "PV_Vorhersage morgen"                                      { channel="http:url:forecastsolar:Solar_forecast_number" }
Ich hatte mal einen Ansatz probiert aber das klappt noch nicht.

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: PV Erzeugung über forecast.solar

Beitrag von udo1toni »

Aber Du nutzt ja gar kein JavaScript!?!

Kannst Du mal ein komplettes JSON Objekt posten, als Code? Hast Du evtl. auch scon mal gemacht, ich finde es aber weiter oben gerade nicht... Vermutlch muss nur das JSONPATH Statement etwas präzisiert werden, damit der richtige Wert im Channel landet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

denni
Beiträge: 24
Registriert: 4. Sep 2019 15:25

Re: PV Erzeugung über forecast.solar

Beitrag von denni »

Mit der Ergänzung hat es geklappt. Thema erledigt.

Code: Alles auswählen

stateTransformation="JSONPATH:$.result.watt_hours_day[*]∩JS:pvforecastkwh.js"

renek74
Beiträge: 62
Registriert: 26. Nov 2020 08:00

Re: PV Erzeugung über forecast.solar

Beitrag von renek74 »

denni hat geschrieben: 3. Apr 2022 18:50 Mit der Ergänzung hat es geklappt. Thema erledigt.

Code: Alles auswählen

stateTransformation="JSONPATH:$.result.watt_hours_day[*]∩JS:pvforecastkwh.js"
Hallo,
danke für den tollen Beitrag. Könntest Du bitte den jetzigen Stand komplett posten. Ich würde gerne bei mir auch den forecast einbinden.

Danke

Quautiputzli
Beiträge: 317
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: PV Erzeugung über forecast.solar

Beitrag von Quautiputzli »

Hallo, habt ihr auch ab und zu bei schlechtem Wetter extrem niedrige forecast Werte? Ich hab heute z.B. nur ca. 2 - 6 kWh bei einer 18kWp Anlage.
Servus

Quautiputzli
Beiträge: 317
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: PV Erzeugung über forecast.solar

Beitrag von Quautiputzli »

Bei mir liegen die forecast Werte oft sehr weit daneben, und machen während des Tages auch große Sprünge:
Bild_2022-11-03_065802719.png
Gibt es noch bessere Möglichkeiten an die forecast Werte zu kommen?
Ich überlege auch, ob ich nicht einfach die Bewölkung in Verbindung mit dem Monat auswerte, um den Ertrag abzuschätzen.
Ich steuere damit meine Wärmepumpe und den Hausakku, also einigermaßen verlässliche Werte wären nicht schlecht.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Servus

Antworten