Auswertung Lux und UV bei HP1000

Begonnen von Loredo, 21 November 2015, 11:15:54

Vorheriges Thema - Nächstes Thema

Loredo

Hallo,


meine HP1000 Wetterstation gibt mir zwei solare Werte mit an die Hand, bei denen ich nicht weiß, wie ich die brauchbar umrechnen und verwenden kann:

       
  • light in Lux im Bereich zwischen 0 und 300k (lt. Datenblatt)
  • UV in uW/cm2 (im Datenblatt steht kein Bereich, ich sehe am heutigen Herbsttag Werte bis ~530 bei Sonne, nachts fällt es auf 1-2)
Im Grunde stelle ich mir vor, dass ich dabei irgendwie errechnen kann, ob es gerade sonnig oder bewölkt ist. Auch den UV-Index würde ich gerne errechnen. Den zeigt die Station zwar an, schickt den errechneten Wert aber leider nicht über die Schnittstelle mit...


Ich habe schon versucht Formeln dafür im Internet zu finden, aber nichts für mich verwertbares gefunden  :-[


Hat sich damit schon jemand beschäftigt?






Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

cfexpert

Ist zwar eine etwas späte Antwort, aber vielleicht nützt es ja wem, der auf dasselbe Problem gestossen ist.

Der UV-Index ist im Wesentlichen eine Tabelle mit Werten von 1 - 11+. Werte über 10 kommen eher am Äquator vor. In unseren Breiten D/A/CH werden Werte über 10 maximal im Hochgebirge gemessen. Infos über die Tabelle gibt es in Wikipedia. Ich habe im Web auch keine Formel gefunden, die den Wert aus der HP1000 umsetzen kann, bin aber mit Trial und Error auf eine Gesetzmäßigkeit gestoßen, mit denen man die gelieferten UV-Werte der HP1000 so umrechnen kann, dass die Werte den angezeigten Werten am Display der HP1000 entsprechen.

0 = uv <= 100
1 = uv > 100 <= 450
2 = uv > 450 < 900
3 = uv > 900 < 1350

In eine Formel gebracht:

floor( ( uv - 100 ) / 450 + 1 )

ergibt den UV-Index zum gelieferten Wert der HP1000 ( floor schneidet die Kommastellen ab ).

Den Wert für das Licht berechne ich mit der Formel lux in wm/m^2:

round( light / 126.7 * 10 ) / 10 ( Kaufmännisches Runden auf eine Kommastelle. )

Loredo

#3
Super, danke! Nehme ich mit in das Modul auf.


Meinst du, du hast den Wert für das Reading luminosity nun nicht direkt aus dem light-Wert aus der Station übernommen, sondern nochmals umgerechnet?
Ich tue mich gerade schwer das einzuordnen bzw. einen ggf. anderen Namen für das Reading auszusuchen (und zu schauen, ob es in FHEM schon andere Module gibt, die diesen Wert verwenden und welchen Namen sie für das Reading verwenden).


Der Light Wert, wie ihn die Wetterstation schickt, sollte eigentlich in uW/cm2 sein. Für die Übermittlung an WeatherUnderground rechne ich den Wert mit *0.01 in W/m2 um. Sollte doch stimmen? Weshalb mach es Sinn den Wert so wie von dir vorgeschlagen umzurechnen und in FHEM zu speichern?


Ich bin bei den Messdaten nicht sonderlich informiert, hoffe du klärst mich auf :-)




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

cfexpert

Im Setup der HP1000 Wetterstation kann man bei den Solar Radiation Units verschiedenen Einheiten wählen (lux, ...). Ich habe w/m2 gewählt. Das wird am Display auch angezeigt. Die übermittelten Daten haben aber überhaupt nicht damit übereingestimmt. Ich habe dann sehr lange mit den Werten herumgespielt und bin eher empirisch auf diesen 126.7 gestossen. Irgendwo im Web habe ich mal eine Umrechnung gefunden mit Faktoren die in etwa diesem Wert entsprochen haben. Für meine Antwort von gestern, habe ich versucht die Stelle nochmals zu finden, allerdings ist es mir leider nicht gelungen. Also superwissenschaftlich ist der Wert gerade nicht. Das Handbuch ist ebenfalls nicht sehr ergiebig in dem Punkt.

Der Hintergrund für meine Umsetzung ist, dass ich nicht Wunderground verwende, sondern meinen eigenen Server betreibe. Die HP1000 sendet die Werte auf meinen Server auf die PHP landingpage (leider lässt sich diese ja nicht umstellen bzw. ändern). Die Daten werden dann mit CFML ( Lucee als OpenSource ColdFusion Server ) in einer MySQL DB gespeichert und mittels einer React.js App (Javascript) auf der Seite angezeigt. Wenn ich also neben dem Display der Wetterstation sitze, habe ich in Echtzeit auch immer die Möglichkeit die Werte mit der Webanzeige zu vergleichen. Und die Werte stimmen jetzt überein.

Danke übrigens für das tolle HP1000 Modul. Ich beschäftige mich erst seit wenigen Tagen mit FHEM und das war eines der ersten Module die ich sofort ausprobieren musste. In dieser Testphase sendet mein Server die Daten wieder an die FHEM Instanz retour, weil ich den günstigsten Flow, die Daten dann in beiden Systemen verarbeiten zu können, noch ausarbeiten muss.

Danke für Deine Bemühungen

Andreas





Loredo

Vielen Dank für deine Ausführungen!


Ich habe jetzt mal ein weiteres Reading "solarradiation" mit hinzugefügt. Mit deiner Berechnung wird dann jetzt auch der korrekte Wert an Wunderground übermittelt, meine Berechnung stimmte da nicht ansatzweise so gut wie deine, auch wenn es nicht rein wissenschaftlich sein mag.


Zitat von: cfexpert am 11 Oktober 2016, 08:33:02
In dieser Testphase sendet mein Server die Daten wieder an die FHEM Instanz retour, weil ich den günstigsten Flow, die Daten dann in beiden Systemen verarbeiten zu können, noch ausarbeiten muss.


Ich schaue mal, dass ich noch ein weiteres Attribut einbaue, bei dem man zusätzlich noch eine beliebige URL angeben kann, an die die Daten weitergereicht werden sollen (dann inkl. der selbst berechneten Werte innerhalb des Moduls).




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

cfexpert

Es sieht nun wirklich sehr gut aus. Unstimmigkeiten gibt es glaube ich noch bei den Windgeschwindigkeiten. Mit meiner Einstellung kommen da von der HP1000 m/sec daher.

Die km/h errechne ich deshalb aus den gelieferten Werten für die Anzeige folgendermassen:


public function getWindSpeed(){
// mph = 1,609
// kn = 1,852
// m/sec = 3600
return round( ( windspeed * 36 ) ) / 10;
}

public function getWindGust(){
return round( ( windGust * 36 )   ) / 10;
}


Vielleicht kannst Du das mit den Werten auf Deiner Wetterstation vergleichen.

Mein ursprünglicher Ausgangspunkt war dieser nützliche Link: http://wetter.mxberlin.de/technik.php spezielle das PHP-Script updateweatherstation.php. Wie aber bereits in den vorherigen Beiträgen geschildert, musste da noch ein wenig an den Methoden gedreht werden. Vor Allem bei Licht, UV-Index und Windgeschwindigkeit.

Grüße

Andreas

Loredo

Kannst du vielleicht einfach einmal hier den gesamten Datenstrom posten, den deine Station schickt? Dann kann ich besser vergleichen.
Welche Einstellungen hast du in der Station gesetzt? Andere berichten, dass es komischerweise für sie einen Unterschied macht, ob sie dort z.B. "PHP", "ASP" oder "JSP" bei der Serverart auswählen. Etwas absurd dieses Verhalten der Firmware... ich konnte bei mir allerdings keine Ungereimtheiten dieser Art feststellen (außer, dass ich keine IP Adresse als Server angeben kann, sondern es ein DNS Name sein muss wie in der Commandref erwähnt).
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

cfexpert

#8
Hier ein Auszug aus dem Logfile mit Einträgen von Mitternacht und aktuell:


10.0.0.199 - - [12/Oct/2016:00:00:11 +0200] "GET /weatherstation/updateweatherstation.php?ID=pfalzg&PASSWORD=&intemp=22.6&outtemp=7.1&dewpoint=5.6&windchill=4.2&inhumi=46&outhumi=90&windspeed=4.4&windgust=5.5&winddir=335&absbaro=994.7&relbaro=996.4&rainrate=0.0&dailyrain=0.0&weeklyrain=0.6&monthlyrain=35.4&yearlyrain=558.9&light=0.0&UV=2&dateutc=2016-10-11%2022:0:12&softwaretype=HP1000%20V2.2.2&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0" 200 187 "-" "-"
10.0.0.199 - - [12/Oct/2016:00:00:27 +0200] "GET /weatherstation/updateweatherstation.php?ID=pfalzg&PASSWORD=&intemp=22.6&outtemp=7.1&dewpoint=5.6&windchill=5.5&inhumi=46&outhumi=90&windspeed=2.3&windgust=3.3&winddir=304&absbaro=994.7&relbaro=996.4&rainrate=0.0&dailyrain=0.0&weeklyrain=0.6&monthlyrain=35.4&yearlyrain=558.9&light=0.0&UV=2&dateutc=2016-10-11%2022:0:28&softwaretype=HP1000%20V2.2.2&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0" 200 187 "-" "-"
10.0.0.199 - - [12/Oct/2016:00:00:29 +0200] "GET /weatherstation/updateweatherstation.php?ID=pfalzg&PASSWORD=&intemp=22.6&outtemp=7.1&dewpoint=5.6&windchill=5.5&inhumi=46&outhumi=90&windspeed=2.3&windgust=3.3&winddir=304&absbaro=994.8&relbaro=996.5&rainrate=0.0&dailyrain=0.0&weeklyrain=0.6&monthlyrain=35.4&yearlyrain=558.9&light=0.0&UV=2&dateutc=2016-10-11%2022:0:29&softwaretype=HP1000%20V2.2.2&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0" 200 187 "-" "-"
10.0.0.199 - - [12/Oct/2016:10:38:53 +0200] "GET /weatherstation/updateweatherstation.php?ID=pfalzg&PASSWORD=&intemp=22.3&outtemp=8.2&dewpoint=5.7&windchill=6.6&inhumi=45&outhumi=84&windspeed=2.6&windgust=4.4&winddir=276&absbaro=996.1&relbaro=997.8&rainrate=0.0&dailyrain=0.0&weeklyrain=0.6&monthlyrain=35.4&yearlyrain=558.9&light=12528.1&UV=285&dateutc=2016-10-12%208:38:53&softwaretype=HP1000%20V2.2.2&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0" 200 187 "-" "-"
10.0.0.199 - - [12/Oct/2016:10:39:09 +0200] "GET /weatherstation/updateweatherstation.php?ID=pfalzg&PASSWORD=&intemp=22.3&outtemp=8.2&dewpoint=5.7&windchill=6.8&inhumi=45&outhumi=84&windspeed=2.3&windgust=3.3&winddir=202&absbaro=996.1&relbaro=997.8&rainrate=0.0&dailyrain=0.0&weeklyrain=0.6&monthlyrain=35.4&yearlyrain=558.9&light=12575.8&UV=289&dateutc=2016-10-12%208:39:9&softwaretype=HP1000%20V2.2.2&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0" 200 187 "-" "-"
10.0.0.199 - - [12/Oct/2016:10:39:41 +0200] "GET /weatherstation/updateweatherstation.php?ID=pfalzg&PASSWORD=&intemp=22.2&outtemp=8.2&dewpoint=5.7&windchill=5.8&inhumi=45&outhumi=84&windspeed=3.9&windgust=5.5&winddir=281&absbaro=995.7&relbaro=997.4&rainrate=0.0&dailyrain=0.0&weeklyrain=0.6&monthlyrain=35.4&yearlyrain=558.9&light=12559.9&UV=291&dateutc=2016-10-12%208:39:41&softwaretype=HP1000%20V2.2.2&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0" 200 187 "-" "-"



Die genauen Einstellungen der Wetterstation schaffe ich erst am Wochenende. Gewählt habe ich auf jeden Fall die Serverart "PHP". Ich denke nicht, dass die Einstellungen auf den GET String zu Wunderground einen Einfluss haben. Wäre ja komisch, wenn da jeder seine individuellen Einstellungen hinsenden könnte. Ich denke, dass das standardisiert sein sollte. Aber es gibt nichts, was es nicht gibt  :-\


Andreas

Loredo

Hallo Andreas,


bist du sicher, dass es sich hierbei um m/s Angaben bei der Windgeschwindigkeit handelt?
Ich bin ziemlich sicher, dass es sich bereits um km/h Angaben handelt, weshalb ich die m/s selbst berechne und in die Readings mit der Endung "Mps" schreibe. Da die Station beim Wechsel zwischen Celsius und Fahrenheit auch zwischen mph und eben vermutlich km/h umschaltet, ist es nicht wahrscheinlich, dass die Angaben beim metrischen System plötzlich in m/s sind. Dann würden die Angaben ja auch in ft/s kommen...


Ich kann das ganze mangels Wind draußen nicht wirklich gut versuchen nachzustellen. Daher bleibt das nun erstmal so wie es ist mit der Annahme, dass km/h geliefert werden und die m/sec berechnet werden müssen.


Das gerade eingecheckte Update bietet hierbei nun alle Readings sowohl im metrischen als auch im angloamerikanischen System. Siehe auch hier:
https://forum.fhem.de/index.php/topic,44022.msg505009.html#msg505009
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

cfexpert

Hallo Julian,

anbei habe ich meine aktuelle Konfiguration der HP1000 zur Info angehängt. In den Web-Einstellungen ist der

Server-Typ: PHP,
Upload-Typ: Voreinstellung

Bei mir ist es definitiv so, dass trotz eingestellter und angezeigter Windgeschwindigkeit in der Einheit km/h im Datenstream nicht derselbe Wert wie am Display angezeigt angekommen ist. Zuerst dachte ich, dass der Datenstream automatisch und standardisiert mph, sendet, aber erst die Umrechnung von m/s auf km/h hat dann passenden Wert ergeben. Meine Wetterstation liegt auf einer ca. 10km langen Linie ziemlich genau zwischen 2 amtlichen Messstationen, und nach der Umrechnung waren die Werte dann auch plausibel, verglichen mit den Messergebnissen dieser meteorologischen Stationen. Am Besten, Du vergleichst bei geeigneten Wind Deine Werte am Display mit den Werten in FHEM. Könnte ja auch sein, dass bei der Einstellung des Upload-Typs "Benutzerdefiniert" anstatt "Voreinstellung" andere Standardwerte gesendet werden.

Ich selbst habe versucht am Wochenende testweise die Einheiten zu ändern. Z.B.: von km/h auf Knoten oder Fahrenheit statt Celsius. Der Datenstream hat sich aber danach nicht wirklich verändert, obwohl das Display dann die Zahlen und Einheiten gemäß neuer Einstellung angezeigt hat. Ich habe allerdings die Wetterstation nicht neu gestartet.

Danke auf jeden Fall für die zusätzlichen Werte im Modul.

Andreas

Loredo

Ich habe die Werte für die windGust und windSpeed Readings gerade auf km/h korrigiert.
Dafür werden die von der Station gelieferten Werte nun direkt für windSpeedMps und windGustMps genommen.


Ab morgen dann per Update abrufbar.
Außerdem sind alle Einheiten Umrechnungen nun in einer extra Perl Klasse ausgelagert (UConv.pm), um sie ggf. auch woanders in FHEM nutzbar zu machen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

scooty

Zitat von: Loredo am 22 Oktober 2016, 15:25:08
Außerdem sind alle Einheiten Umrechnungen nun in einer extra Perl Klasse ausgelagert (UConv.pm), um sie ggf. auch woanders in FHEM nutzbar zu machen.
Eine vielleicht dumme Frage und auch etwas Off-Topic, aber kann man diese Konvertierungsfunktionen aus der UConv.pm dann auch in z.B. User-Readings von Devices verwenden?

Viele Grüße,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol