Hallo Zusammen,
ich habe das Codebeispiel für die Wetterabfrage bei wetter.com für meine Zwecke modifiziert. Es läuft auch, aber igendwie scheint mein Plugin die Datenpunkttypen zu ignorieren.
Hier der stark gekürzte Code:
Die XML-Datei für die Wettervorhersage gibt es hier.
Die Abfrage stimmt schon, aber der Datenpunkttyp wird entweder ignoriert oder ich setze die falschen. Bloß welcher ist dann richtig?
In der ETS kommt das hier an:
Heute - Morgen > Wetterzustand Code ## 1 Byte ## $06 | 2 %
Heute - Morgen > Niederschlag ## 1 Byte ## $D9 | 85 %
Heute - Morgen > Temperatur min ## 2 Byte ## 05 14 | 13
Heute - Morgen > Temperatur max ## 2 Byte ## 05 78 | 14
Heute - Morgen > Windrichtung Grad ## 2 Byte ## 01 0E | 2,7
Heute - Morgen > Windgeschwindigkeit km/h ## 1 Byte ## $12 | 7 %
Heute - Morgen > Windrichtung Text ## 14 Byte ## 57 00 00 00 00 00 00 00 00 00 00 00 00 00
Heute - Morgen > Wetterzustand Text ## 14 Byte ## 6C 65 69 63 68 74 65 72 20 52 65 67 65 6E
Richtig wäre:
Heute - Morgen > Wetterzustand Code ## 5
Heute - Morgen > Niederschlag ## 85%
Heute - Morgen > Temperatur min ## 13°C
Heute - Morgen > Temperatur max ## 14°C
Heute - Morgen > Windrichtung Grad ## 270
Heute - Morgen > Windgeschwindigkeit km/h ## 18,5
Heute - Morgen > Windrichtung Text ## W
Heute - Morgen > Wetterzustand Text ## leichter Regen
Kann mir jemand helfen?
Danke
Sascha
ich habe das Codebeispiel für die Wetterabfrage bei wetter.com für meine Zwecke modifiziert. Es läuft auch, aber igendwie scheint mein Plugin die Datenpunkttypen zu ignorieren.
Hier der stark gekürzte Code:
Code:
# Gruppenadressen my $h_morgen_temp_ga = '5/7/11'; my $h_morgen_tn_ga = '5/7/12'; my $h_morgen_tx_ga = '5/7/13'; my $h_morgen_w_ga = '5/7/15'; my $h_morgen_wtxt_ga = '5/7/16'; my $h_morgen_pc_ga = '5/7/21'; my $h_morgen_ws_ga = '5/7/25'; my $h_morgen_wd_ga = '5/7/26'; my $h_morgen_wdtxt_ga = '5/7/27'; # Benötigte Daten für die Webabfrage bei wetter.com (Der Link zur API ist ganz unten rechts auf der Seite) my $ProjektName = "knxbus"; # Name des Projekts bei wetter.com my $ApiKey = "d3ef8a276029dc007dd0f1abea02bd17"; # API Key des Projektes my $StadtCode = "DE0008685063"; # Stadt-Code z.B. durch Suchen einer Stadt und Kopieren des Codes aus der URL von wetter.com ### Ende Definitionen # XML-Tags von wetter.com # <du> UTC Zeit (Unix Timestamp) # <d> Lokale Zeit (Unix Timestamp) # <dhu> UTC Zeit (ISO 8601) # <dhl> Lokale Zeit (ISO 8601) # <p> Gültigkeitszeitraum der Prognose # <w> Code fuer den Wetterzustand # <pc> Niederschlagswahrscheinlichkeit in Prozent # <tn> Minimaltemperatur in Grad Celsius # <tx> Maximaltemperatur in Grad Celsius # <wd> Windrichtung in Grad # <ws> Windgeschwindigkeit in km/h # <w_txt> Wetter in Textform # <wd_txt> Windrichtung Text use LWP::Simple; use XML::Simple; use Digest::MD5 "md5_hex"; # Eigenen Aufruf-Zyklus auf 3 Stunden setzen $plugin_info{$plugname.'_cycle'} = 10800; my $SeitenURL = http://api.wetter.com/forecast/weather # Generieren der Checksumme, diese wird für jede Stadt neu berechnet my $Checksumme = md5_hex($ProjektName.$ApiKey.$StadtCode); # Berechnen der Checksumme my $URL = $SeitenURL."/city/".$StadtCode."/project/".$ProjektName."/cs/".$Checksumme; # Komplette URL zum Abruf der XML-Infos my $xml = XMLin( get($URL) ); # Globales Array das die abgerufenen Wetterinformationen enthält ## Wetterauswertung heute # Morgen knx_write($h_morgen_w_ga, substr($xml->{forecast}->{date}->[0]->{time}->[0]->{w},0,1), 5.010); knx_write($h_morgen_pc_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{pc}, 5.001); knx_write($h_morgen_tn_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{tn}, 9.001); knx_write($h_morgen_tx_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{tx}, 9.001); knx_write($h_morgen_wd_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{wd}, 7.001); knx_write($h_morgen_ws_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{ws}, 5.010); knx_write($h_morgen_wtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{w_txt}, 16); knx_write($h_morgen_wdtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{wd_txt}, 16);
Die Abfrage stimmt schon, aber der Datenpunkttyp wird entweder ignoriert oder ich setze die falschen. Bloß welcher ist dann richtig?
In der ETS kommt das hier an:
Heute - Morgen > Wetterzustand Code ## 1 Byte ## $06 | 2 %
Heute - Morgen > Niederschlag ## 1 Byte ## $D9 | 85 %
Heute - Morgen > Temperatur min ## 2 Byte ## 05 14 | 13
Heute - Morgen > Temperatur max ## 2 Byte ## 05 78 | 14
Heute - Morgen > Windrichtung Grad ## 2 Byte ## 01 0E | 2,7
Heute - Morgen > Windgeschwindigkeit km/h ## 1 Byte ## $12 | 7 %
Heute - Morgen > Windrichtung Text ## 14 Byte ## 57 00 00 00 00 00 00 00 00 00 00 00 00 00
Heute - Morgen > Wetterzustand Text ## 14 Byte ## 6C 65 69 63 68 74 65 72 20 52 65 67 65 6E
Richtig wäre:
Heute - Morgen > Wetterzustand Code ## 5
Heute - Morgen > Niederschlag ## 85%
Heute - Morgen > Temperatur min ## 13°C
Heute - Morgen > Temperatur max ## 14°C
Heute - Morgen > Windrichtung Grad ## 270
Heute - Morgen > Windgeschwindigkeit km/h ## 18,5
Heute - Morgen > Windrichtung Text ## W
Heute - Morgen > Wetterzustand Text ## leichter Regen
Kann mir jemand helfen?
Danke
Sascha
Kommentar