Modul für Weather Underground / Wunderground

Begonnen von Loredo, 26 Oktober 2016, 01:31:36

Vorheriges Thema - Nächstes Thema

ch.eick

Zitat von: DeeSPe am 14 Januar 2020, 16:20:47
Ich denke die Lösung dafür hättest Du schneller gefunden als hier den Text dafür zu schreiben.
°C = (°F - 32) * 5/9

Du hast natürlich Recht, ich war im regex Tunnel gefangen :-)
Entschuldige die Störung....


temperature { round((ReadingsNum($name,"temperature_F",0) - 32) * 5/9 , 2) },
dewpointTemperature { round((ReadingsNum($name,"dewpointTemperature_F",0) - 32) * 5/9 , 2) }


Viele Grüße
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

CoolTux

Zitat von: ch.eick am 14 Januar 2020, 17:31:42
Wie bereits geschrieben scheint die api ohne ein uploader zu sein nicht mehr zu funktionieren.
Ansonsten hätte ich nicht damit angefangen.
Ich denke das geht dann auch nicht, oder liege ich da falsch.

Bisher hatte ich immer diese definition verwendet.
defmod wetter_Test HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IGROGERA47 3600
natürlich mit den ganzen attr....

Gruß
    Christian

Natürlich geht es. Lese Dich einfach mal in das Weather Modul ein.
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

ch.eick

Wenn Du von Wetter Modul schreibst meinst Du aber nicht HTTPMOD auf die API, denn das läuft bei mir nicht mehr.
Und einen API Key für https://fhem.de/commandref.html#Wunderground habe ich auch nicht, weil ich kein Uploader bin.
So wie ich es gelesen habe bekomme ich den nur wenn ich eine Station betreibe und anmelde.

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

CoolTux

Zitat von: ch.eick am 14 Januar 2020, 17:48:05
Wenn Du von Wetter Modul schreibst meinst Du aber nicht HTTPMOD auf die API, denn das läuft bei mir nicht mehr.
Und einen API Key für https://fhem.de/commandref.html#Wunderground habe ich auch nicht, weil ich kein Uploader bin.
So wie ich es gelesen habe bekomme ich den nur wenn ich eine Station betreibe und anmelde.

Gruß
    Christian

Nein ich meine das Modul 59_Weather.pm welchem man beim definieren seit einem Jahr ein API Modul mit übergeben kann. Julian hat für Wundergrund auch so ein API Modul geschrieben so das das Modul 59_Weather auch wunderground Daten holen kann.
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

ch.eick

Zitat von: CoolTux am 14 Januar 2020, 18:00:29
Nein ich meine das Modul 59_Weather.pm welchem man beim definieren seit einem Jahr ein API Modul mit übergeben kann. Julian hat für Wundergrund auch so ein API Modul geschrieben so das das Modul 59_Weather auch wunderground Daten holen kann.
Okay, da wird jedoch auch ein API Key benötigt. Ich schau es mir gleich mal an.

Vielen Dank
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#320
Hier noch ein Update

Meine bisherigen regex für wunderground, ohne Anmeldung und ohne API Key.

