Funktionierendes Beispiel: wunderground.com inklusive WindChill-Berechnung

Begonnen von dero, 25 November 2015, 20:37:45

Vorheriges Thema - Nächstes Thema

dero

Funktionierendes Beispiel!


define Wetter HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLINB71 60
attr Wetter userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Expr reading05Name reading05Regex reading06Expr reading06Name reading06Regex reading07Expr reading07Name reading07Regex stateFormat
attr Wetter reading01Name datetime
attr Wetter reading01Regex <observation_time_rfc822>([^<]+)
attr Wetter reading02Name temperature
attr Wetter reading02Regex <temp_c>([^<]+)
attr Wetter reading03Name windDegrees
attr Wetter reading03Regex <wind_degrees>([^<]+)
attr Wetter reading04Name windDirection
attr Wetter reading04Regex <wind_dir>([^<]+)
attr Wetter reading05Expr $val * 1.6
attr Wetter reading05Name windGust
attr Wetter reading05Regex <wind_gust_mph>([^<]+)
attr Wetter reading06Expr $val * 1.6
attr Wetter reading06Name windSpeed
attr Wetter reading06Regex <wind_mph>([^<]+)
attr Wetter reading07Expr ReadingsVal($name, 'windSpeed', 0) > 5 ? 13.12 + 0.6215 * ReadingsVal($name, 'temperature', 0) - 11.37*(ReadingsVal($name, 'windSpeed', 0)**0.16) + 0.3965 * ReadingsVal($name, 'temperature', 0) * (ReadingsVal($name, 'windSpeed', 0)**0.16) : ReadingsVal($name, 'temperature', 0)
attr Wetter reading07Name windChill
attr Wetter reading07Regex <temp_c>([^<]+)
attr Wetter room Wetter
attr Wetter stateFormat {sprintf("Temperatur %.1f °C, Wind %.1f km/h", ReadingsVal($name,"temperature",0), ReadingsVal($name,"windSpeed",0))}


dero

Dr. Boris Neubert

Hallo,

bist Du sicher, dass das mit Attributen geht und Du nicht mit userreadings arbeiten möchtest?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

dero

Hi Boris,

du meinst, dass reading07Expr zu sehr nach einem Hack aussieht?

dero

Michael

Moin dero

Ich habe sowas bei meiner KS300 gemacht.
Sollte auch beim HTTPMOD klappen.

1.) Habe in der myUtils folgenden Code eingefügt.
sub windChill($)
{
  my ($name) = @_;
  my $temp = ReadingsVal($name, "temperature", 0);
  my $wind = ReadingsVal($name, "wind", 0);
  my $var = sprintf ("%.1f", 13.12 + 0.6215 * $temp - 11.37 * $wind**0.16 + 0.3965 * $temp *$wind**0.16 );
 
  return ($temp < 5 && $wind > 5 ? $var : "---");
}


2.) In dem Device das windchill { windChill("KS300") } ins userReadings geschrieben.

Natürlich geht es nicht eins zu eins, also Anpassen nicht Vergessen.

Ich hoffe, das ich jetzt all zuviel Blödsinn von mir gegeben habe.  :'(
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

dero


Dr. Boris Neubert

Hallo Dero,

Zitat von: dero am 26 November 2015, 15:11:21
du meinst, dass reading07Expr zu sehr nach einem Hack aussieht?

habe aus professionellem Interesse als Entwickler gefragt, weil man üblicherweise benutzerdefinierte Readings mit userreadings baut. Habe heute Abend aber nochmal genauer hingeschaut und gesehen, dass diese Form der Erzeugung von Readings ein exklusives Feature vom HTTPMOD-Modul ist. Wieder was gelernt.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

franky08

So aus Neugier, wie habt ihr die ID für die Location rausbekommen?

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

betateilchen


  • Station über die Suche selektieren ,z.B. Borkum
  • auf Change Station klicken

Dann steht bei mir IGRONING16 als ID auf der Seite (und in der URL)

http://www.wunderground.com/personal-weather-station/dashboard?ID=IGRONING16
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

franky08

Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

igami

Hi zusammen,

habe mir das heute auch mal die wunderground Abfrage eingerichtet und wollte natürlich auch einen windchill haben.
Was mir aufgefallen ist: Die Windgeschwindigkeit wird in mph angegeben, damit passt die Formel nicht.

Bei mir habe ich die Werte vorher in km/h umgerechnet.
Zu sehen in den Attributen reading15Expr, reading15Format, reading16Expr, reading16Format.
Dewpoint wird bei mir durch das dewpoint Modul generiert, dewegen habe ich reading03... rausgenommen

define weather HTTPMOD https://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=INORDRHE417&format=XML 900
attr weather reading01Name cloudiness
attr weather reading01Regex cloudiness id="NN" percent="([\d\.]+)
attr weather reading02Name date
attr weather reading02Regex date date" content="([\d\.]+)
attr weather reading04Name fog
attr weather reading04Regex fog id="FOG" percent="([\d\.]+)
attr weather reading05Name heatindex
attr weather reading05Regex <heat_index_c>([\d\.]+)
attr weather reading06Name humidity
attr weather reading06Regex <relative_humidity>([\d\.]+)
attr weather reading07Name pressure
attr weather reading07Regex <pressure_mb>([\d\.]+)
attr weather reading08Name solarRadiation
attr weather reading08Regex <solar_radiation>([\d\.]+)
attr weather reading09Name solarUV
attr weather reading09Regex <UV>([\d\.]+)
attr weather reading10Name temperature
attr weather reading10Regex <temp_c>([\d\.]+)
attr weather reading11Name time
attr weather reading11Regex time Zeit([\d\:]+)
attr weather reading12Name windChill
attr weather reading12Regex <windchill_c>([\d\.]+)
attr weather reading13Name windDegrees
attr weather reading13Regex <wind_degrees>([\d\.]+)
attr weather reading14Name windDirection
attr weather reading14Regex <wind_dir>([\d\.]+)
attr weather reading15Expr $val * 1.60934
attr weather reading15Format %.1f
attr weather reading15Name windGust
attr weather reading15Regex <wind_gust_mph>([\d\.]+)
attr weather reading16Expr $val * 1.60934
attr weather reading16Format %.1f
attr weather reading16Name windSpeed
attr weather reading16Regex <wind_mph>([\d\.]+)
attr weather stateFormat T: temperature H: humidity W: windSpeed P: pressure
attr weather userReadings windChill
{
  my $temperature = ReadingsVal($name, "temperature", 0);
  my $windSpeed = ReadingsVal($name, "windSpeed", 0);
  my $windChill;

  if ($windSpeed > 5){
    $windChill = sprintf("%.1f", 13.12 + (0.6215 * $temperature) - (11.37 * ($windSpeed**0.16)) + (0.3965 * $temperature * ($windSpeed**0.16)));
  }else{
    $windChill = $temperature;
  }

  return $windChill;
}


Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

mkriegl

Hi igami,

danke für die Umrechnungen in km/h und windChill. Da ich noch nicht so fit mit Readings bin, kannst du mir vielleicht bitte mit dem Format helfen, da ich nicht weiß wie ich das reading benennen muss, damit es mir die Stellen kürzt??

readingsName_windSpeed
readingsRegex_windSpeed
readingsExpr_windSpeed
readingsFormat_windSpeed (funktioniert nicht)

Danke .. Max

igami

Was soll gekürzt werden? Am besten ein Beispiel ich habe 7,9999 und möchte 8,0 oder so
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

mkriegl

Ja, genau. Durch die Multiplikation in "readingsExpr_windSpeed $val * 1.60934" bekomme ich natürlich Mahr Nachkommastelle. Hast du ja bei dir auch mit "%.1f " gekürzt. Nur heißen meine Attribute ja anders

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

mkriegl

Gute Frage. Ist aus einem anderen Post für Wetter kopiert worden. Frag mich aber bitte nicht woher und wann :-)