[FMISID = 101398]

Edellinen mittaus: 22.09.2019 11:18
Grafiikka päivittyy 10 min välein | Ladataan palvelimelle 20min välein (10,30,50)
Graphing weather statistics with RRDTool
Get Mikkeli FMISID=101398 weather data:

wget -t 1 -O ~/fmidata/mikkeli.xml ${URL}
URL="http://data.fmi.fi/fmi-apikey/MY-API-KEY/wfs?
request=getFeature(-)storedquery_id=fmi::observations::weather::timevaluepair
(-)fmisid=101398(-)parameters=temperature,windspeedms,winddirection,
humidity,dewpoint,pressure(-)timestep=10"

! Ampersand character is replaced with (-) !

Parse XML data to time:value pairs:

0 15-07-2017 13:50 Temperature 17.1 °C
1 15-07-2017 13:50 Wind 3.4 m/s
2 15-07-2017 13:50 Direction 311.0°
3 15-07-2017 13:50 Humidity 57.0 %
4 15-07-2017 13:50 Dew Point 8.6 °C
5 15-07-2017 13:50 Pressure 1013.7 hPa
6 15-07-2017 13:50 Felt like 16.9 °C

Save values to CSV file for RRDs tool input.
Save values to MySQL database, just in case.

Collect data from CSV file:

TEMP=`cat ~/fmidata.csv | cut -d ',' -f1`
WIND=`cat ~/fmidata.csv | cut -d ',' -f2`
... and so on ..

Update RRD database:
rrdtool update ${RRDDIR}/temp.rrd N:${TEMP}
rrdtool update ${RRDDIR}/wind.rrd N:${WIND}

Create RRD Ghraps (Daily):

rrdtool graph $OUTPATH/wind-day.png
--start -24h --end N --step 300
...
DEF:w=$RRDPATH/$WINDFILE:wind:AVERAGE
LINE2:w$WINDCOLOR:"$WINDWORD"
COMMENT:"5 $MINUTEWORD $avgWORD\\n"
GPRINT:w:MIN:"$MINWORD\: %5.1lf"
GPRINT:w:MAX:"$MAXWORD\: %5.1lf"
GPRINT:w:AVERAGE:"$AVGWORD\: %5.1lf"
GPRINT:w:LAST:"$LASTWORD\: %5.1lf\\n"

Save FMI data to Windrose database:

There are eight "buckets" (0-7) with ranges
displayed on the legend (m/s):
0-1, 1-2, 2-3, 3-5, 5-6, 6-10, 10-13.5, 13-99

The first element (0) specify the percentage of 0-1 reading the sum of these reading,
this will be placed in the center of the windrose plot.
The second element (1) specifies the percentage of 1-2 readings,
the third element (2) the percentage of 2-3 readings and so on.

First create a new windrose graph:
$graph = new WindroseGraph(600,600);
Get data from database and create the windrose plot: $wp = new WindrosePlot($data);

Copy FMI and Windrose graphs to server:

Recurse through a local FMI directory and upload the entire contents to a remote FTP server.
Copy the entire "FI101398-all/" directory located at ~/fmidata/ to a
remote server's /public_html/fmidata/FI101398-all/ via FTP.

The system (22.11.2018):

Operating system: Linux
Kernel: 4.4.0-139-generic
Machine: x86_64 (Ubuntu 16.04.4 LTS Server)
Server version: Apache/2.4.18
Data collection: Perl v5.22.1
Graph: RRDtool 1.5.5
The windrose graphic: jpgraph-3.1.x

Powered By   Web Hosting by InMotion Hosting