defmod wetter_Test HTTPMOD https://www.wunderground.com/dashboard/pws/[Wetterstation] 3600
attr wetter_Test alias wetter_Test
attr wetter_Test event-on-change-reading dewpointTemperature,humidity,preciptodaymetric,pressure,solarRadiation,solarUV,temperature,windDegrees,windGust,windSpeed,precip1hrmetric
attr wetter_Test icon weather_sunrise
attr wetter_Test reading01Name date
attr wetter_Test reading01Regex Summary.*>([[:alpha:]]{1,8} [\d]{1,2}, [\d]{4})<.*Temperature
attr wetter_Test reading02Name dewpointTemperature
attr wetter_Test reading02OExpr round(($val - 32) * 5/9 , 2)
attr wetter_Test reading02Regex DEWPOINT.*>([\d\.]+)<.*HUMIDITY
attr wetter_Test reading03Name dewpointTemperature_EN
attr wetter_Test reading03Regex DEWPOINT.*>([\d\.]+)<.*HUMIDITY
attr wetter_Test reading04Name humidity
attr wetter_Test reading04Regex HUMIDITY.*>([\d\.]+)<.*WIND
attr wetter_Test reading05Name precip1hrmetric
attr wetter_Test reading05Regex PRECIP RATE.*>([\d\.]+)<.*PRECIP TOTAL
attr wetter_Test reading06Name preciptodaymetric
attr wetter_Test reading06Regex PRECIP TOTAL.*>([\d\.]+)<.*tile-precipitation
attr wetter_Test reading07Name pressure
attr wetter_Test reading07Regex CURRENT.*>([\d\.]+)<.*tile-pressure
attr wetter_Test reading08Name solarRadiation
attr wetter_Test reading08Regex SOLAR RADIATION.*CURRENT.*weather__text">([\d\.]+)
attr wetter_Test reading09Name solarUV
attr wetter_Test reading09Regex CURRENT UV.*>([\d\.]+)<.*UV RISK
attr wetter_Test reading10Name temperature
attr wetter_Test reading10OExpr round(($val - 32) * 5/9 , 2)
attr wetter_Test reading10Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT
attr wetter_Test reading11Name temperature_EN
attr wetter_Test reading11Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT
attr wetter_Test reading12Name windChill
attr wetter_Test reading12OExpr round(($val - 32) * 5/9 , 2)
attr wetter_Test reading12Regex Feels Like.*>([\d\.]+)<.*wind-dial__container
attr wetter_Test reading13Name windChill_EN
attr wetter_Test reading13Regex Feels Like.*>([\d\.]+)<.*wind-dial__container
attr wetter_Test reading15Name windDirection
attr wetter_Test reading15OMap E:O, NE:NO, SE:SO, ENE:ONO, NNE:NNO, ESE:OSO, SSE:SSO
attr wetter_Test reading15Regex WIND FROM.*>([NESW]+)<.*GUST
attr wetter_Test reading16Name windDirection_EN
attr wetter_Test reading16Regex WIND FROM.*>([NESW]+)<.*GUST
attr wetter_Test reading17Name windGust
attr wetter_Test reading17OExpr round($val * 1.609 , 1)
attr wetter_Test reading17Regex wind-dial__container.*>([\d\.]+)<.*unit-speed
attr wetter_Test reading18Name windSpeed_EN
attr wetter_Test reading18Regex wind-dial__container.*>([\d\.]+)<.*unit-speed
attr wetter_Test reading19Name windGust
attr wetter_Test reading19OExpr round($val * 1.609 , 1)
attr wetter_Test reading19Regex GUST.*>([\d\.]+)<.*mph
attr wetter_Test reading20Name windGust_EN
attr wetter_Test reading20Regex GUST.*>([\d\.]+)<.*mph
attr wetter_Test room Informationen->Wetter,Rollos
attr wetter_Test stateFormat temperature | solarRadiation | solarUV


Der Zusatz "&mode=m" funktioniert nicht, weshalb ich nun mit reading**OMap auf die deutschen Werte umgerecnet habe.

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#321
Noch eine kurze Anmerkung zu der regex Arbeit, die ich mir gemacht habe.

Ich habe mir mittlerweile das Weather Modul ebenfalls angesehen und einen apikey bei DarkSky. Das läuft alles echt prima.
Leider konnte ich keine Werte für UV und SolarRadiation finden, die bei DarkSky wohl nicht bereit stehen.

Über wunderground habe ich dann Wetterstationen in meiner Wohngegend gefunden, die den UV und SolarRadiation Wert bereitstellen.
In diesem Fall läßt sich das nun mit meiner httpmod Abfrage für jeden frei, ohne Anmeldung und ohne apikey abfragen.

Die SolarRadiation verwende ich z.B. im AutoSutterControl für einen Brigtness Wert um im Sommer die Beschattung zu steuern.
https://forum.fhem.de/index.php/topic,102199.0.html

Sollte noch jemand einen eleganteren Weg für die UV und SolarRadiation kennen, dann würde ich mir das auch noch gerne ansehen wollen.

Mir fehlt ebenfalls noch ein Weg für die SolarRadiation Prognose, um das ganze bei der PV-Anlage nutzen zu können.

Viele Grüße
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

münster

@ch.eick

Sag mal, bei deiner Definition:

defmod Wetter_Plaussig HTTPMOD https://www.wunderground.com/dashboard/pws/[Wetterstation] 3600

was ist bei [Wetterstation] einzufügen?

ID=IGROGERA47

oder nur IGROGERA47

Würde mich freuen wenn ich die Abfrage auch wieder hinbekomme.

Im Voraus vielen Dank!

mahowi

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

münster

#324
Ok, funzt soweit! Super dass es somit weitergehen kann.

Aber glaube da ist noch ein kleiner Bock im Bereich Druck/Pressure:

attr Wetter_Plaussig reading07Regex CURRENT.*>([\d\.]+)<.*tile-pressure

Bei mir wird die englische Druckeinheit "30.65 ln" statt "1,038.03 hPa" angezeigt. Ist das so gewollt? Also "Inches of Mercury" statt "hPa"

Könntet Jemand die erforderliche Anpassung zeigen?

mahowi

Standardmäßig werden amerikanische Einheiten angezeigt.  Das kann man zwar auf der Seite umschalten,  ob das aber auch über HTTPMOD geht, weiß ich nicht.

Du könntest die Einheiten umrechnen,  z.B. mit Hilfe der FHEM-internen Funktion UConv.
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

DeeSPe

Zitat von: mahowi am 23 Januar 2020, 07:51:02
Standardmäßig werden amerikanische Einheiten angezeigt.  Das kann man zwar auf der Seite umschalten,  ob das aber auch über HTTPMOD geht, weiß ich nicht.

Es gibt im "Local Storage" im Schlüssel "wu.Units" den Wert "metric".
Ist die Frage ob und wenn ja wie man diesen Wert per HTTPMOD übergeben kann (ist aber sicher hier der falsche Ort dafür).

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

ch.eick

Moin,

sorry, ich war kurz weg :-)

Ich habe die Einheiten direkt im device als zweites reading umgerechnet, wie man es im RAW sehen kann.
Okay, den Druck habe ich nicht berechnet, weil ich den nicht benötige.

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#328

attr [device] reading07Name pressure
attr [device] reading07OExpr round(($val * 33.86388), 2)
attr [device] reading07Regex CURRENT.*>([\d\.]+)<.*tile-pressure

attr [device] reading08Name pressure_EN
attr [device] reading08Regex CURRENT.*>([\d\.]+)<.*tile-pressure


Achtung, ich würde die anderen readings dann entsprechend neu nummerieren.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#329
Zitat von: DeeSPe am 23 Januar 2020, 09:08:35
Es gibt im "Local Storage" im Schlüssel "wu.Units" den Wert "metric".
Ist die Frage ob und wenn ja wie man diesen Wert per HTTPMOD übergeben kann (ist aber sicher hier der falsche Ort dafür).
Dafür müsste man zB mit Burp einen Trace machen und schauen, wie sich beim switch der Einheiten auf der Webseite, der http Aufruf verändert. Wenn sich da etwas ändert könnte man den neuen Aufruf mit httpmod senden. Sollte es jedoch mit sockets und java ablaufen bekomme ich das nicht hin ;-) Aus diesem Grund habe ich den für mich einfacheren Weg mit der Umrechnung gewählt.
Ich benötige jedoch auch keine Wissenschaftliche Exaktheit.

In der Nummerierung war eine Lücke bei 14 , mit diesem Listing sollte der neue Eintrag dann passen. Bitte vorher prüfen, damit Ihr Euch nicht irgend etwas überschreibt :-)

deleteattr device reading10OExpr

attr device reading07Name pressure
attr device reading07OExpr round(($val * 33.86388), 2)
attr device reading07Regex CURRENT.*>([\d\.]+)<.*tile-pressure
attr device reading08Name pressure_EN
attr device reading08Regex CURRENT.*>([\d\.]+)<.*tile-pressure
attr device reading09Name solarRadiation
attr device reading09Regex SOLAR RADIATION.*CURRENT.*weather__text">([\d\.]+)
attr device reading10Name solarUV
attr device reading10Regex CURRENT UV.*>([\d\.]+)<.*UV RISK
attr device reading11Name temperature
attr device reading11OExpr round(($val - 32) * 5/9 , 2)
attr device reading11Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT
attr device reading12Name temperature_EN
attr device reading12OExpr round(($val - 32) * 5/9 , 2)
attr device reading12Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT
attr device reading13Name windChill
attr device reading13OExpr round(($val - 32) * 5/9 , 2)
attr device reading13Regex Feels Like.*>([\d\.]+)<.*wind-dial__container
attr device reading14Name windChill_EN
attr device reading14Regex Feels Like.*>([\d\.]+)<.*wind-dial__container


Bei der Regenmenge ist ebenfalls noch keine Umrechnung enthalten, ist die EN Angabe in Inch ?
Dann wäre die Umrechnung 1 Inch = 2,54 cm wenn ich mich nicht recht irre.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick