Modul für Weather Underground / Wunderground

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

Vorheriges Thema - Nächstes Thema

ch.eick

Zitat von: mahowi am 23 Januar 2020, 07:51:02
Du könntest die Einheiten umrechnen,  z.B. mit Hilfe der FHEM-internen Funktion UConv.

Gibt es dazu einen thread? Alles was ich im Forum finde sieht nach Entwickler Informationen aus.
Bin ich zu dusselig eine commandref oder etwas im wiki zu finden?
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

Ich kann Vollzug berichten!  :)

Hat super geklappt. Muss ja gestehen dass ich nicht alles verstanden habe was in den letzten Posts angesprochen wurde um die Werte umzurechnen. Aber mit ein bisschen Hilfe fummle ich mich Stück für Stück weiter. Von daher nochmal nen großen Dank für die Anpassung des Codes!

PS: Uconv hab ich auch nicht in der CommandRef gefunden.

ch.eick

Zitat von: münster am 23 Januar 2020, 21:01:46
Hat super geklappt. Muss ja gestehen dass ich nicht alles verstanden habe was in den letzten Posts angesprochen wurde um die Werte umzurechnen. Aber mit ein bisschen Hilfe fummle ich mich Stück für Stück weiter. Von daher nochmal nen großen Dank für die Anpassung des Codes!

Hi, ich mach es auch noch nicht soooo lange :-)

Aber das Vorgehen ist recht einfach

# Das reading bekommt einen lesbaren Namen

attr device reading07Name pressure

# Im html Code wird nach einer Eindeutigen Feldbeschreibung gesucht und der Wert ins reading geschrieben
# Okay, an der regex habe ich etwas länger gefeilt, damit wirklich der richtige Wert gefunden wird

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

# Bevor der Wert geschrieben wird, wird er hiermit nochmals rechnerisch bearbeitet
# Den Faktor habe ich aus einer Wiki Seite im Netz

attr device reading07OExpr round(($val * 33.86388), 2)


Für EN und DE Werte wird leider der entsprechende Wert zweimal gelesen. Ich denke das kann man mit uconv vermeiden, jedoch würde man dann mit einem userreading auf den Wert der Seite triggern und dann ein zweites reading erzeugen.

Meine Berechnung könnte natürlich auch mit uconv erfolgen, wodurch dann der Faktor zentral abgerufen würde. Dafür fehlt mir jedoch noch der Syntax von uconv.
Ich schau mir mal den Code an, ne Beschreibung der Funktion wäre mir jedoch lieber :-)
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

mahowi

Leider gibt's wohl außer der Wiki-Seite keine Doku zu UConv. Um das Modul nutzen zu können muß es erstmal eingebunden werden:
define uconvInit notify global:INITIALIZED {use UConv}

Danach kann man die Funktionen überall anwenden mit UConv::<Funktionsname>

Die Namen der Funktionen findet man im Modul selbst ab Zeile 602.

Für den Druck wäre das z.B. UConv::inhg2hpa(Wert;Stellen)
Es werden immer 2 Parameter übergeben, der Wert, der umzurechnen ist und die Anzahl der Nachkommastellen, auf die gerundet wird.
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

ch.eick

#334
Hier sind dann die readings mit Uconv umgerechnet

EDIT:
Nur finde ich nicht den Syntax für die Stringumwandlung der Himmelsrichtungen :-)

Für die Uconv Fragen habe ich mal einen separaten thread aufgemacht. Das stört hier sicherlich zu sehr.
https://forum.fhem.de/index.php/topic,107554.msg1016547.html#msg1016547


attr device reading02Name dewpointTemperature
attr device reading02OExpr UConv::f2c($val,2)
attr device reading02Regex DEWPOINT.*>([\d\.]+)<.*HUMIDITY

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

attr device reading11Name temperature
attr device reading11OExpr UConv::f2c($val,2)
attr device reading11Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT

attr device reading13Name windChill
attr device reading13OExpr UConv::f2c($val,2)
attr device reading13Regex Feels Like.*>([\d\.]+)<.*wind-dial__container

attr device reading15Name windDirection

EDIT:
attr device reading15OExpr  UConv::compasspoint2compasspoint(UConv::compasspoint2direction($val,"en"),"de")

# Das OMap stand noch offen und hat im Log unnütze Meldungen verursacht.
# attr device reading15OMap E:O, NE:NO, SE:SO, ENE:ONO, NNE:NNO, ESE:OSO, SSE:SSO
EDIT ENDE

attr device reading15Regex WIND FROM.*>([NESW]+)<.*GUST

attr device reading17Name windSpeed
attr device reading17OExpr UConv::mph2kph($val,1)
attr device reading17Regex wind-dial__container.*>([\d\.]+)<.*unit-speed

attr device reading19Name windGust
attr device reading19OExpr UConv::mph2kph($val,1)
attr device reading19Regex GUST.*>([\d\.]+)<.*mph

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

Auch das mit uconv klappt mit entsprechender Anpassung an meine Gegebenheiten.  :D
Danke an Euch Beide!

@ch.eick

ZitatHi, ich mach es auch noch nicht soooo lange :-)

Schon klar! Deshalb nenne ich mich auch Junior Member und deiner Einer Full Member!  ;)

münster

Hab jetzt doch noch ein kleines Thema zu o.g. Umsetzung.

Hab nun folgende Meldung im Hauptbildschirm. :

Messages collected while initializing FHEM:
configfile: Invalid Expression UConv::f2c($val,1)
Invalid Expression UConv::inhg2hpa($val,0)
Invalid Expression UConv::f2c($val,2)
Invalid Expression UConv::f2c($val,2)
Invalid Expression UConv::mph2kph($val,1)
Invalid Expression UConv::mph2kph($val,1)


