# HG changeset patch # User Matti Hamalainen # Date 1579637641 -7200 # Node ID b4be881a99080a794ae203fb3447e2d7861385c7 # Parent b352722e87173345d47942bbcfba93c0b9821fac fetch_weather, weather: Add primitive support for wind direction data. diff -r b352722e8717 -r b4be881a9908 config.weather.example --- a/config.weather.example Wed Jan 08 15:21:16 2020 +0200 +++ b/config.weather.example Tue Jan 21 22:14:01 2020 +0200 @@ -42,6 +42,7 @@ lappend weather_msg_result ", tien pinta @rv_10@°C" lappend weather_msg_result ", kosteus \002@humidity@%\002" lappend weather_msg_result ", tuuli \002@wind_speed@\002 m/s" +lappend weather_msg_result " (suunta \002@wind_direction@\002)" lappend weather_msg_result ", pilvipeite \002@rv_9@\002" lappend weather_msg_result ", näkyvyys \002@rv_12@ km\002" lappend weather_msg_result "." diff -r b352722e8717 -r b4be881a9908 fetch_weather.pl --- a/fetch_weather.pl Wed Jan 08 15:21:16 2020 +0200 +++ b/fetch_weather.pl Tue Jan 21 22:14:01 2020 +0200 @@ -176,16 +176,16 @@ ### Return either data or if not defined, empty string -sub plonk_data($) +sub plonk_data { - return defined($_[0]) ? $_[0] : ""; + return defined($_[0]) ? $_[0] : (defined($_[1]) ? $_[1] : ""); } ### Same as plonk_data() but also lowercase the data string sub plonk_data_lc($) { - return defined($_[0]) ? lc($_[0]) : ""; + return defined($_[0]) ? lc($_[0]) : (defined($_[1]) ? $_[1] : ""); } @@ -378,6 +378,8 @@ my $json_str = force_decode_utf8($res->decoded_content); my $data = JSON->new->decode($json_str); +#print $json_str."\n"; die("\n"); + if (!defined($data->{"dataUpdatedTime"}) || !defined($data->{"weatherStations"})) { print STDERR "ERROR: REST/JSON call result did not contain required data.\n"; @@ -450,13 +452,14 @@ 1, # Basic data - $meta_data->{$wid}{"geometry"}{"coordinates"}[1], - $meta_data->{$wid}{"geometry"}{"coordinates"}[0], - $meta_data->{$wid}{"geometry"}{"coordinates"}[2], + plonk_data($meta_data->{$wid}{"geometry"}{"coordinates"}[1], 0), + plonk_data($meta_data->{$wid}{"geometry"}{"coordinates"}[0], 0), + plonk_data($meta_data->{$wid}{"geometry"}{"coordinates"}[2], 0), str2time(plonk_data($wdata->{"measuredTime"})), plonk_data($wdata->{"sensors"}->{"airtemperature1"}->{"sensorValue"}), plonk_data($wdata->{"sensors"}->{"humidity"}->{"sensorValue"}), plonk_data($wdata->{"sensors"}->{"averagewindspeed"}->{"sensorValue"}), + plonk_data($wdata->{"sensors"}->{"winddirection"}->{"sensorValue"}), # Station type dependant data "", @@ -482,15 +485,14 @@ ### if (opt_chk_bool("opt_fmi")) { - my @fmitems = ("temperature", "humidity", "windspeedms", "totalcloudcover"); + my @fmitems = ("temperature", "humidity", "windspeedms", "winddirection", "totalcloudcover"); my $uri = "https://opendata.fmi.fi/wfs". "?request=getFeature". - "&storedquery_id=fmi::observations::weather::". - "multipointcoverage". -# "timevaluepair". + "&storedquery_id=fmi::observations::weather::multipointcoverage". "&starttime=".format_time_gmt(time() - 10*60)."&endtime=".format_time_gmt(time()). - "¶meters=".join(",", @fmitems)."&maxlocations=100&bbox=19,59,32,75"; + "¶meters=".join(",", @fmitems). + "&maxlocations=200&bbox=19,59,32,75"; print STDERR "FMI URI: ".$uri."\n" if (opt_get_int("debug") > 0); @@ -500,6 +502,8 @@ my $xml = XMLin(force_decode_utf8($res->decoded_content)); my $time_base = time(); +#print $res->decoded_content; die("\n"); + if (defined($xml->{"wfs:member"}{"omso:GridSeriesObservation"})) { my $fdata = $xml->{"wfs:member"}{"omso:GridSeriesObservation"}; @@ -574,13 +578,14 @@ 2, # Basic data - $frec->{"lat"}, - $frec->{"long"}, + plonk_data($frec->{"lat"}, 0), + plonk_data($frec->{"long"}, 0), 0, plonk_data($frec->{"time"}), plonk_data($frec->{"temperature"}), plonk_data($frec->{"humidity"}), plonk_data($frec->{"windspeedms"}), + plonk_data($frec->{"winddirection"}), # Station type dependant data translate_clouds(plonk_data($frec->{"totalcloudcover"})), diff -r b352722e8717 -r b4be881a9908 weather.tcl --- a/weather.tcl Wed Jan 08 15:21:16 2020 +0200 +++ b/weather.tcl Tue Jan 21 22:14:01 2020 +0200 @@ -1,7 +1,7 @@ ########################################################################## # -# Weather v1.0.0 by Matti 'ccr' Hamalainen -# (C) Copyright 2014-2017 Tecnic Software productions (TNSP) +# Weather v1.1.0 by Matti 'ccr' Hamalainen +# (C) Copyright 2014-2020 Tecnic Software productions (TNSP) # # Requires data fetcher to be run as a cronjob, see fetch_weather.pl # for more information. @@ -23,7 +23,7 @@ # No need to look below this line ########################################################################## set weather_name "Weather" -set weather_version "1.0.0" +set weather_version "1.1.0" ### Initialization messages @@ -140,6 +140,7 @@ set uvals(temp) [lindex $udata 6] set uvals(humidity) [lindex $udata 7] set uvals(wind_speed) [lindex $udata 8] + set uvals(wind_direction) [lindex $udata 9] if {[expr [clock seconds] - $uvals(vtime)] < 3600} { set uvals(ctime) [clock format $uvals(vtime) -format "%H:%M"] @@ -147,7 +148,7 @@ set uvals(ctime) [clock format $uvals(vtime) -format "%H:%M (%d.%m.%Y)"] } - for {set id 9} {$id < [llength $udata]} {incr id} { + for {set id 10} {$id < [llength $udata]} {incr id} { set uvals(rv_$id) [lindex $udata $id] }