[59_WUup.pm] Wetterdaten zu Wunderground hochladen

Begonnen von mahowi, 23 Januar 2017, 18:52:39

Vorheriges Thema - Nächstes Thema

Lucky2k12

Kein Problem, lass dir Zeit.
Was mir noch aufgefallen ist: Der Luftdruck scheint im Webfrontend bei Wunderground niedriger als der von mir gesendete. Sind das Rundungsfehler oder geht hier noch die Höhe irgendwie ein?
Danke!
HP T610, HM, Jeelink, LGW, mapleCUL868+434

mahowi

Wie groß ist denn der Unteschied?

Ich rechne nur von hPa nach inHg um. Die Höhe wird hier eigentlich nicht eingerechnet. Ich habe leider keine bessere Erklärung der API gefunden als http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol.

Ich benutze die Berechnungen aus UConv.pm, die entsprechende Sub sieht so aus:
# Pressure: convert hPa (hecto Pascal) to in (inches of Mercury)
sub hpa2inhg($;$) {
    my ( $data, $rnd ) = @_;
    return roundX( $data * 0.02952998751, $rnd );
}


Ich habe jetzt mal von Hand 1044 hPa umgerechnet und komme auf 30,82930696044 inHg. Wenn ich den Wert als baromin an WU sende, zeigt mir die Webseite
ZitatPressure:   1043.9 hPa
an.

Also scheint die Umrechnung korrekt zu sein.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Lucky2k12

Ich sehe momentan an meinem BME280 am LGW 1003 hPa. (Kann der keine Nachkommastellen)
Raus geht an wunderground 29.6 in Hg, (passt nach deiner Umrechnungsformel)
angezeigt wird im wunderground 1002.3 hPa. Die Kurve ist auch recht stufig.
1012.4, dann 1009, dann 1005.6 und jetzt eben 1002.3. Zwischenwerte gibt's nicht.

Scheint also einfach ein Rundungsfehler bei der Konvertierung bei wunderground zu sein.
Kein Problem, hat mich nur gewundert. ..
HP T610, HM, Jeelink, LGW, mapleCUL868+434

mahowi

Ja, blöde Umrechnerei bei den Amis.  ::)

Ich musste auch erstmal testen, ob WU inHg oder psi als Einheit nutzt, aus der Beschreibung der API geht das nicht hervor. Ich weiß auch nicht, ob WU nochmal die Höhe irgendwie einbezieht. Zumindest kann man der Einrichtung der PWS die Höhe über NN für den Standort angeben.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

mahowi

Ich hatte mal grad ein paar Minuten Zeit und hab was gebastelt.  ;)

Kannst Du mal die Version aus dem devel-Branch (https://raw.githubusercontent.com/mahowi/WUup/devel/FHEM/59_WUup.pm) testen? Da hab ich ein neues Attribut "unit_windspeed" hinzugefügt. Hier kann man wählen zwischen km/h und m/s, Standard ist km/h.

Müsste eigentlich funktionieren, aber ich komme im Moment nicht zum testen. Wenn es so geht, kann ich auch problemlos noch andere Einheiten hinzufügen.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Lucky2k12

#20
Super, ich probier es Heute Abend aus.

Noch was: Kannst du bitte den Funktionsaufruf von hpa2inhg mit einem zweiten Parameter $rnd=2 versehen, so dass auf 2 Nachkommastellen gerundet wird. Sonst verlieren wir (glaub ich) doch ziemlich viel Genauigkeit beim Luftdruck, da die Absolut-Werte um in inHg so niedrig sind:

elsif ( $key eq "baromin" ) {
            $value = UConv::hpa2inhg($value,2);
        }


Mein heutiger Plot von WU anbei


Das zweite ist, dass mein LGW keine Nachkommastellen im pressure Reading übermittelt.
Naja, nicht wirklich schlimm, aber ich wüsste schon gern, wo ich da drehen muss.  8)

HP T610, HM, Jeelink, LGW, mapleCUL868+434

mahowi

#21
So, neue Version ist im devel-Branch. Es wird jetzt auf 4 Stellen nach dem Komma gerundet. Damit werden aus den 1044 hPa, die ich zum testen nehme 1043,9 hPa auf WU. Auch mit noch mehr Stellen ändert sich der Wert nicht mehr.

Die Umrechnung von m/s in mph funktioniert jetzt auch. Ich hatte da vorher noch Tippfehler drin.

Warum Dein LGW keine Nachkommastellen für pressure ausgibt, weiß ich zwar nicht. Aber üblicherweise wird der Luftdruck in mbar bzw. hPa eigentlich nur ganzzahlig angegeben.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Lucky2k12

#22
Herzlichen Dank, auch für die schnelle Änderung!

Ich habs eingebaut bei mir. Soweit alles Bestens.
Den Luftdruck werde ich noch eine Weile beobachten, der ändert sich nicht so schnell wie der Wind :8
Luftdruck ging eben wieder hoch um ein hPa und wird bei WU sauber geplottet. Somit von mir grünes Licht! :)

In der LacrosseGateWay Software sind humidity und pressure als int angelegt, soweit ich sehen konnte. Also kein Wunder...
Macht ja wahrscheinlich auch Sinn, für so ungenaue Messdaten nicht mehr Speicherplatz als notwendig zu verbrauchen.
Im Plot siehts halt 'n bischen blöd aus, ist aber ein rein kosmetisches Problem  ;D
und das Rauschen der Signale kriegt man so auch recht gut in den Griff  :P
HP T610, HM, Jeelink, LGW, mapleCUL868+434

mahowi

Super, daß es jetzt klappt und die Werte auch genauer sind.  :)

Zur Zeit nutze ich nur Temperatur, Taupunkt und Luftfeuchtigkeit, daher weiß ich bei den anderen Werten nicht genau, was die Sensoren so übergeben.

Ich habe die neue Version auch fürs Update freigegeben.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

rabehd

Ich nutze das jetzt seit ein paar Tagen. Nachdem der disable-Fehler raus ist, ist alles bestens.

Für die Wunschliste habe ich aber auch noch was.
Als STATE wünsche ich mir den den letzten Übertragungsstatus (success, "error" und wenn disable "disable")

Danke fürs Modul (wie es jrzt schon ist)
Auch funktionierende Lösungen kann man hinterfragen.

mahowi

Schön, daß Dir das Modul gefällt.  :)

"disabled" sollte im STATE mittlerweile angezeigt werden. Die Rückgaben vom Server ("success", ...) stehen im Reading response. Das kannst Du über stateFormat umbiegen auf STATE:
attr WU stateFormat response

Alles unter einen Hut zu bringen, dürfte schwierig werden, daher ist es mir lieber, im STATE steht nur der aktuelle Zustand wie "active", "disabled", "defined".
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

rabehd

Das stimmt natürlich  >:( und mit ein wenig Logik bekomme ich den Rest auch hin.
Auch funktionierende Lösungen kann man hinterfragen.

mahowi

Ich nehme natürlich gerne Vorschläge entgegen, wie ich den Status besser gestalten kann.  :)

Ich guck mir das nächste Woche mal an, vielleicht fällt mir ja was ein. Bin erstmal ein paar Tage unterwegs.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

mahowi

Nachdem ich mich mal ein bißchen in HttpUtils eingelesen habe, habe ich im devel-Branch eine "non-blocking" Version eingecheckt. Der Code sieht zwar noch nicht besonders schön aus, aber bei mir funktioniert die Version.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

mclore

hallo in die Runde,
ich habe ein ähnliches Problem.
Die install. funzt aber er zeigt mir ein Fehler.
Mein Nachbar betreibt die Wetterstaion. Da möchte ich mich einklinken.
Ich hoffe auf konstruktive Hilfe :)


DeviceOverview
wetter_eigheim
???
Internals
BUSY
0
CHANGED
DEF   
http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=ISACHSEN314 30
Interval
30
LASTSEND
1495606115.85852
MainURL
http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=ISACHSEN314
ModuleVersion
3.3.11 - 8.5.2017
NAME
wetter_eigheim
NR
37
STATE
???
TRIGGERTIME
1495606145.85583
TRIGGERTIME_FMT
2017-05-24 08:09:05
TYPE
HTTPMOD
addr
http://api.wunderground.com:80
buf
code
200
conn
data
displayurl
http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=ISACHSEN314
header
host
api.wunderground.com
httpheader
HTTP/1.0 200 OK Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: http://www.wunderground.com Content-Type: text/xml Server: Apache/2.2.15 (CentOS) X-CreationTime: 0.007 Expires: Wed, 24 May 2017 06:08:36 GMT Cache-Control: max-age=0, no-cache Pragma: no-cache Date: Wed, 24 May 2017 06:08:36 GMT Content-Length: 2324 Connection: close Set-Cookie: DT=1495606116:30339:ip-10-226-237-178; path=/; expires=Fri, 01-Jan-2020 00:00:00 GMT; domain=.wunderground.com Set-Cookie: Prefs=FAVS:1|WXSN:1|PWSOBS:1|WPHO:1|PHOT:1|RADC:0|RADALL:0|HIST0:NULL|GIFT:1|PHOTOTHUMBS:50|; path=/; expires=Fri, 01-Jan-2020 00:00:00 GMT; domain=.wunderground.com
httpversion
1.0
hu_blocking
0
hu_filecount
137
hu_portSfx
ignoreredirects
0
loglevel
4
path
/weatherstation/WXCurrentObXML.asp?ID=ISACHSEN314
protocol
http
redirects
0
timeout
2
url
http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=ISACHSEN314
value
0