Dachte nach Einbindung von

define uconvInit notify global:INITIALIZED {use UConv}

können die erforderlichen Umrechnungen gemäß ch.eick ´s Code abgerufen und umgerechnet werden.

attr device reading11Name temperature
attr device reading11OExpr UConv::f2c($val,2)
attr device reading11Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT


Warum kommt nun diese Meldung? Fehlt noch was?

ch.eick

Moin,

dazu kann ich auch nichts sagen, jedoch kopiere ich das mal in den anderen thread, da es jetzt nun wirklich nichts mehr mit wunderground zu tun hat.
https://forum.fhem.de/index.php/topic,107554.msg1016547.html#msg1016547
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

Ebenfalls Guten Morgen. Alles klar, danke!

hugo

Hallo, an einem verregneten Abend.
Ich hatte bisher meine PWS über Wunderground und HTTPMOD abgefragt, leider funktioniert dies nicht mehr.
Jetzt wollte ich es  über das Wundergroudmodul machen, aber ich erhalte eine Fehlermeldung, dass der API-Key nicht vorhanden ist.
Ich habe heute einen API-Key bei Wunderground erstellt und aich per Clipbord in die Def eingetragen (somit sollte kein schreibfehler vorhanden sein).
Im Logfile erscheint:

2020.02.03 18:37:40 3: Wunderground set WUweather update
2020.02.03 18:37:40 5: Wunderground WUweather: called function Wunderground_GetStatus()
2020.02.03 18:37:40 5: Wunderground WUweather: called function Wunderground_SendCommand()
2020.02.03 18:37:40 5: Wunderground WUweather: GET https://api.wunderground.com/api/eadc4010c586459a9c4010**********/astronomy/conditions/forecast/lang:EN/q/pws:I*******8.json
2020.02.03 18:37:40 5: Wunderground WUweather: called function Wunderground_Set()
2020.02.03 18:37:40 5: Wunderground WUweather: called function Wunderground_Set()
2020.02.03 18:37:40 5: Wunderground WUweather: called function Wunderground_Set()
2020.02.03 18:37:40 5: Wunderground WUweather: called function Wunderground_ReceiveCommand()
2020.02.03 18:37:40 4: Wunderground WUweather: RCV
2020.02.03 18:37:40 5: Wunderground WUweather: RES
{
  "response": {
  "version":"0.1",
  "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
  "features": {
  }
,
"error": {
"type": "keynotfound"
,"description": "this key does not exist"
}
}
}

hier noch das List:

Internals:
   API_KEY    eadc4010c586459a9c4010**********
   CFGFN     
   DEF        eadc4010c586459a9c4010********** pws:I*******8
   FEATURES   astronomy/conditions/forecast/lang:EN
   FUUID      5e385144-f33f-effb-4c54-524c77453dd7aef8
   FVERSION   59_Wunderground.pm:0.189950/2019-03-22
   INTERVAL   300
   LANG       EN
   NAME       WUweather
   NR         131
   QUERY      pws:I*******8
   STATE      temp_c humidity
   TYPE       Wunderground
   READINGS:
     2020-02-03 17:58:48   lastQueryResult keynotfound
     2020-02-03 18:37:40   state           temp_c humidity
Attributes:
   stateReadings temp_c humidity
   stateReadingsFormat 1
   verbose    5
   wu_features astronomy,conditions,forecast


Habe ich etwas falsches gedacht oder dauert die Aktivierung des API-Key länger?

Vielen Dank für Eure Antworten
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

rabehd

Funktioniert das Modul überhaupt noch?
Ich denke ein. Im Forum müßte das auch irgendwo stehen. Aus meiner Erinnerung: Mit der neuen API/ApPI-Key geht es nicht mehr.
Aber das Weather-Modul kann mit wundergroundAPI genutzt werden. Bei mir funktioniert das so.
Auch funktionierende Lösungen kann man hinterfragen.

hugo

@rabehd,
Wie hast du das mit wundergroundApi gemacht
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

rabehd

#342
@hugo
Ich hätte Dich jetzt gern an die Forumssuche und die Commandref verwiesen. Nur in der Commandref steht es gar nicht drin.
Im Forum wäre das ein Einstieg https://forum.fhem.de/index.php/topic,107408.msg1014448.html#msg1014448
Und noch eine Erklärung: https://forum.fhem.de/index.php/topic,108001.msg1020002.html#msg1020002

Also auf die Schnelle:
define <name> Weather API=wundergroundAPI,stationId:IHAUIDELB111 apikey=ed64ccc80f004556a4e3456567800b6324a
Key und Station sind verfremdet  ;)
Auch funktionierende Lösungen kann man hinterfragen.

hugo

@rabehd
Danke dir, Commanref hatte ich schon gelesen und im Forum https://forum.fhem.de/index.php/topic,107408.msg1014448.html#msg1014448 bin ich erst auf auf Seite 9.
Habe es gleich mit meiner PWS ausprobiert und habe ordentliche Werte erhalten.
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Loredo

Zitat von: ch.eick am 23 Januar 2020, 18:27:41
Gibt es dazu einen thread? Alles was ich im Forum finde sieht nach Entwickler Informationen aus.
Bin ich zu dusselig eine commandref oder etwas im wiki zu finden?


Nein. UConv ist eine interne Entwickler Bibliothek. Die kann man verwenden, muss aber selbst schauen, welche Funktionen sie bietet. Ist als Entwickler kein Problem, aber es ist eben keine Enduser Lib.
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