tägliche Regenmenge mit DarkSky (via Weather)

Begonnen von babbeldoo, 14 März 2019, 18:30:48

Vorheriges Thema - Nächstes Thema

babbeldoo

Hallo,

ich hatte vorher Wunderground im Einsatz bevor diese kürlich abgeschaltet wurde und bin daraufhin zu Weather i.V.m. DarkSky gewechselt.
Bei Wunderground gab es einen Wert 'rain_day' für die gefallene Regenmenge / Tag. Nicht auf den zehntel mm genau aber für meine Zwecke ausreichend.

Ich komme bei DarkSky noch nicht dahinter, wie ich mir diesen Wert holen kann. Mein Verständnis:

hfc1_precipIntensity : voraussichtliche Regenmenge für die nächste Stunde
fc1_precipIntensity : voraussichtliche Regenmenge für den aktuellen Tag
precipIntensity : aktuelle Regenmenge (bis zur nächsten Abfrage)

Hat jemand eine Idee oder sogar bereits umgesetzt wie die tägliche Regenmenge ermittelt werden kann? Steh irgendwie gerade auf dem Schlauch...

CoolTux

laut https://darksky.net/dev/docs#forecast-request

Zitat
precipIntensity optional
The intensity (in inches of liquid water per hour) of precipitation occurring at the given time. This value is conditional on probability (that is, assuming any precipitation occurs at all).
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Dr. Boris Neubert

Ich bin mir nicht sicher, welchen Wert babbeldoo wissen will. Meinst Du die tatsächliche gefallene Regenmenge an einem bestimmten Tag ex post?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

babbeldoo

Ja, ich meine den Tageswert kumuliert.

precipIntensity ist nach meinem Verständnis der, zum Zeitpunkt der Abfrage (habe das gestern mal beobachtet - da nimmt der im Verlauf des Abends dann ab weil der Regen nachlässt).

Bsp.: Wenn ich akt. auf die Web Page von darksky zu meinem Ort schaue, sind  'Regen 9.4 mm' gefallen.
Die Werte in FHEM sind:
> precipIntensity: 0.0025 (quasi Null; es regnet auch gerade nicht)
> hfc1_precipIntensity (21:00): 0.0102 (auch quasi Null)
> fc1_precipIntensity: 0.3912 (*25,4 = 9,94 mm - kommt dem angeblichen Ist-Wert im Forecast noch am nächsten)

babbeldoo

...nur mal so als Zwischenstand: Ich experimentiere gerade mit 'statistics' und Summieren der Std-Werte herum...
Mal schauen wie verlässlich das Ergebnis im Vergleich zu den Wetterseiten-Summen ist.

holle75

#5
Das mit dem Regen und der Regenwahrscheinlichkeit ist bei DarkSky imho recht undurchsichtig gelöst.

Ich brödel da auch schon seit Wochen rum.

Zum Einen frag ich mich, was die Werte die DarkSky liefert für eine Einheit haben (@cooltux holt deine api ca/si ab? @Boris wandelst du im Modul noch irgendwas um?)

units=[units]

Return weather conditions in the requested units. [units] should be one of the following:

    auto: automatically select units based on geographic location
    ca: same as si, except that windSpeed and windGust are in kilometers per hour
    uk2: same as si, except that nearestStormDistance and visibility are in miles, and windSpeed and windGust in miles per hour
    us: Imperial units (the default)
    si: SI units

SI units are as follows:

    summary: Any summaries containing temperature or snow accumulation units will have their values in degrees Celsius or in centimeters (respectively).
    nearestStormDistance: Kilometers.
    precipIntensity: Millimeters per hour.
    precipIntensityMax: Millimeters per hour.
    precipAccumulation: Centimeters.
    temperature: Degrees Celsius.
    temperatureMin: Degrees Celsius.
    temperatureMax: Degrees Celsius.
    apparentTemperature: Degrees Celsius.
    dewPoint: Degrees Celsius.
    windSpeed: Meters per second.
    windGust: Meters per second.
    pressure: Hectopascals.
    visibility: Kilometers.


zum Anderen wäre natürlich, wie zB von Proplana gewohnt, eine WetterVORHERsage über die Regenmenge nützlich.

PrecipIntensity ist eigentlich "hourlyRainRate" also Niederschlagsstärke-/Intensität -> Regenmenge pro Stunde

Ist der Begriff aus Versehen von DarkSky für Regenmenge/Tag gewählt? Resp. meint eben nicht Tagesmenge sondern stärkster Regenfall an diesem Tag? Das würde einen Wert fcx_precipIntensityMaxTime erkären. In der Api-Beschreibung gibt es aber auch einen Wert PrecipAccumulation, aber nur für Schnee .... man wundert sich.

Mein Workaround ist ein Userreading, welches die 24 nächsten stündlichen PrecipIntensities addiert.



Regenmenge24h:.*_precipIntensity.*
{
my $hdmsum = 0;;
my $hdmvalue = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipIntensity",0);;
$hdmsum = $hdmsum + $hdmvalue;;
};;
return sprintf("%.1f",$hdmsum);;
}



würden die addierten hfc Werte dann das Tages fc ergeben?

Da ich seit Wochen einfach keinen Regen vorhergesagt bekomme ist das alles stochern in Vermutungen.

Den selben Heckmeck habe ich mit der Regenwahrscheinlichkeit.
Regenwahrscheinlichkeit24h:.*_precipProbability.*
{
my $hdmvalue = 0;;
my $hdmzwischen = 0;;
my $hdmklammerkomplett = 1;;
my $hdmtotal = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipProbability",0);;
$hdmzwischen = 1 - ($hdmvalue / 100.0);;
$hdmklammerkomplett = $hdmklammerkomplett * $hdmzwischen;;
};;
$hdmtotal = (1 - $hdmklammerkomplett) * 100.0;;
return sprintf("%d",$hdmtotal);;
}


Danke für die Stochastik-Formel von @hsepm .... würde das den selben Wert wie fc1_precipProbability ergeben?

@babbel: deine Multiplikation mit 25,4 wegen Inches in mm nehme ich an. Ist die Einheit die die Api ausspuckt Inches?

Falls @cooltux und @Boris hier vielleicht ein wenig Licht in meine Umdunkelung bringen könnten wäre das sehr nett.

@babbel, ich hoffe, das sich mein Beitrag auch auf deine Frage bezieht wenn ich hier schon mitposte.


CoolTux

Zitat von: holle75 am 28 März 2019, 18:41:59
Das mit dem Regen und der Regenwahrscheinlichkeit ist bei DarkSky imho recht undurchsichtig gelöst.

Ich brödel da auch schon seit Wochen rum.

Zum Einen frag ich mich, was die Werte die DarkSky liefert für eine Einheit haben (@cooltux holt deine api ca/si ab? @Boris wandelst du im Modul noch irgendwas um?)

units=[units]

Return weather conditions in the requested units. [units] should be one of the following:

    auto: automatically select units based on geographic location
    ca: same as si, except that windSpeed and windGust are in kilometers per hour
    uk2: same as si, except that nearestStormDistance and visibility are in miles, and windSpeed and windGust in miles per hour
    us: Imperial units (the default)
    si: SI units

SI units are as follows:

    summary: Any summaries containing temperature or snow accumulation units will have their values in degrees Celsius or in centimeters (respectively).
    nearestStormDistance: Kilometers.
    precipIntensity: Millimeters per hour.
    precipIntensityMax: Millimeters per hour.
    precipAccumulation: Centimeters.
    temperature: Degrees Celsius.
    temperatureMin: Degrees Celsius.
    temperatureMax: Degrees Celsius.
    apparentTemperature: Degrees Celsius.
    dewPoint: Degrees Celsius.
    windSpeed: Meters per second.
    windGust: Meters per second.
    pressure: Hectopascals.
    visibility: Kilometers.


zum Anderen wäre natürlich, wie zB von Proplana gewohnt, eine WetterVORHERsage über die Regenmenge nützlich.

PrecipIntensity ist eigentlich "hourlyRainRate" also Niederschlagsstärke-/Intensität -> Regenmenge pro Stunde

Ist der Begriff aus Versehen von DarkSky für Regenmenge/Tag gewählt? Resp. meint eben nicht Tagesmenge sondern stärkster Regenfall an diesem Tag? Das würde einen Wert fcx_precipIntensityMaxTime erkären. In der Api-Beschreibung gibt es aber auch einen Wert PrecipAccumulation, aber nur für Schnee .... man wundert sich.

Mein Workaround ist ein Userreading, welches die 24 nächsten stündlichen PrecipIntensities addiert.



Regenmenge24h:.*_precipIntensity.*
{
my $hdmsum = 0;;
my $hdmvalue = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipIntensity",0);;
$hdmsum = $hdmsum + $hdmvalue;;
};;
return sprintf("%.1f",$hdmsum);;
}



würden die addierten hfc Werte dann das Tages fc ergeben?

Da ich seit Wochen einfach keinen Regen vorhergesagt bekomme ist das alles stochern in Vermutungen.

Den selben Heckmeck habe ich mit der Regenwahrscheinlichkeit.
Regenwahrscheinlichkeit24h:.*_precipProbability.*
{
my $hdmvalue = 0;;
my $hdmzwischen = 0;;
my $hdmklammerkomplett = 1;;
my $hdmtotal = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipProbability",0);;
$hdmzwischen = 1 - ($hdmvalue / 100.0);;
$hdmklammerkomplett = $hdmklammerkomplett * $hdmzwischen;;
};;
$hdmtotal = (1 - $hdmklammerkomplett) * 100.0;;
return sprintf("%d",$hdmtotal);;
}


Danke für die Stochastik-Formel von @hsepm .... würde das den selben Wert wie fc1_precipProbability ergeben?

@babbel: deine Multiplikation mit 25,4 wegen Inches in mm nehme ich an. Ist die Einheit die die Api ausspuckt Inches?

Falls @cooltux und @Boris hier vielleicht ein wenig Licht in meine Umdunkelung bringen könnten wäre das sehr nett.

@babbel, ich hoffe, das sich mein Beitrag auch auf deine Frage bezieht wenn ich hier schon mitposte.

Die API Wandelt bei diesem Wert nichts um. Das wird eins zu eins übergeben und auch Weather macht da nichts.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

holle75

Zitat von: CoolTux am 28 März 2019, 19:37:22
Die API Wandelt bei diesem Wert nichts um. Das wird eins zu eins übergeben und auch Weather macht da nichts.

holt die API ca/si ab?

babbeldoo

da sich das mit der Regenbeobachtung aufgrund mangelnden Niederschlags bzw. geschäftlich bedingt noch nicht wirklich in eine langen Serie beobachten lässt, hier aber mal die Beobachtung von drei Tagen:

                        DS Web   WundergroundApp   mi_WeatherDS#R-d mi_WeatherDS#R-d2 mi_WeatherNetatmo
18.03. 19:01   0,85mm   n/a                      1,03mm              n/a                        0,82mm
19.03. 18:43   0,06mm   n/a                      0,02mm              0,00mm                0,16mm
25.03. 19:36   2,70mm   0,51mm               2,73mm              0,66mm                0,66mm

Dabei ist "DS Web" die angegebene, angebliche Regenmenge pro Tag; Wunderground kann ich als App noch nutzen-deshalb die entsprechende Tagesregenmenge (hatte zwei Tage Connectionprobleme); mi_WeatherDS#R-d ist die kumulierte Tagesmenge aus der Statistik in DarkSky 'precipIntensity';  mi_WeatherDS#R-d2 ist die kumulierte Tagesmenge aus der Statistik in DarkSky 'precipIntensity * precipProbability'; mi_WeatherNetatmo ist die kumulierte Tagesmenge aus der Statistik in Netatmo Station aus meiner Nähe.
Ich tendiere aktuell dazu, dass der über Statistik kumulierte Wert aus Intensity + Probability dem Ganzen am nächsten kommt...

P.S. Die Umrechnung von Inch nach mm habe ich entfernt. Der Wert wird zu groß und ich gehe davon aus, die Ergebnisse werden in mm geliefert.

CoolTux

Zitat von: holle75 am 28 März 2019, 19:44:43
holt die API ca/si ab?
Es wird im auto Mode abgerufen
Zitatautomatically select units based on geographic location

Für Deutschland also si
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

mohel

Hallo zusammen,
ich wollte nur kurz fragen, ob es bzgl. diesem Thema noch etwas Neues gibt? Ich wäre an den Regenmengen die letzen 24h oder die nächsten 24h auch sehr interessiert für meine kleine Gartenbewässerung über KNX.

@babbeldoo oder holle75: Gibt es bei euren Ideen neu neue Entwicklungen. Wäre sehr interessiert, könnte mich auch bzgl. Tests beteilgen.

Cool wäre natürlich ein Reading evtl. in das WEATHER Modul zentral mit zu übernehmen.

Viele Grüße,
mohel

holle75

#11
auf schnell. Das ist als attr userReadings (anlegen und das hier RAW reinkopieren) Regenmenge und Regenwahrscheinlichkeit die nächsten 24h, plus Windböen mit mehr als 59km/h die nächsten 48h ab ersten Wert in dieser Zeit.

Regenmenge24h:current_date_time:.*
{
my $hdmsum = 0;;
my $hdmvalue = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipIntensity",0);;
$hdmsum = $hdmsum + $hdmvalue;;
};;
return sprintf("%.1f",$hdmsum);;
},
Regenwahrscheinlichkeit24h:current_date_time:.*
{
my $hdmvalue = 0;;
my $hdmzwischen = 0;;
my $hdmklammerkomplett = 1;;
my $hdmtotal = 0;;
for (my $i=1; $i<=24; $i++)
{
$hdmvalue = ReadingsVal("WetterDarkSkyModul", "hfc".$i."_precipProbability",0);;
$hdmzwischen = 1 - ($hdmvalue / 100.0);;
$hdmklammerkomplett = $hdmklammerkomplett * $hdmzwischen;;
};;
$hdmtotal = (1 - $hdmklammerkomplett) * 100.0;;
return sprintf("%d",$hdmtotal);;
},
WindWertMail:current_date_time:.*
{
for (my $n=1; $n<=48; $n++)
{
if (ReadingsVal("WetterDarkSkyModul", "hfc".$n."_windGust",0)>59)
{return ReadingsVal("WetterDarkSkyModul", "hfc".$n."_windGust","")." km/h Boen in ".$n." Stunden am ".ReadingsVal("WetterDarkSkyModul", "hfc".$n."_pubDate","");;}

};;
return "normal";;
}


PS: für Werte Rückwirkend bediene ich mich einer Wetterstation. Da hat Loredo ein ganz tolles Modul kreiert -> HP1000 (und andere für andere Wetterstationen wahrscheinlich auch)

mohel

super, danke dir, das probier ich mal aus.