From f8dcd35ddc5d82368c8c75da4a96b276277023f1 Mon Sep 17 00:00:00 2001 From: "David P. Chassin" Date: Wed, 15 Jun 2022 10:30:42 -0700 Subject: [PATCH] Add meteostat tool (#1180) --- docs/Utilities/Meteostat_weather.md | 45 ++ module/climate/weather.cpp | 15 +- tools/Makefile.mk | 1 + tools/autotest/test_meteostat.csv | 514 +++++++++++++++++++++ tools/autotest/test_meteostat.glm | 27 ++ tools/autotest/test_meteostat_opt.csv | 634 ++++++++++++++++++++++++++ tools/autotest/test_meteostat_opt.glm | 22 + tools/meteostat_weather.py | 425 +++++++++++++++++ tools/requirements.txt | 1 + 9 files changed, 1681 insertions(+), 3 deletions(-) create mode 100644 docs/Utilities/Meteostat_weather.md create mode 100644 tools/autotest/test_meteostat.csv create mode 100644 tools/autotest/test_meteostat.glm create mode 100644 tools/autotest/test_meteostat_opt.csv create mode 100644 tools/autotest/test_meteostat_opt.glm create mode 100644 tools/meteostat_weather.py diff --git a/docs/Utilities/Meteostat_weather.md b/docs/Utilities/Meteostat_weather.md new file mode 100644 index 000000000..2a36327f8 --- /dev/null +++ b/docs/Utilities/Meteostat_weather.md @@ -0,0 +1,45 @@ +[[/Utilities/Meteostat_weather]] - Meteostat weather access + +# Synopsis + +Shell: + +~~~ + $ python3 meteostat.py [OPTIONS] ... +~~~ + +GLM: + +~~~ + #python3 meteostat.py [OPTIONS] ... +~~~ + +Options: + +- `-h|--help|help`: Get this help information (exits with code 0) + +- `-c|--csv=CSVNAME`: Name the CSV output file (optional) + +- `-g|--glm=GLMNAME`: Name the GLM output file (optional) + +- `-n|--name=OBJNAME`: Name the weather object (optional) + +- `-p|--position=LAT,LON`: Specify the location (required) + +- `-s|--start=YYYY-MM-D`D: Specify the start date (optional) + +- `-e|--end=YYYY-MM-DD`: Specify the end date (optional) + +# Description + +The `meteostat_weather` tool gathers data from the Meteostat website and converts it +to a GridLAB-D weather object. If neither `CSVNAME` or `GLMNAME` are provided the weather +data is written to stdout. Otherwise, the default `CSVNAME` is `meteostat_ID.csv` where +`ID` is the station identifier provided by Meteostat. The default weather object is +also named `meteostat_ID`. If the start date and/or end date are not specified, then +the default is all available data. + +# See also + +* [https://dev.meteostat.net/] + diff --git a/module/climate/weather.cpp b/module/climate/weather.cpp index 6208d72e8..bab60c66e 100644 --- a/module/climate/weather.cpp +++ b/module/climate/weather.cpp @@ -115,9 +115,18 @@ weather::weather(MODULE *module) EXPORT int create_weather(OBJECT **obj, OBJECT *parent) { - weather *my = (weather*)(obj+1); - my->next = NULL; - return 1; // don't want it to get called, but better to have it not be fatal + *obj = gl_create_object(weather::oclass); + if ( *obj != NULL ) + { + weather *my = OBJECTDATA(*obj,weather); + gl_set_parent(*obj,parent); + my->next = NULL; + return 1; + } + else + { + return 0; + } } /// Synchronize the cliamte object diff --git a/tools/Makefile.mk b/tools/Makefile.mk index 963c089ee..11fa90ad4 100644 --- a/tools/Makefile.mk +++ b/tools/Makefile.mk @@ -12,6 +12,7 @@ dist_pkgdata_DATA += tools/insights.py dist_pkgdata_DATA += tools/market_data.py dist_pkgdata_DATA += tools/mdb_info.py dist_pkgdata_DATA += tools/market_model.py +dist_pkgdata_DATA += tools/meteostat_weather.py dist_pkgdata_DATA += tools/metar2glm.py dist_pkgdata_DATA += tools/noaa_forecast.py dist_pkgdata_DATA += tools/nsrdb_weather.py diff --git a/tools/autotest/test_meteostat.csv b/tools/autotest/test_meteostat.csv new file mode 100644 index 000000000..134ed1541 --- /dev/null +++ b/tools/autotest/test_meteostat.csv @@ -0,0 +1,514 @@ +2020-01-01 00:00:00 PST,+0,+0,+0,+0 +2020-01-01 02:00:00 PST,+55.4,+39,+54,+0 +2020-01-01 06:00:00 PST,+48.2,+43,+82,+0 +2020-01-01 08:00:00 PST,+48.2,+41,+76,+0 +2020-01-01 09:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-01 11:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-01 12:00:00 PST,+44.6,+44.6,+100,+0 +2020-01-01 15:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-01 18:00:00 PST,+50,+48.4,+94,+79.1 +2020-01-01 19:00:00 PST,+57.2,+50,+77,+84.6 +2020-01-01 20:00:00 PST,+59,+53.6,+82,+86.4 +2020-01-01 21:00:00 PST,+59,+53.6,+82,+85.7 +2020-01-01 22:00:00 PST,+59,+53.6,+82,+82 +2020-01-01 23:00:00 PST,+59,+53.6,+82,+72.9 +2020-01-02 00:00:00 PST,+59,+53.6,+82,+49 +2020-01-02 06:00:00 PST,+53.6,+50.2,+88,+0 +2020-01-02 09:00:00 PST,+51.8,+50.2,+94,+0 +2020-01-02 10:00:00 PST,+50,+48.4,+94,+0 +2020-01-02 11:00:00 PST,+51.8,+48.4,+88,+0 +2020-01-02 12:00:00 PST,+50,+48.4,+94,+0 +2020-01-02 13:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-02 14:00:00 PST,+50,+48.4,+94,+0 +2020-01-02 15:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-02 16:00:00 PST,+48.2,+48.2,+100,+26.2 +2020-01-02 17:00:00 PST,+48.2,+48.2,+100,+65.8 +2020-01-02 21:00:00 PST,+57.2,+44.8,+63,+85.8 +2020-01-02 22:00:00 PST,+59,+46.4,+63,+82.1 +2020-01-03 00:00:00 PST,+60.8,+44.6,+55,+49.6 +2020-01-03 01:00:00 PST,+59,+48,+67,+0 +2020-01-03 06:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-03 07:00:00 PST,+46.4,+44.4,+93,+0 +2020-01-03 08:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-03 09:00:00 PST,+44.6,+42.6,+93,+0 +2020-01-03 10:00:00 PST,+44.6,+41,+87,+0 +2020-01-03 11:00:00 PST,+44.6,+42.6,+93,+0 +2020-01-03 12:00:00 PST,+44.6,+41,+87,+0 +2020-01-03 13:00:00 PST,+42.8,+41,+93,+0 +2020-01-03 16:00:00 PST,+44.6,+41,+87,+26.2 +2020-01-03 18:00:00 PST,+50,+46.2,+87,+79.2 +2020-01-03 19:00:00 PST,+53.6,+48.2,+82,+84.7 +2020-01-03 20:00:00 PST,+57.2,+46.4,+67,+86.6 +2020-01-04 00:00:00 PST,+57.2,+46.4,+67,+50.2 +2020-01-04 01:00:00 PST,+57.2,+44.8,+63,+0 +2020-01-04 06:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-04 07:00:00 PST,+48.2,+43,+82,+0 +2020-01-04 08:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-04 10:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-04 11:00:00 PST,+48.2,+43,+82,+0 +2020-01-04 12:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-04 13:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-04 14:00:00 PST,+50,+48.4,+94,+0 +2020-01-04 16:00:00 PST,+48.2,+46.6,+94,+26.2 +2020-01-04 19:00:00 PST,+57.2,+48.2,+72,+84.8 +2020-01-04 22:00:00 PST,+57.2,+48.2,+72,+82.4 +2020-01-04 23:00:00 PST,+57.2,+46.4,+67,+73.7 +2020-01-05 00:00:00 PST,+57.2,+46.4,+67,+50.8 +2020-01-05 06:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-05 07:00:00 PST,+50,+46.2,+87,+0 +2020-01-05 08:00:00 PST,+50,+44.8,+82,+0 +2020-01-05 10:00:00 PST,+50,+46.2,+87,+0 +2020-01-05 11:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-05 12:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-05 13:00:00 PST,+44.6,+41,+87,+0 +2020-01-05 15:00:00 PST,+41,+39.2,+93,+0 +2020-01-05 18:00:00 PST,+50,+42.8,+76,+79.3 +2020-01-05 19:00:00 PST,+53.6,+39.2,+58,+84.8 +2020-01-05 20:00:00 PST,+55.4,+39,+54,+86.7 +2020-01-05 21:00:00 PST,+57.2,+39.2,+51,+86.1 +2020-01-05 23:00:00 PST,+57.2,+43,+59,+73.9 +2020-01-06 02:00:00 PST,+53.6,+46.6,+77,+0 +2020-01-06 03:00:00 PST,+51.8,+46.4,+82,+0 +2020-01-06 04:00:00 PST,+50,+46.2,+87,+0 +2020-01-06 06:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-06 08:00:00 PST,+46.4,+44.4,+93,+0 +2020-01-06 09:00:00 PST,+44.6,+41,+87,+0 +2020-01-06 10:00:00 PST,+42.8,+41,+93,+0 +2020-01-06 12:00:00 PST,+41,+41,+100,+0 +2020-01-06 13:00:00 PST,+42.8,+41,+93,+0 +2020-01-06 14:00:00 PST,+44.6,+41,+87,+0 +2020-01-06 15:00:00 PST,+42.8,+41,+93,+0 +2020-01-06 17:00:00 PST,+48.2,+41,+76,+66 +2020-01-06 20:00:00 PST,+55.4,+37.6,+51,+86.8 +2020-01-06 21:00:00 PST,+57.2,+37.8,+48,+86.2 +2020-01-06 22:00:00 PST,+59,+37.8,+45,+82.7 +2020-01-06 23:00:00 PST,+60.8,+35.6,+39,+74.2 +2020-01-07 01:00:00 PST,+55.4,+39,+54,+0 +2020-01-07 02:00:00 PST,+53.6,+39.2,+58,+0 +2020-01-07 03:00:00 PST,+51.8,+39.2,+62,+0 +2020-01-07 04:00:00 PST,+50,+39,+66,+0 +2020-01-07 06:00:00 PST,+46.4,+39.2,+76,+0 +2020-01-07 08:00:00 PST,+44.6,+39.2,+81,+0 +2020-01-07 09:00:00 PST,+44.6,+37.6,+76,+0 +2020-01-07 10:00:00 PST,+42.8,+37.4,+81,+0 +2020-01-07 11:00:00 PST,+41,+37.4,+87,+0 +2020-01-07 12:00:00 PST,+41,+39.2,+93,+0 +2020-01-07 13:00:00 PST,+39.2,+37.4,+93,+0 +2020-01-07 14:00:00 PST,+41,+39.2,+93,+0 +2020-01-07 15:00:00 PST,+41,+41,+100,+0 +2020-01-07 16:00:00 PST,+41,+41,+100,+26.3 +2020-01-07 19:00:00 PST,+50,+41,+71,+85 +2020-01-07 21:00:00 PST,+51.8,+46.4,+82,+86.3 +2020-01-08 06:00:00 PST,+51.8,+48.4,+88,+0 +2020-01-08 07:00:00 PST,+50,+48.4,+94,+0 +2020-01-08 09:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-08 10:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-08 12:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-08 13:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-08 14:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-08 15:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-09 06:00:00 PST,+50,+44.8,+82,+0 +2020-01-09 09:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-09 10:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-09 11:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-09 12:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-09 14:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-09 15:00:00 PST,+51.8,+50.2,+94,+0 +2020-01-09 16:00:00 PST,+51.8,+48.4,+88,+26.7 +2020-01-09 17:00:00 PST,+53.6,+48.2,+82,+66.3 +2020-01-09 18:00:00 PST,+53.6,+48.2,+82,+79.6 +2020-01-09 19:00:00 PST,+55.4,+48.4,+77,+85.1 +2020-01-09 20:00:00 PST,+53.6,+46.6,+77,+87.1 +2020-01-10 06:00:00 PST,+44.6,+41,+87,+0 +2020-01-10 07:00:00 PST,+42.8,+41,+93,+0 +2020-01-10 09:00:00 PST,+41,+39.2,+93,+0 +2020-01-10 10:00:00 PST,+41,+41,+100,+0 +2020-01-10 11:00:00 PST,+39.2,+39.2,+100,+0 +2020-01-10 16:00:00 PST,+39.2,+39.2,+100,+26.9 +2020-01-10 17:00:00 PST,+42.8,+41,+93,+66.4 +2020-01-10 18:00:00 PST,+46.4,+42.8,+87,+79.7 +2020-01-10 19:00:00 PST,+48.2,+44.6,+87,+85.2 +2020-01-10 20:00:00 PST,+50,+44.8,+82,+87.2 +2020-01-10 21:00:00 PST,+51.8,+44.4,+76,+86.6 +2020-01-10 22:00:00 PST,+55.4,+40.8,+58,+83.3 +2020-01-10 23:00:00 PST,+55.4,+40.8,+58,+75.3 +2020-01-11 00:00:00 PST,+57.2,+46.4,+67,+54.6 +2020-01-11 01:00:00 PST,+53.6,+46.6,+77,+0.2 +2020-01-11 06:00:00 PST,+50,+42.8,+76,+0 +2020-01-11 07:00:00 PST,+50,+44.8,+82,+0 +2020-01-11 09:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-11 11:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-11 14:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-11 15:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-11 22:00:00 PST,+55.4,+40.8,+58,+83.5 +2020-01-12 00:00:00 PST,+53.6,+44.8,+72,+55.2 +2020-01-12 01:00:00 PST,+53.6,+44.8,+72,+0.3 +2020-01-12 02:00:00 PST,+50,+42.8,+76,+0 +2020-01-12 04:00:00 PST,+50,+41,+71,+0 +2020-01-12 05:00:00 PST,+48.2,+43,+82,+0 +2020-01-12 06:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-12 08:00:00 PST,+48.2,+43,+82,+0 +2020-01-12 09:00:00 PST,+46.4,+40.8,+81,+0 +2020-01-12 10:00:00 PST,+48.2,+39.2,+71,+0 +2020-01-12 11:00:00 PST,+46.4,+40.8,+81,+0 +2020-01-12 12:00:00 PST,+44.6,+41,+87,+0 +2020-01-12 13:00:00 PST,+42.8,+39.2,+87,+0 +2020-01-12 14:00:00 PST,+44.6,+37.6,+76,+0 +2020-01-12 15:00:00 PST,+42.8,+37.4,+81,+0 +2020-01-12 16:00:00 PST,+42.8,+37.4,+81,+27.5 +2020-01-12 17:00:00 PST,+44.6,+39.2,+81,+66.7 +2020-01-12 18:00:00 PST,+48.2,+39.2,+71,+79.9 +2020-01-12 19:00:00 PST,+50,+39,+66,+85.4 +2020-01-12 20:00:00 PST,+55.4,+39,+54,+87.3 +2020-01-12 21:00:00 PST,+55.4,+40.8,+58,+86.8 +2020-01-12 22:00:00 PST,+55.4,+43,+63,+83.6 +2020-01-13 03:00:00 PST,+50,+41,+71,+0 +2020-01-13 04:00:00 PST,+50,+42.8,+76,+0 +2020-01-13 05:00:00 PST,+50,+44.8,+82,+0 +2020-01-13 07:00:00 PST,+48.2,+43,+82,+0 +2020-01-13 08:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-13 10:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-13 11:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-13 12:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-13 13:00:00 PST,+46.4,+44.4,+93,+0 +2020-01-13 14:00:00 PST,+44.6,+41,+87,+0 +2020-01-13 15:00:00 PST,+44.6,+42.6,+93,+0 +2020-01-13 17:00:00 PST,+48.2,+46.6,+94,+66.9 +2020-01-13 18:00:00 PST,+50,+46.2,+87,+80 +2020-01-13 20:00:00 PST,+55.4,+44.6,+67,+87.4 +2020-01-13 21:00:00 PST,+55.4,+44.6,+67,+86.9 +2020-01-13 23:00:00 PST,+55.4,+43,+63,+76.1 +2020-01-14 01:00:00 PST,+53.6,+43,+67,+1 +2020-01-14 03:00:00 PST,+51.8,+44.4,+76,+0 +2020-01-14 04:00:00 PST,+50,+44.8,+82,+0 +2020-01-14 05:00:00 PST,+51.8,+44.4,+76,+0 +2020-01-14 06:00:00 PST,+50,+46.2,+87,+0 +2020-01-14 08:00:00 PST,+50,+48.4,+94,+0 +2020-01-14 09:00:00 PST,+50,+50,+100,+0 +2020-01-14 10:00:00 PST,+50,+48.4,+94,+0 +2020-01-14 11:00:00 PST,+50,+44.8,+82,+0 +2020-01-14 12:00:00 PST,+50,+41,+71,+0 +2020-01-14 13:00:00 PST,+48.2,+43,+82,+0 +2020-01-14 14:00:00 PST,+46.4,+44.4,+93,+0 +2020-01-14 16:00:00 PST,+50,+42.8,+76,+28.2 +2020-01-14 17:00:00 PST,+50,+42.8,+76,+67 +2020-01-14 18:00:00 PST,+53.6,+44.8,+72,+80.1 +2020-01-14 19:00:00 PST,+53.6,+44.8,+72,+85.5 +2020-01-14 20:00:00 PST,+53.6,+41.4,+63,+87.5 +2020-01-14 21:00:00 PST,+55.4,+37.6,+51,+87 +2020-01-14 22:00:00 PST,+55.4,+37.6,+51,+83.9 +2020-01-14 23:00:00 PST,+53.6,+37.4,+54,+76.3 +2020-01-15 00:00:00 PST,+53.6,+37.4,+54,+57.1 +2020-01-15 01:00:00 PST,+50,+39.6,+67,+1.5 +2020-01-15 02:00:00 PST,+50,+39.6,+67,+0 +2020-01-15 03:00:00 PST,+48.2,+41,+76,+0 +2020-01-15 05:00:00 PST,+46.4,+41.2,+82,+0 +2020-01-15 06:00:00 PST,+44.6,+41,+87,+0 +2020-01-15 07:00:00 PST,+44.6,+39.2,+81,+0 +2020-01-15 08:00:00 PST,+42.8,+39.2,+87,+0 +2020-01-15 09:00:00 PST,+41,+37.4,+87,+0 +2020-01-15 10:00:00 PST,+39.2,+39.2,+100,+0 +2020-01-15 13:00:00 PST,+39.2,+37.4,+93,+0 +2020-01-15 14:00:00 PST,+39.2,+39.2,+100,+0 +2020-01-15 15:00:00 PST,+39.2,+37.4,+93,+0 +2020-01-15 16:00:00 PST,+41,+39.2,+93,+28.6 +2020-01-15 17:00:00 PST,+44.6,+41,+87,+67.2 +2020-01-15 18:00:00 PST,+46.4,+42.8,+87,+80.2 +2020-01-15 19:00:00 PST,+48.2,+43,+82,+85.6 +2020-01-15 20:00:00 PST,+50,+39.6,+67,+87.6 +2020-01-15 21:00:00 PST,+50,+41,+71,+87.1 +2020-01-15 22:00:00 PST,+51.8,+39.2,+62,+84.1 +2020-01-15 23:00:00 PST,+51.8,+37.4,+58,+76.6 +2020-01-16 00:00:00 PST,+51.8,+37.4,+58,+57.7 +2020-01-16 01:00:00 PST,+50,+39.6,+67,+2.2 +2020-01-16 02:00:00 PST,+48.2,+39.2,+71,+0 +2020-01-16 03:00:00 PST,+46.4,+39.2,+76,+0 +2020-01-16 04:00:00 PST,+48.2,+37.4,+66,+0 +2020-01-16 05:00:00 PST,+46.4,+39.2,+76,+0 +2020-01-16 08:00:00 PST,+48.2,+39.2,+71,+0 +2020-01-16 09:00:00 PST,+48.2,+41,+76,+0 +2020-01-16 10:00:00 PST,+50,+41,+71,+0 +2020-01-16 11:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-16 12:00:00 PST,+50,+44.8,+82,+0 +2020-01-16 13:00:00 PST,+50,+42.8,+76,+0 +2020-01-16 15:00:00 PST,+50,+41,+71,+0 +2020-01-16 16:00:00 PST,+51.8,+46.4,+82,+11.6 +2020-01-16 17:00:00 PST,+51.8,+46.4,+82,+20.2 +2020-01-16 18:00:00 PST,+44.6,+44.6,+100,+32.1 +2020-01-16 19:00:00 PST,+44.6,+44.6,+100,+85.7 +2020-01-16 20:00:00 PST,+44.6,+44.6,+100,+87.7 +2020-01-16 21:00:00 PST,+46.4,+44.4,+93,+87.3 +2020-01-16 22:00:00 PST,+48.2,+43,+82,+84.2 +2020-01-16 23:00:00 PST,+50,+44.8,+82,+76.8 +2020-01-17 00:00:00 PST,+50,+41,+71,+58.3 +2020-01-17 01:00:00 PST,+48.2,+39.2,+71,+3 +2020-01-17 02:00:00 PST,+48.2,+41,+76,+0 +2020-01-17 03:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-17 05:00:00 PST,+44.6,+42.6,+93,+0 +2020-01-17 07:00:00 PST,+42.8,+42.8,+100,+0 +2020-01-17 08:00:00 PST,+42.8,+41,+93,+0 +2020-01-17 09:00:00 PST,+44.6,+41,+87,+0 +2020-01-17 10:00:00 PST,+41,+41,+100,+0 +2020-01-17 11:00:00 PST,+39.2,+39.2,+100,+0 +2020-01-17 16:00:00 PST,+39.2,+39.2,+100,+29.5 +2020-01-17 17:00:00 PST,+44.6,+42.6,+93,+67.6 +2020-01-17 18:00:00 PST,+44.6,+42.6,+93,+80.4 +2020-01-17 19:00:00 PST,+51.8,+43,+72,+85.8 +2020-01-17 20:00:00 PST,+51.8,+42.6,+71,+87.8 +2020-01-17 21:00:00 PST,+53.6,+37.4,+54,+87.4 +2020-01-17 22:00:00 PST,+53.6,+37.4,+54,+84.4 +2020-01-17 23:00:00 PST,+53.6,+37.4,+54,+77.1 +2020-01-18 00:00:00 PST,+53.6,+37.4,+54,+58.9 +2020-01-18 01:00:00 PST,+50,+39.6,+67,+3.9 +2020-01-18 02:00:00 PST,+48.2,+41,+76,+0 +2020-01-18 03:00:00 PST,+46.4,+41.2,+82,+0 +2020-01-18 04:00:00 PST,+39.2,+39.2,+100,+0 +2020-01-18 05:00:00 PST,+46.4,+39.2,+76,+0 +2020-01-18 07:00:00 PST,+46.4,+37.6,+71,+0 +2020-01-18 08:00:00 PST,+44.6,+39.2,+81,+0 +2020-01-18 09:00:00 PST,+42.8,+39.2,+87,+0 +2020-01-18 11:00:00 PST,+41,+39.2,+93,+0 +2020-01-18 14:00:00 PST,+42.8,+39.2,+87,+0 +2020-01-18 16:00:00 PST,+42.8,+41,+93,+30 +2020-01-18 17:00:00 PST,+46.4,+41.2,+82,+67.8 +2020-01-18 18:00:00 PST,+46.4,+40.8,+81,+80.5 +2020-01-18 19:00:00 PST,+50,+41,+71,+85.9 +2020-01-18 20:00:00 PST,+51.8,+41.2,+67,+87.9 +2020-01-18 21:00:00 PST,+51.8,+41.2,+67,+87.5 +2020-01-18 22:00:00 PST,+53.6,+43,+67,+84.5 +2020-01-18 23:00:00 PST,+53.6,+40.8,+62,+77.3 +2020-01-19 00:00:00 PST,+53.6,+43,+67,+59.5 +2020-01-19 01:00:00 PST,+51.8,+41.2,+67,+4.9 +2020-01-19 02:00:00 PST,+50,+44.8,+82,+0 +2020-01-19 04:00:00 PST,+48.2,+41,+76,+0 +2020-01-19 06:00:00 PST,+48.2,+37.4,+66,+0 +2020-01-19 07:00:00 PST,+46.4,+37.6,+71,+0 +2020-01-19 09:00:00 PST,+46.4,+35.6,+66,+0 +2020-01-19 10:00:00 PST,+44.6,+35.8,+71,+0 +2020-01-19 11:00:00 PST,+42.8,+35.8,+76,+0 +2020-01-19 12:00:00 PST,+41,+35.6,+81,+0 +2020-01-19 14:00:00 PST,+41,+37.4,+87,+0 +2020-01-19 16:00:00 PST,+44.6,+37.6,+76,+30.6 +2020-01-19 17:00:00 PST,+46.4,+37.6,+71,+68 +2020-01-19 18:00:00 PST,+48.2,+39.2,+71,+80.6 +2020-01-19 20:00:00 PST,+50,+39.6,+67,+87.9 +2020-01-19 21:00:00 PST,+50,+39,+66,+87.6 +2020-01-19 22:00:00 PST,+51.8,+41.2,+67,+84.7 +2020-01-19 23:00:00 PST,+51.8,+41.2,+67,+77.6 +2020-01-20 00:00:00 PST,+51.8,+41.2,+67,+60 +2020-01-20 01:00:00 PST,+50,+41,+71,+6.1 +2020-01-20 02:00:00 PST,+50,+41,+71,+0 +2020-01-20 04:00:00 PST,+48.2,+41,+76,+0 +2020-01-20 05:00:00 PST,+46.4,+40.8,+81,+0 +2020-01-20 08:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-20 11:00:00 PST,+46.4,+40.8,+81,+0 +2020-01-20 16:00:00 PST,+46.4,+42.8,+87,+31.2 +2020-01-20 17:00:00 PST,+48.2,+43,+82,+68.2 +2020-01-20 19:00:00 PST,+50,+44.8,+82,+86.1 +2020-01-20 21:00:00 PST,+51.8,+44.8,+77,+87.7 +2020-01-20 22:00:00 PST,+51.8,+44.4,+76,+84.8 +2020-01-20 23:00:00 PST,+53.6,+44.8,+72,+77.8 +2020-01-21 01:00:00 PST,+50,+46.6,+88,+7.3 +2020-01-21 02:00:00 PST,+50,+46.2,+87,+0 +2020-01-21 03:00:00 PST,+50,+44.8,+82,+0 +2020-01-21 04:00:00 PST,+50,+46.2,+87,+0 +2020-01-21 05:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-21 06:00:00 PST,+50,+44.8,+82,+0 +2020-01-21 07:00:00 PST,+51.8,+42.6,+71,+0 +2020-01-21 08:00:00 PST,+53.6,+44.8,+72,+0 +2020-01-21 09:00:00 PST,+50,+44.8,+82,+0 +2020-01-21 10:00:00 PST,+50,+46.2,+87,+0 +2020-01-21 11:00:00 PST,+50,+44.8,+82,+0 +2020-01-21 12:00:00 PST,+50,+46.2,+87,+0 +2020-01-21 15:00:00 PST,+51.8,+46.4,+82,+0 +2020-01-21 16:00:00 PST,+50,+48.4,+94,+31.8 +2020-01-21 17:00:00 PST,+53.6,+48.2,+82,+68.4 +2020-01-21 18:00:00 PST,+55.4,+48.4,+77,+80.9 +2020-01-21 19:00:00 PST,+57.2,+48.2,+72,+86.2 +2020-01-21 20:00:00 PST,+57.2,+50,+77,+88.1 +2020-01-21 21:00:00 PST,+57.2,+50,+77,+87.8 +2020-01-21 22:00:00 PST,+57.2,+50,+77,+84.9 +2020-01-21 23:00:00 PST,+55.4,+50,+82,+78.1 +2020-01-22 00:00:00 PST,+55.4,+50,+82,+61.2 +2020-01-22 01:00:00 PST,+55.4,+50,+82,+8.6 +2020-01-22 02:00:00 PST,+55.4,+50,+82,+0 +2020-01-22 03:00:00 PST,+55.4,+52,+88,+0 +2020-01-22 05:00:00 PST,+55.4,+50,+82,+0 +2020-01-22 06:00:00 PST,+55.4,+52,+88,+0 +2020-01-22 11:00:00 PST,+53.6,+52,+94,+0 +2020-01-22 12:00:00 PST,+53.6,+53.6,+100,+0 +2020-01-22 13:00:00 PST,+51.8,+51.8,+100,+0 +2020-01-22 14:00:00 PST,+53.6,+53.6,+100,+0 +2020-01-22 16:00:00 PST,+51.8,+51.8,+100,+32.4 +2020-01-22 17:00:00 PST,+55.4,+53.8,+94,+68.6 +2020-01-22 18:00:00 PST,+53.6,+53.6,+100,+81 +2020-01-22 19:00:00 PST,+53.6,+53.6,+100,+86.2 +2020-01-22 20:00:00 PST,+55.4,+53.8,+94,+88.2 +2020-01-22 21:00:00 PST,+57.2,+50,+77,+87.9 +2020-01-22 22:00:00 PST,+59,+50,+72,+85.1 +2020-01-22 23:00:00 PST,+59,+50,+72,+78.3 +2020-01-23 00:00:00 PST,+57.2,+51.8,+82,+61.7 +2020-01-23 01:00:00 PST,+57.2,+50,+77,+9.9 +2020-01-23 02:00:00 PST,+55.4,+50,+82,+0 +2020-01-23 03:00:00 PST,+53.6,+50.2,+88,+0 +2020-01-23 05:00:00 PST,+51.8,+48.4,+88,+0 +2020-01-23 06:00:00 PST,+50,+48.4,+94,+0 +2020-01-23 07:00:00 PST,+50,+46.2,+87,+0 +2020-01-23 08:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-23 10:00:00 PST,+46.4,+44.4,+93,+0 +2020-01-23 11:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-23 14:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-23 15:00:00 PST,+50,+46.2,+87,+0 +2020-01-23 16:00:00 PST,+50,+48.4,+94,+33 +2020-01-23 17:00:00 PST,+51.8,+50.2,+94,+68.9 +2020-01-23 18:00:00 PST,+53.6,+50.2,+88,+81.1 +2020-01-23 19:00:00 PST,+55.4,+50,+82,+86.3 +2020-01-23 20:00:00 PST,+55.4,+50,+82,+88.3 +2020-01-23 21:00:00 PST,+57.2,+48.2,+72,+88 +2020-01-23 22:00:00 PST,+57.2,+48.2,+72,+85.2 +2020-01-23 23:00:00 PST,+55.4,+52,+88,+78.5 +2020-01-24 00:00:00 PST,+57.2,+51.8,+82,+62.2 +2020-01-24 01:00:00 PST,+53.6,+52,+94,+11.4 +2020-01-24 02:00:00 PST,+53.6,+50.2,+88,+0 +2020-01-24 04:00:00 PST,+55.4,+50,+82,+0 +2020-01-24 05:00:00 PST,+53.6,+50.2,+88,+0 +2020-01-24 07:00:00 PST,+50,+50,+100,+0 +2020-01-24 08:00:00 PST,+50,+48.4,+94,+0 +2020-01-24 11:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-24 13:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-24 16:00:00 PST,+48.2,+48.2,+100,+33.7 +2020-01-24 17:00:00 PST,+50,+48.4,+94,+69.1 +2020-01-24 18:00:00 PST,+55.4,+50,+82,+81.3 +2020-01-24 19:00:00 PST,+55.4,+52,+88,+86.4 +2020-01-24 20:00:00 PST,+57.2,+51.8,+82,+88.4 +2020-01-24 21:00:00 PST,+57.2,+53.6,+88,+88.1 +2020-01-24 22:00:00 PST,+59,+53.6,+82,+85.4 +2020-01-25 00:00:00 PST,+62.6,+53.8,+73,+62.8 +2020-01-25 01:00:00 PST,+62.6,+53.4,+72,+12.8 +2020-01-25 02:00:00 PST,+59,+53.6,+82,+0 +2020-01-25 04:00:00 PST,+57.2,+53.6,+88,+0 +2020-01-25 07:00:00 PST,+53.6,+53.6,+100,+0 +2020-01-25 08:00:00 PST,+55.4,+53.8,+94,+0 +2020-01-25 09:00:00 PST,+53.6,+53.6,+100,+0 +2020-01-25 11:00:00 PST,+55.4,+55.4,+100,+0 +2020-01-25 12:00:00 PST,+53.6,+53.6,+100,+0 +2020-01-25 15:00:00 PST,+51.8,+51.8,+100,+0 +2020-01-25 16:00:00 PST,+53.6,+53.6,+100,+34.4 +2020-01-25 17:00:00 PST,+55.4,+53.8,+94,+69.4 +2020-01-25 18:00:00 PST,+55.4,+55.4,+100,+81.4 +2020-01-25 19:00:00 PST,+55.4,+55.4,+100,+86.5 +2020-01-25 20:00:00 PST,+55.4,+55.4,+100,+88.4 +2020-01-25 21:00:00 PST,+57.2,+57.2,+100,+88.1 +2020-01-25 22:00:00 PST,+59,+57.2,+94,+85.5 +2020-01-25 23:00:00 PST,+59,+57.2,+94,+79 +2020-01-26 00:00:00 PST,+60.8,+55.6,+83,+63.3 +2020-01-26 01:00:00 PST,+60.8,+55.2,+82,+14.3 +2020-01-26 02:00:00 PST,+59,+55.4,+88,+0 +2020-01-26 04:00:00 PST,+60.8,+55.2,+82,+0 +2020-01-26 05:00:00 PST,+60.8,+55.6,+83,+0 +2020-01-26 06:00:00 PST,+60.8,+55.2,+82,+0 +2020-01-26 07:00:00 PST,+57.2,+55.4,+94,+0 +2020-01-26 08:00:00 PST,+57.2,+57.2,+100,+0 +2020-01-26 09:00:00 PST,+55.4,+55.4,+100,+0 +2020-01-26 10:00:00 PST,+57.2,+57.2,+100,+0 +2020-01-26 11:00:00 PST,+57.2,+55.4,+94,+0 +2020-01-26 12:00:00 PST,+55.4,+55.4,+100,+0 +2020-01-26 13:00:00 PST,+55.4,+53.8,+94,+0 +2020-01-26 14:00:00 PST,+55.4,+55.4,+100,+0 +2020-01-26 16:00:00 PST,+55.4,+55.4,+100,+35.2 +2020-01-26 17:00:00 PST,+57.2,+53.6,+88,+69.6 +2020-01-26 18:00:00 PST,+59,+53.6,+82,+81.5 +2020-01-26 19:00:00 PST,+59,+50,+72,+86.6 +2020-01-26 20:00:00 PST,+60.8,+50.2,+68,+88.5 +2020-01-26 21:00:00 PST,+60.8,+50.2,+68,+88.2 +2020-01-26 22:00:00 PST,+59,+48.4,+68,+85.6 +2020-01-26 23:00:00 PST,+59,+46.4,+63,+79.2 +2020-01-27 00:00:00 PST,+59,+46.4,+63,+63.8 +2020-01-27 01:00:00 PST,+57.2,+46.4,+67,+15.7 +2020-01-27 02:00:00 PST,+55.4,+44.6,+67,+0 +2020-01-27 04:00:00 PST,+53.6,+44.8,+72,+0 +2020-01-27 05:00:00 PST,+53.6,+40.8,+62,+0 +2020-01-27 06:00:00 PST,+48.2,+43,+82,+0 +2020-01-27 08:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-27 09:00:00 PST,+46.4,+40.8,+81,+0 +2020-01-27 10:00:00 PST,+48.2,+41,+76,+0 +2020-01-27 11:00:00 PST,+46.4,+40.8,+81,+0 +2020-01-27 13:00:00 PST,+46.4,+42.8,+87,+0 +2020-01-27 14:00:00 PST,+44.6,+41,+87,+0 +2020-01-27 16:00:00 PST,+48.2,+44.6,+87,+35.9 +2020-01-27 17:00:00 PST,+48.2,+44.6,+87,+69.9 +2020-01-27 18:00:00 PST,+53.6,+48.2,+82,+81.6 +2020-01-27 19:00:00 PST,+53.6,+50.2,+88,+86.7 +2020-01-27 20:00:00 PST,+55.4,+50,+82,+88.6 +2020-01-27 21:00:00 PST,+55.4,+50,+82,+88.3 +2020-01-27 22:00:00 PST,+55.4,+52,+88,+85.7 +2020-01-27 23:00:00 PST,+57.2,+53.6,+88,+79.4 +2020-01-28 00:00:00 PST,+57.2,+53.6,+88,+64.3 +2020-01-28 02:00:00 PST,+53.6,+48.2,+82,+0 +2020-01-28 07:00:00 PST,+50,+46.2,+87,+0 +2020-01-28 08:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-28 11:00:00 PST,+50,+46.2,+87,+0 +2020-01-28 13:00:00 PST,+50,+48.4,+94,+0 +2020-01-28 16:00:00 PST,+51.8,+48.4,+88,+36.7 +2020-01-28 17:00:00 PST,+51.8,+48.4,+88,+70.1 +2020-01-28 18:00:00 PST,+57.2,+50,+77,+81.8 +2020-01-28 19:00:00 PST,+57.2,+50,+77,+34.7 +2020-01-28 20:00:00 PST,+59,+53.6,+82,+88.7 +2020-01-28 21:00:00 PST,+59,+53.6,+82,+88.4 +2020-01-28 22:00:00 PST,+59,+51.8,+77,+85.9 +2020-01-28 23:00:00 PST,+59,+50,+72,+79.7 +2020-01-29 00:00:00 PST,+59,+50,+72,+64.8 +2020-01-29 01:00:00 PST,+57.2,+50,+77,+18.7 +2020-01-29 02:00:00 PST,+55.4,+48.4,+77,+0 +2020-01-29 03:00:00 PST,+53.6,+48.2,+82,+0 +2020-01-29 05:00:00 PST,+51.8,+48.4,+88,+0 +2020-01-29 06:00:00 PST,+51.8,+46.4,+82,+0 +2020-01-29 07:00:00 PST,+50,+46.2,+87,+0 +2020-01-29 08:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-29 09:00:00 PST,+50,+46.2,+87,+0 +2020-01-29 11:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-29 13:00:00 PST,+46.4,+44.4,+93,+0 +2020-01-29 16:00:00 PST,+50,+46.6,+88,+37.4 +2020-01-29 17:00:00 PST,+51.8,+48.4,+88,+70.4 +2020-01-29 18:00:00 PST,+55.4,+48.4,+77,+81.9 +2020-01-29 19:00:00 PST,+57.2,+48.2,+72,+86.9 +2020-01-29 20:00:00 PST,+57.2,+48.2,+72,+88.8 +2020-01-29 21:00:00 PST,+57.2,+50,+77,+88.5 +2020-01-29 22:00:00 PST,+59,+46.4,+63,+86 +2020-01-29 23:00:00 PST,+60.8,+48.2,+63,+79.9 +2020-01-30 00:00:00 PST,+57.2,+46.4,+67,+65.2 +2020-01-30 01:00:00 PST,+57.2,+46.4,+67,+20.2 +2020-01-30 02:00:00 PST,+55.4,+46.6,+72,+0 +2020-01-30 04:00:00 PST,+53.6,+44.8,+72,+0 +2020-01-30 05:00:00 PST,+50,+44.8,+82,+0 +2020-01-30 08:00:00 PST,+48.2,+44.6,+87,+0 +2020-01-30 09:00:00 PST,+50,+44.8,+82,+0 +2020-01-30 10:00:00 PST,+53.6,+50.2,+88,+0 +2020-01-30 11:00:00 PST,+50,+50,+100,+0 +2020-01-30 12:00:00 PST,+50,+46.2,+87,+0 +2020-01-30 14:00:00 PST,+48.2,+46.6,+94,+0 +2020-01-30 15:00:00 PST,+50,+46.2,+87,+0 +2020-01-30 16:00:00 PST,+50,+48.4,+94,+11.5 +2020-01-30 17:00:00 PST,+51.8,+50.2,+94,+70.7 +2020-01-30 18:00:00 PST,+55.4,+53.8,+94,+82 +2020-01-30 20:00:00 PST,+59,+53.6,+82,+88.8 +2020-01-30 21:00:00 PST,+62.6,+53.8,+73,+88.6 +2020-01-30 23:00:00 PST,+62.6,+53.8,+73,+80.1 +2020-01-31 01:00:00 PST,+59,+53.6,+82,+21.6 +2020-01-31 02:00:00 PST,+59,+53.6,+82,+0 +2020-01-31 03:00:00 PST,+55.4,+53.8,+94,+0 +2020-01-31 04:00:00 PST,+53.6,+53.6,+100,+0 +2020-01-31 07:00:00 PST,+50,+50,+100,+0 +2020-01-31 10:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-31 13:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-31 14:00:00 PST,+48.2,+48.2,+100,+0 +2020-01-31 15:00:00 PST,+46.4,+46.4,+100,+0 +2020-01-31 16:00:00 PST,+48.2,+48.2,+100,+11.7 +2020-01-31 17:00:00 PST,+50,+50,+100,+70.9 +2020-01-31 18:00:00 PST,+53.6,+53.6,+100,+82.2 +2020-01-31 19:00:00 PST,+59,+55.4,+88,+87 +2020-01-31 20:00:00 PST,+59,+53.6,+82,+88.9 +2020-01-31 21:00:00 PST,+62.6,+53.8,+73,+88.7 +2020-01-31 22:00:00 PST,+62.6,+53.4,+72,+86.2 +2020-01-31 23:00:00 PST,+66.2,+48,+52,+80.3 +2020-02-01 00:00:00 PST,+66.2,+48,+52,+66.1 diff --git a/tools/autotest/test_meteostat.glm b/tools/autotest/test_meteostat.glm new file mode 100644 index 000000000..5fdcbe2f9 --- /dev/null +++ b/tools/autotest/test_meteostat.glm @@ -0,0 +1,27 @@ +// test_meteostat.glm + +#python -m meteostat_weather -r -p=37.5,-122.3 -n=test -g=test_meteostat_opt.glm -s=2020-01-01 -e=2020-02-01 -c=test_meteostat_opt.csv + +#include "test_meteostat_opt.glm" + +clock { + timezone "PST+8PDT"; + starttime "2020-01-01 00:00:00 PST"; + stoptime "2021-01-01 00:00:00 PST"; +} + +module tape +{ + csv_header_type NONE; +} + +object recorder +{ + parent "test"; + file "test_meteostat.csv"; + property "temperature,dewpoint,humidity,solar_direct"; +} + +#ifexist ../test_meteostat.csv +#on_exit 0 diff -I "^//" ../test_meteostat.csv test_meteostat.csv +#endif diff --git a/tools/autotest/test_meteostat_opt.csv b/tools/autotest/test_meteostat_opt.csv new file mode 100644 index 000000000..161b9d7bb --- /dev/null +++ b/tools/autotest/test_meteostat_opt.csv @@ -0,0 +1,634 @@ +2020-01-01 02:00:00,54.0,0,0.0,55.4,39.0,0,0,4.7,0,0,290.0,0.0 +2020-01-01 06:00:00,82.0,0,0.0,48.2,43.0,0,0,5.8,0,0,160.0,0.0 +2020-01-01 07:00:00,82.0,0,0.0,48.2,43.0,0,0,5.8,0,0,160.0,0.0 +2020-01-01 08:00:00,76.0,0,0.0,48.2,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-01 09:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-01 10:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-01 11:00:00,100.0,0,0.0,46.4,46.4,0,0,3.4,0,0,200.0,0.0 +2020-01-01 12:00:00,100.0,0,0.0,44.6,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-01 13:00:00,100.0,0,0.0,44.6,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-01 14:00:00,100.0,0,0.0,44.6,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-01 15:00:00,94.0,0,0.0,48.2,46.6,0,0,5.8,0,0,340.0,0.0 +2020-01-01 18:00:00,94.0,0,0.0,50.0,48.4,0,0,3.4,0,0,0,79.1 +2020-01-01 19:00:00,77.0,0,0.0,57.2,50.0,0,0,3.4,0,0,0,84.6 +2020-01-01 20:00:00,82.0,0,0.0,59.0,53.6,0,0,11.4,0,0,300.0,86.4 +2020-01-01 21:00:00,82.0,0,0.0,59.0,53.6,0,0,8.1,0,0,270.0,85.7 +2020-01-01 22:00:00,82.0,0,0.0,59.0,53.6,0,0,8.1,0,0,320.0,82.0 +2020-01-01 23:00:00,82.0,0,0.0,59.0,53.6,0,0,9.2,0,0,280.0,72.9 +2020-01-02 00:00:00,82.0,0,0.0,59.0,53.6,0,0,9.2,0,0,280.0,49.0 +2020-01-02 06:00:00,88.0,0,0.0,53.6,50.2,0,0,9.2,0,0,290.0,0.0 +2020-01-02 07:00:00,88.0,0,0.0,53.6,50.2,0,0,8.1,0,0,290.0,0.0 +2020-01-02 08:00:00,88.0,0,0.0,53.6,50.2,0,0,10.3,0,0,280.0,0.0 +2020-01-02 09:00:00,94.0,0,0.0,51.8,50.2,0,0,4.7,0,0,320.0,0.0 +2020-01-02 10:00:00,94.0,0,0.0,50.0,48.4,0,0,5.8,0,0,310.0,0.0 +2020-01-02 11:00:00,88.0,0,0.0,51.8,48.4,0,0,4.7,0,0,290.0,0.0 +2020-01-02 12:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-02 13:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,280.0,0.0 +2020-01-02 14:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-02 15:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-02 16:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,26.2 +2020-01-02 17:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,65.8 +2020-01-02 21:00:00,63.0,0,0.0,57.2,44.8,0,0,3.4,0,0,360.0,85.8 +2020-01-02 22:00:00,63.0,0,0.0,59.0,46.4,0,0,4.7,0,0,50.0,82.1 +2020-01-03 00:00:00,55.0,0,0.0,60.8,44.6,0,0,0.0,0,0,0.0,49.6 +2020-01-03 01:00:00,67.0,0,0.0,59.0,48.0,0,0,0.0,0,0,0.0,0.0 +2020-01-03 06:00:00,87.0,0,0.0,48.2,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-03 07:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0.0,0.0 +2020-01-03 08:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-03 09:00:00,93.0,0,0.0,44.6,42.6,0,0,0.0,0,0,0.0,0.0 +2020-01-03 10:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-03 11:00:00,93.0,0,0.0,44.6,42.6,0,0,0.0,0,0,0.0,0.0 +2020-01-03 12:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-03 13:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-03 14:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-03 15:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-03 16:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,26.2 +2020-01-03 18:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,79.2 +2020-01-03 19:00:00,82.0,0,0.0,53.6,48.2,0,0,0.0,0,0,0.0,84.7 +2020-01-03 20:00:00,67.0,0,0.0,57.2,46.4,0,0,0.0,0,0,0.0,86.6 +2020-01-04 00:00:00,67.0,0,0.0,57.2,46.4,0,0,4.7,0,0,350.0,50.2 +2020-01-04 01:00:00,63.0,0,0.0,57.2,44.8,0,0,3.4,0,0,320.0,0.0 +2020-01-04 06:00:00,87.0,0,0.0,48.2,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-04 07:00:00,82.0,0,0.0,48.2,43.0,0,0,3.4,0,0,230.0,0.0 +2020-01-04 08:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-04 09:00:00,87.0,0,0.0,46.4,42.8,0,0,3.4,0,0,220.0,0.0 +2020-01-04 10:00:00,94.0,0,0.0,48.2,46.6,0,0,5.8,0,0,320.0,0.0 +2020-01-04 11:00:00,82.0,0,0.0,48.2,43.0,0,0,0.0,0,0,0.0,0.0 +2020-01-04 12:00:00,87.0,0,0.0,48.2,44.6,0,0,4.7,0,0,320.0,0.0 +2020-01-04 13:00:00,94.0,0,0.0,48.2,46.6,0,0,3.4,0,0,170.0,0.0 +2020-01-04 14:00:00,94.0,0,0.0,50.0,48.4,0,0,3.4,0,0,40.0,0.0 +2020-01-04 15:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-04 16:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,120.0,26.2 +2020-01-04 19:00:00,72.0,0,0.0,57.2,48.2,0,0,0.0,0,0,0.0,84.8 +2020-01-04 22:00:00,72.0,0,0.0,57.2,48.2,0,0,9.2,0,0,320.0,82.4 +2020-01-04 23:00:00,67.0,0,0.0,57.2,46.4,0,0,9.2,0,0,330.0,73.7 +2020-01-05 00:00:00,67.0,0,0.0,57.2,46.4,0,0,5.8,0,0,300.0,50.8 +2020-01-05 06:00:00,87.0,0,0.0,48.2,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-05 07:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,260.0,0.0 +2020-01-05 08:00:00,82.0,0,0.0,50.0,44.8,0,0,7.0,0,0,260.0,0.0 +2020-01-05 09:00:00,82.0,0,0.0,50.0,44.8,0,0,10.3,0,0,270.0,0.0 +2020-01-05 10:00:00,87.0,0,0.0,50.0,46.2,0,0,11.4,0,0,280.0,0.0 +2020-01-05 11:00:00,87.0,0,0.0,48.2,44.6,0,0,3.4,0,0,280.0,0.0 +2020-01-05 12:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-05 13:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-05 14:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-05 15:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-05 18:00:00,76.0,0,0.0,50.0,42.8,0,0,0.0,0,0,0.0,79.3 +2020-01-05 19:00:00,58.0,0,0.0,53.6,39.2,0,0,7.0,0,0,300.0,84.8 +2020-01-05 20:00:00,54.0,0,0.0,55.4,39.0,0,0,9.2,0,0,320.0,86.7 +2020-01-05 21:00:00,51.0,0,0.0,57.2,39.2,0,0,4.7,0,0,310.0,86.1 +2020-01-05 23:00:00,59.0,0,0.0,57.2,43.0,0,0,5.8,0,0,290.0,73.9 +2020-01-06 02:00:00,77.0,0,0.0,53.6,46.6,0,0,4.7,0,0,270.0,0.0 +2020-01-06 03:00:00,82.0,0,0.0,51.8,46.4,0,0,5.8,0,0,260.0,0.0 +2020-01-06 04:00:00,87.0,0,0.0,50.0,46.2,0,0,8.1,0,0,280.0,0.0 +2020-01-06 05:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,0,0.0 +2020-01-06 06:00:00,87.0,0,0.0,48.2,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-06 07:00:00,87.0,0,0.0,48.2,44.6,0,0,3.4,0,0,290.0,0.0 +2020-01-06 08:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0.0,0.0 +2020-01-06 09:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-06 10:00:00,93.0,0,0.0,42.8,41.0,0,0,3.4,0,0,280.0,0.0 +2020-01-06 11:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-06 12:00:00,100.0,0,0.0,41.0,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-06 13:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-06 14:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-06 15:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-06 17:00:00,76.0,0,0.0,48.2,41.0,0,0,3.4,0,0,0,66.0 +2020-01-06 20:00:00,51.0,0,0.0,55.4,37.6,0,0,0.0,0,0,0.0,86.8 +2020-01-06 21:00:00,48.0,0,0.0,57.2,37.8,0,0,0.0,0,0,0.0,86.2 +2020-01-06 22:00:00,45.0,0,0.0,59.0,37.8,0,0,0.0,0,0,0.0,82.7 +2020-01-06 23:00:00,39.0,0,0.0,60.8,35.6,0,0,0.0,0,0,0.0,74.2 +2020-01-07 01:00:00,54.0,0,0.0,55.4,39.0,0,0,4.7,0,0,330.0,0.0 +2020-01-07 02:00:00,58.0,0,0.0,53.6,39.2,0,0,3.4,0,0,0,0.0 +2020-01-07 03:00:00,62.0,0,0.0,51.8,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-07 04:00:00,66.0,0,0.0,50.0,39.0,0,0,0.0,0,0,0.0,0.0 +2020-01-07 06:00:00,76.0,0,0.0,46.4,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-07 07:00:00,76.0,0,0.0,46.4,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-07 08:00:00,81.0,0,0.0,44.6,39.2,0,0,3.4,0,0,290.0,0.0 +2020-01-07 09:00:00,76.0,0,0.0,44.6,37.6,0,0,3.4,0,0,320.0,0.0 +2020-01-07 10:00:00,81.0,0,0.0,42.8,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-07 11:00:00,87.0,0,0.0,41.0,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-07 12:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-07 13:00:00,93.0,0,0.0,39.2,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-07 14:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-07 15:00:00,100.0,0,0.0,41.0,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-07 16:00:00,100.0,0,0.0,41.0,41.0,0,0,0.0,0,0,0.0,26.3 +2020-01-07 19:00:00,71.0,0,0.0,50.0,41.0,0,0,3.4,0,0,0,85.0 +2020-01-07 21:00:00,82.0,0,0.0,51.8,46.4,0,0,4.7,0,0,0,86.3 +2020-01-08 06:00:00,88.0,0,0.0,51.8,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-08 07:00:00,94.0,0,0.0,50.0,48.4,0,0,7.0,0,0,140.0,0.0 +2020-01-08 08:00:00,94.0,0,0.0,50.0,48.4,0,0,5.8,0,0,160.0,0.0 +2020-01-08 09:00:00,100.0,0,0.0,48.2,48.2,0,0,4.7,0,0,220.0,0.0 +2020-01-08 10:00:00,100.0,0,0.0,46.4,46.4,0,0,3.4,0,0,190.0,0.0 +2020-01-08 11:00:00,100.0,0,0.0,46.4,46.4,0,0,3.4,0,0,200.0,0.0 +2020-01-08 12:00:00,100.0,0,0.0,48.2,48.2,0,0,4.7,0,0,220.0,0.0 +2020-01-08 13:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-08 14:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,0.0 +2020-01-08 15:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,270.0,0.0 +2020-01-09 06:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-09 07:00:00,82.0,0,0.0,50.0,44.8,0,0,3.4,0,0,260.0,0.0 +2020-01-09 08:00:00,82.0,0,0.0,50.0,44.8,0,0,3.4,0,0,230.0,0.0 +2020-01-09 09:00:00,87.0,0,0.0,48.2,44.6,0,0,3.4,0,0,180.0,0.0 +2020-01-09 10:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,150.0,0.0 +2020-01-09 11:00:00,87.0,0,0.0,48.2,44.6,0,0,4.7,0,0,190.0,0.0 +2020-01-09 12:00:00,94.0,0,0.0,48.2,46.6,0,0,3.4,0,0,150.0,0.0 +2020-01-09 13:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-09 14:00:00,100.0,0,0.0,48.2,48.2,0.05,0,0.0,0,0,0.0,0.0 +2020-01-09 15:00:00,94.0,0,0.0,51.8,50.2,0.06,0,7.0,0,0,270.0,0.0 +2020-01-09 16:00:00,88.0,0,0.0,51.8,48.4,0,0,16.1,0,0,300.0,26.7 +2020-01-09 17:00:00,82.0,0,0.0,53.6,48.2,0,0,15.0,0,0,270.0,66.3 +2020-01-09 18:00:00,82.0,0,0.0,53.6,48.2,0,0,17.2,0,0,290.0,79.6 +2020-01-09 19:00:00,77.0,0,0.0,55.4,48.4,0,0,8.1,0,0,330.0,85.1 +2020-01-09 20:00:00,77.0,0,0.0,53.6,46.6,0,0,13.9,0,0,340.0,87.1 +2020-01-10 06:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-10 07:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-10 08:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-10 09:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-10 10:00:00,100.0,0,0.0,41.0,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-10 11:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-10 12:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-10 13:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-10 14:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-10 15:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-10 16:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,26.9 +2020-01-10 17:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0.0,66.4 +2020-01-10 18:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,79.7 +2020-01-10 19:00:00,87.0,0,0.0,48.2,44.6,0,0,0.0,0,0,0.0,85.2 +2020-01-10 20:00:00,82.0,0,0.0,50.0,44.8,0,0,4.7,0,0,0,87.2 +2020-01-10 21:00:00,76.0,0,0.0,51.8,44.4,0,0,3.4,0,0,0,86.6 +2020-01-10 22:00:00,58.0,0,0.0,55.4,40.8,0,0,3.4,0,0,0,83.3 +2020-01-10 23:00:00,58.0,0,0.0,55.4,40.8,0,0,3.4,0,0,0,75.3 +2020-01-11 00:00:00,67.0,0,0.0,57.2,46.4,0,0,8.1,0,0,270.0,54.6 +2020-01-11 01:00:00,77.0,0,0.0,53.6,46.6,0,0,7.0,0,0,260.0,0.2 +2020-01-11 06:00:00,76.0,0,0.0,50.0,42.8,0,0,3.4,0,0,210.0,0.0 +2020-01-11 07:00:00,82.0,0,0.0,50.0,44.8,0,0,4.7,0,0,260.0,0.0 +2020-01-11 08:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-11 09:00:00,87.0,0,0.0,48.2,44.6,0,0,4.7,0,0,140.0,0.0 +2020-01-11 10:00:00,87.0,0,0.0,48.2,44.6,0,0,3.4,0,0,160.0,0.0 +2020-01-11 11:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-11 12:00:00,94.0,0,0.0,48.2,46.6,0,0,3.4,0,0,190.0,0.0 +2020-01-11 13:00:00,94.0,0,0.0,48.2,46.6,0,0,3.4,0,0,200.0,0.0 +2020-01-11 14:00:00,100.0,0,0.0,48.2,48.2,0,0,3.4,0,0,250.0,0.0 +2020-01-11 15:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,360.0,0.0 +2020-01-11 22:00:00,58.0,0,0.0,55.4,40.8,0,0,12.7,0,0,260.0,83.5 +2020-01-12 00:00:00,72.0,0,0.0,53.6,44.8,0,0,13.9,0,0,290.0,55.2 +2020-01-12 01:00:00,72.0,0,0.0,53.6,44.8,0,0,10.3,0,0,280.0,0.3 +2020-01-12 02:00:00,76.0,0,0.0,50.0,42.8,0,0,7.0,0,0,250.0,0.0 +2020-01-12 04:00:00,71.0,0,0.0,50.0,41.0,0,0,4.7,0,0,260.0,0.0 +2020-01-12 05:00:00,82.0,0,0.0,48.2,43.0,0,0,5.8,0,0,260.0,0.0 +2020-01-12 06:00:00,87.0,0,0.0,48.2,44.6,0,0,7.0,0,0,270.0,0.0 +2020-01-12 07:00:00,87.0,0,0.0,48.2,44.6,0,0,7.0,0,0,260.0,0.0 +2020-01-12 08:00:00,82.0,0,0.0,48.2,43.0,0,0,8.1,0,0,260.0,0.0 +2020-01-12 09:00:00,81.0,0,0.0,46.4,40.8,0,0,3.4,0,0,280.0,0.0 +2020-01-12 10:00:00,71.0,0,0.0,48.2,39.2,0,0,7.0,0,0,250.0,0.0 +2020-01-12 11:00:00,81.0,0,0.0,46.4,40.8,0,0,4.7,0,0,270.0,0.0 +2020-01-12 12:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-12 13:00:00,87.0,0,0.0,42.8,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-12 14:00:00,76.0,0,0.0,44.6,37.6,0,0,4.7,0,0,230.0,0.0 +2020-01-12 15:00:00,81.0,0,0.0,42.8,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-12 16:00:00,81.0,0,0.0,42.8,37.4,0,0,0.0,0,0,0.0,27.5 +2020-01-12 17:00:00,81.0,0,0.0,44.6,39.2,0,0,0.0,0,0,0.0,66.7 +2020-01-12 18:00:00,71.0,0,0.0,48.2,39.2,0,0,0.0,0,0,0.0,79.9 +2020-01-12 19:00:00,66.0,0,0.0,50.0,39.0,0,0,4.7,0,0,260.0,85.4 +2020-01-12 20:00:00,54.0,0,0.0,55.4,39.0,0,0,4.7,0,0,280.0,87.3 +2020-01-12 21:00:00,58.0,0,0.0,55.4,40.8,0,0,11.4,0,0,270.0,86.8 +2020-01-12 22:00:00,63.0,0,0.0,55.4,43.0,0,0,11.4,0,0,300.0,83.6 +2020-01-13 03:00:00,71.0,0,0.0,50.0,41.0,0,0,7.0,0,0,240.0,0.0 +2020-01-13 04:00:00,76.0,0,0.0,50.0,42.8,0,0,3.4,0,0,0,0.0 +2020-01-13 05:00:00,82.0,0,0.0,50.0,44.8,0,0,5.8,0,0,240.0,0.0 +2020-01-13 06:00:00,82.0,0,0.0,50.0,44.8,0,0,4.7,0,0,150.0,0.0 +2020-01-13 07:00:00,82.0,0,0.0,48.2,43.0,0,0,0.0,0,0,0.0,0.0 +2020-01-13 08:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-13 09:00:00,100.0,0,0.0,46.4,46.4,0,0,7.0,0,0,130.0,0.0 +2020-01-13 10:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,0.0 +2020-01-13 11:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,240.0,0.0 +2020-01-13 12:00:00,87.0,0,0.0,48.2,44.6,0,0,3.4,0,0,280.0,0.0 +2020-01-13 13:00:00,93.0,0,0.0,46.4,44.4,0,0,5.8,0,0,150.0,0.0 +2020-01-13 14:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-13 15:00:00,93.0,0,0.0,44.6,42.6,0,0,0.0,0,0,0.0,0.0 +2020-01-13 17:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,66.9 +2020-01-13 18:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,80.0 +2020-01-13 20:00:00,67.0,0,0.0,55.4,44.6,0,0,10.3,0,0,240.0,87.4 +2020-01-13 21:00:00,67.0,0,0.0,55.4,44.6,0,0,9.2,0,0,260.0,86.9 +2020-01-13 23:00:00,63.0,0,0.0,55.4,43.0,0,0,8.1,0,0,230.0,76.1 +2020-01-14 01:00:00,67.0,0,0.0,53.6,43.0,0,0,4.7,0,0,0,1.0 +2020-01-14 03:00:00,76.0,0,0.0,51.8,44.4,0,0,4.7,0,0,0,0.0 +2020-01-14 04:00:00,82.0,0,0.0,50.0,44.8,0,0,8.1,0,0,150.0,0.0 +2020-01-14 05:00:00,76.0,0,0.0,51.8,44.4,0,0,3.4,0,0,0,0.0 +2020-01-14 06:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,180.0,0.0 +2020-01-14 07:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,200.0,0.0 +2020-01-14 08:00:00,94.0,0,0.0,50.0,48.4,0,0,7.0,0,0,190.0,0.0 +2020-01-14 09:00:00,100.0,0,0.0,50.0,50.0,0,0,3.4,0,0,250.0,0.0 +2020-01-14 10:00:00,94.0,0,7.0,50.0,48.4,0,0,9.2,0,0,250.0,0.0 +2020-01-14 11:00:00,82.0,0,0.0,50.0,44.8,0,0,9.2,0,0,250.0,0.0 +2020-01-14 12:00:00,71.0,0,0.0,50.0,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-14 13:00:00,82.0,0,7.0,48.2,43.0,0,0,5.8,0,0,260.0,0.0 +2020-01-14 14:00:00,93.0,0,7.0,46.4,44.4,0,0,9.2,0,0,300.0,0.0 +2020-01-14 15:00:00,93.0,0,0.0,46.4,44.4,0,0,3.4,0,0,170.0,0.0 +2020-01-14 16:00:00,76.0,0,0.0,50.0,42.8,0,0,0.0,0,0,0,28.2 +2020-01-14 17:00:00,76.0,0,0.0,50.0,42.8,0,0,0.0,0,0,0.0,67.0 +2020-01-14 18:00:00,72.0,0,0.0,53.6,44.8,0,0,5.6,0,0,30.0,80.1 +2020-01-14 19:00:00,72.0,0,0.0,53.6,44.8,0,0,5.8,0,0,30.0,85.5 +2020-01-14 20:00:00,63.0,0,0.0,53.6,41.4,0,0,3.7,0,0,0,87.5 +2020-01-14 21:00:00,51.0,0,0.0,55.4,37.6,0,0,11.8,0,0,290.0,87.0 +2020-01-14 22:00:00,51.0,0,0.0,55.4,37.6,0,0,11.4,0,0,290.0,83.9 +2020-01-14 23:00:00,54.0,0,0.0,53.6,37.4,0,0,8.1,0,0,270.0,76.3 +2020-01-15 00:00:00,54.0,0,0.0,53.6,37.4,0,0,8.1,0,0,270.0,57.1 +2020-01-15 01:00:00,67.0,0,0.0,50.0,39.6,0,0,6.8,0,0,240.0,1.5 +2020-01-15 02:00:00,67.0,0,0.0,50.0,39.6,0,0,6.8,0,0,240.0,0.0 +2020-01-15 03:00:00,76.0,0,0.0,48.2,41.0,0,0,0.0,0,0,0,0.0 +2020-01-15 04:00:00,76.0,0,0.0,48.2,41.0,0,0,0.0,0,0,0,0.0 +2020-01-15 05:00:00,82.0,0,0.0,46.4,41.2,0,0,0,0,0,0,0.0 +2020-01-15 06:00:00,87.0,0,0.0,44.6,41.0,0,0,4.7,0,0,110.0,0.0 +2020-01-15 07:00:00,81.0,0,0.0,44.6,39.2,0,0,4.7,0,0,120.0,0.0 +2020-01-15 08:00:00,87.0,0,0.0,42.8,39.2,0,0,7.0,0,0,120.0,0.0 +2020-01-15 09:00:00,87.0,0,0.0,41.0,37.4,0,0,7.0,0,0,160.0,0.0 +2020-01-15 10:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-15 11:00:00,100.0,0,0.0,39.2,39.2,0,0,3.4,0,0,180.0,0.0 +2020-01-15 12:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-15 13:00:00,93.0,0,0.0,39.2,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-15 14:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-15 15:00:00,93.0,0,0.0,39.2,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-15 16:00:00,93.0,0,0.0,41.0,39.2,0,0,3.7,0,0,0,28.6 +2020-01-15 17:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0,67.2 +2020-01-15 18:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0,80.2 +2020-01-15 19:00:00,82.0,0,0.0,48.2,43.0,0,0,3.7,0,0,0,85.6 +2020-01-15 20:00:00,67.0,0,0.0,50.0,39.6,0,0,4.3,0,0,50.0,87.6 +2020-01-15 21:00:00,71.0,0,0.0,50.0,41.0,0,0,0.0,0,0,0,87.1 +2020-01-15 22:00:00,62.0,0,0.0,51.8,39.2,0,0,6.8,0,0,330.0,84.1 +2020-01-15 23:00:00,58.0,0,0.0,51.8,37.4,0,0,9.3,0,0,220.0,76.6 +2020-01-16 00:00:00,58.0,0,0.0,51.8,37.4,0,0,9.2,0,0,220.0,57.7 +2020-01-16 01:00:00,67.0,0,0.0,50.0,39.6,0,0,0.0,0,0,0,2.2 +2020-01-16 02:00:00,71.0,0,0.0,48.2,39.2,0,0,8.1,0,0,120.0,0.0 +2020-01-16 03:00:00,76.0,0,0.0,46.4,39.2,0,0,5.6,0,0,110.0,0.0 +2020-01-16 04:00:00,66.0,0,0.0,48.2,37.4,0,0,8.1,0,0,150.0,0.0 +2020-01-16 05:00:00,76.0,0,0.0,46.4,39.2,0,0,0,0,0,0,0.0 +2020-01-16 06:00:00,76.0,0,0.0,46.4,39.2,0,0,9.2,0,0,140.0,0.0 +2020-01-16 07:00:00,76.0,0,0.0,46.4,39.2,0,0,11.4,0,0,140.0,0.0 +2020-01-16 08:00:00,71.0,0,0.0,48.2,39.2,0,0,11.4,0,0,130.0,0.0 +2020-01-16 09:00:00,76.0,0,0.0,48.2,41.0,0,0,11.4,0,0,130.0,0.0 +2020-01-16 10:00:00,71.0,0,5.0,50.0,41.0,0,0,9.2,0,0,130.0,0.0 +2020-01-16 11:00:00,87.0,0,5.0,48.2,44.6,0,0,4.7,0,0,170.0,0.0 +2020-01-16 12:00:00,82.0,0,0.0,50.0,44.8,0,0,12.7,0,0,110.0,0.0 +2020-01-16 13:00:00,76.0,0,0.0,50.0,42.8,0,0,16.1,0,0,120.0,0.0 +2020-01-16 14:00:00,76.0,0,0.0,50.0,42.8,0,0,13.9,0,0,120.0,0.0 +2020-01-16 15:00:00,71.0,0,7.0,50.0,41.0,0,0,16.1,0,0,120.0,0.0 +2020-01-16 16:00:00,82.0,0,7.0,51.8,46.4,0,0,16.2,0,0,160.0,11.6 +2020-01-16 17:00:00,82.0,0,8.0,51.8,46.4,0,0,16.1,0,0,160.0,20.2 +2020-01-16 18:00:00,100.0,0,7.0,44.6,44.6,0,0,4.3,0,0,120.0,32.1 +2020-01-16 19:00:00,100.0,0,0.0,44.6,44.6,0,0,4.7,0,0,120.0,85.7 +2020-01-16 20:00:00,100.0,0,0.0,44.6,44.6,0,0,9.2,0,0,100.0,87.7 +2020-01-16 21:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0,87.3 +2020-01-16 22:00:00,82.0,0,0.0,48.2,43.0,0,0,5.6,0,0,140.0,84.2 +2020-01-16 23:00:00,82.0,0,0.0,50.0,44.8,0,0,6.8,0,0,210.0,76.8 +2020-01-17 00:00:00,71.0,0,0.0,50.0,41.0,0,0,3.7,0,0,0,58.3 +2020-01-17 01:00:00,71.0,0,0.0,48.2,39.2,0,0,3.7,0,0,0,3.0 +2020-01-17 02:00:00,76.0,0,0.0,48.2,41.0,0,0,3.7,0,0,0,0.0 +2020-01-17 03:00:00,87.0,0,0.0,46.4,42.8,0,0,3.7,0,0,0,0.0 +2020-01-17 04:00:00,87.0,0,0.0,46.4,42.8,0,0,3.7,0,0,0,0.0 +2020-01-17 05:00:00,93.0,0,7.0,44.6,42.6,0,0,0,0,0,0,0.0 +2020-01-17 06:00:00,93.0,0,0.0,44.6,42.6,0,0,5.8,0,0,190.0,0.0 +2020-01-17 07:00:00,100.0,0,7.0,42.8,42.8,0,0,3.4,0,0,190.0,0.0 +2020-01-17 08:00:00,93.0,0,7.0,42.8,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-17 09:00:00,87.0,0,0.0,44.6,41.0,0.03,0,3.4,0,0,190.0,0.0 +2020-01-17 10:00:00,100.0,0,0.0,41.0,41.0,0,0,4.7,0,0,170.0,0.0 +2020-01-17 11:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-17 12:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-17 13:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-17 14:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-17 15:00:00,100.0,0,0.0,39.2,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-17 16:00:00,100.0,0,0.0,39.2,39.2,0,0,3.4,0,0,0,29.5 +2020-01-17 17:00:00,93.0,0,0.0,44.6,42.6,0,0,0.0,0,0,0,67.6 +2020-01-17 18:00:00,93.0,0,0.0,44.6,42.6,0,0,0.0,0,0,0.0,80.4 +2020-01-17 19:00:00,72.0,0,0.0,51.8,43.0,0,0,0.0,0,0,0,85.8 +2020-01-17 20:00:00,71.0,0,0.0,51.8,42.6,0,0,0.0,0,0,0.0,87.8 +2020-01-17 21:00:00,54.0,0,0.0,53.6,37.4,0,0,0.0,0,0,0.0,87.4 +2020-01-17 22:00:00,54.0,0,0.0,53.6,37.4,0,0,5.8,0,0,360.0,84.4 +2020-01-17 23:00:00,54.0,0,0.0,53.6,37.4,0,0,8.1,0,0,20.0,77.1 +2020-01-18 00:00:00,54.0,0,0.0,53.6,37.4,0,0,3.7,0,0,0,58.9 +2020-01-18 01:00:00,67.0,0,0.0,50.0,39.6,0,0,3.7,0,0,0,3.9 +2020-01-18 02:00:00,76.0,0,0.0,48.2,41.0,0,0,3.7,0,0,0,0.0 +2020-01-18 03:00:00,82.0,0,0.0,46.4,41.2,0,0,3.7,0,0,0,0.0 +2020-01-18 04:00:00,100.0,0,0.0,39.2,39.2,0,0,3.7,0,0,0,0.0 +2020-01-18 05:00:00,76.0,0,0.0,46.4,39.2,0,0,0,0,0,0,0.0 +2020-01-18 06:00:00,76.0,0,0.0,46.4,39.2,0,0,3.4,0,0,170.0,0.0 +2020-01-18 07:00:00,71.0,0,0.0,46.4,37.6,0,0,0.0,0,0,0.0,0.0 +2020-01-18 08:00:00,81.0,0,0.0,44.6,39.2,0,0,3.4,0,0,230.0,0.0 +2020-01-18 09:00:00,87.0,0,0.0,42.8,39.2,0,0,3.4,0,0,290.0,0.0 +2020-01-18 10:00:00,87.0,0,0.0,42.8,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-18 11:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-18 12:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-18 13:00:00,93.0,0,0.0,41.0,39.2,0,0,0.0,0,0,0.0,0.0 +2020-01-18 14:00:00,87.0,0,0.0,42.8,39.2,0,0,3.4,0,0,140.0,0.0 +2020-01-18 15:00:00,87.0,0,0.0,42.8,39.2,0,0,3.4,0,0,160.0,0.0 +2020-01-18 16:00:00,93.0,0,0.0,42.8,41.0,0,0,0.0,0,0,0,30.0 +2020-01-18 17:00:00,82.0,0,0.0,46.4,41.2,0,0,4.3,0,0,140.0,67.8 +2020-01-18 18:00:00,81.0,0,0.0,46.4,40.8,0,0,4.7,0,0,140.0,80.5 +2020-01-18 19:00:00,71.0,0,0.0,50.0,41.0,0,0,3.7,0,0,0,85.9 +2020-01-18 20:00:00,67.0,0,0.0,51.8,41.2,0,0,0.0,0,0,0,87.9 +2020-01-18 21:00:00,67.0,0,0.0,51.8,41.2,0,0,0.0,0,0,0.0,87.5 +2020-01-18 22:00:00,67.0,0,0.0,53.6,43.0,0,0,0.0,0,0,0.0,84.5 +2020-01-18 23:00:00,62.0,0,0.0,53.6,40.8,0,0,4.7,0,0,360.0,77.3 +2020-01-19 00:00:00,67.0,0,0.0,53.6,43.0,0,0,5.8,0,0,360.0,59.5 +2020-01-19 01:00:00,67.0,0,0.0,51.8,41.2,0,0,5.6,0,0,330.0,4.9 +2020-01-19 02:00:00,82.0,0,0.0,50.0,44.8,0,0,8.1,0,0,20.0,0.0 +2020-01-19 03:00:00,82.0,0,0.0,50.0,44.8,0,0,8.1,0,0,20.0,0.0 +2020-01-19 04:00:00,76.0,0,0.0,48.2,41.0,0,0,4.7,0,0,0,0.0 +2020-01-19 05:00:00,76.0,0,0.0,48.2,41.0,0,0,3.4,0,0,0,0.0 +2020-01-19 06:00:00,66.0,0,0.0,48.2,37.4,0,0,3.4,0,0,200.0,0.0 +2020-01-19 07:00:00,71.0,0,0.0,46.4,37.6,0,0,3.4,0,0,200.0,0.0 +2020-01-19 08:00:00,71.0,0,0.0,46.4,37.6,0,0,0.0,0,0,0.0,0.0 +2020-01-19 09:00:00,66.0,0,0.0,46.4,35.6,0,0,3.4,0,0,180.0,0.0 +2020-01-19 10:00:00,71.0,0,0.0,44.6,35.8,0,0,0.0,0,0,0.0,0.0 +2020-01-19 11:00:00,76.0,0,0.0,42.8,35.8,0,0,0.0,0,0,0.0,0.0 +2020-01-19 12:00:00,81.0,0,0.0,41.0,35.6,0,0,3.4,0,0,220.0,0.0 +2020-01-19 13:00:00,81.0,0,0.0,41.0,35.6,0,0,0.0,0,0,0.0,0.0 +2020-01-19 14:00:00,87.0,0,0.0,41.0,37.4,0,0,0.0,0,0,0.0,0.0 +2020-01-19 15:00:00,87.0,0,0.0,41.0,37.4,0,0,4.7,0,0,180.0,0.0 +2020-01-19 16:00:00,76.0,0,0.0,44.6,37.6,0,0,5.6,0,0,190.0,30.6 +2020-01-19 17:00:00,71.0,0,0.0,46.4,37.6,0,0,4.3,0,0,140.0,68.0 +2020-01-19 18:00:00,71.0,0,0.0,48.2,39.2,0,0,4.3,0,0,120.0,80.6 +2020-01-19 20:00:00,67.0,0,0.0,50.0,39.6,0,0,3.7,0,0,0,87.9 +2020-01-19 21:00:00,66.0,0,0.0,50.0,39.0,0,0,3.4,0,0,90.0,87.6 +2020-01-19 22:00:00,67.0,0,0.0,51.8,41.2,0,0,3.7,0,0,60.0,84.7 +2020-01-19 23:00:00,67.0,0,0.0,51.8,41.2,0,0,3.4,0,0,60.0,77.6 +2020-01-20 00:00:00,67.0,0,0.0,51.8,41.2,0,0,0.0,0,0,0.0,60.0 +2020-01-20 01:00:00,71.0,0,0.0,50.0,41.0,0,0,3.7,0,0,0,6.1 +2020-01-20 02:00:00,71.0,0,0.0,50.0,41.0,0,0,5.6,0,0,250.0,0.0 +2020-01-20 03:00:00,71.0,0,0.0,50.0,41.0,0,0,5.8,0,0,250.0,0.0 +2020-01-20 04:00:00,76.0,0,0.0,48.2,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-20 05:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 06:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 07:00:00,81.0,0,0.0,46.4,40.8,0,0,3.4,0,0,260.0,0.0 +2020-01-20 08:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 09:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 10:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 11:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 12:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 13:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 14:00:00,81.0,0,0.0,46.4,40.8,0,0,3.4,0,0,50.0,0.0 +2020-01-20 15:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-20 16:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0,31.2 +2020-01-20 17:00:00,82.0,0,0.0,48.2,43.0,0,0,0.0,0,0,0,68.2 +2020-01-20 19:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0,86.1 +2020-01-20 21:00:00,77.0,0,0.0,51.8,44.8,0,0,0.0,0,0,0,87.7 +2020-01-20 22:00:00,76.0,0,0.0,51.8,44.4,0,0,0.0,0,0,0.0,84.8 +2020-01-20 23:00:00,72.0,0,0.0,53.6,44.8,0,0,0.0,0,0,0.0,77.8 +2020-01-21 01:00:00,88.0,0,0.0,50.0,46.6,0,0,3.7,0,0,0,7.3 +2020-01-21 02:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,0,0.0 +2020-01-21 03:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-21 04:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-21 05:00:00,87.0,0,0.0,48.2,44.6,0,0,0,0,0,0,0.0 +2020-01-21 06:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-21 07:00:00,71.0,0,0.0,51.8,42.6,0,0,5.8,0,0,170.0,0.0 +2020-01-21 08:00:00,72.0,0,0.0,53.6,44.8,0,0,5.8,0,0,180.0,0.0 +2020-01-21 09:00:00,82.0,0,0.0,50.0,44.8,0,0,3.4,0,0,200.0,0.0 +2020-01-21 10:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-21 11:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-21 12:00:00,87.0,0,0.0,50.0,46.2,0,0,4.7,0,0,130.0,0.0 +2020-01-21 13:00:00,87.0,0,0.0,50.0,46.2,0,0,4.7,0,0,140.0,0.0 +2020-01-21 14:00:00,87.0,0,0.0,50.0,46.2,0,0,4.7,0,0,110.0,0.0 +2020-01-21 15:00:00,82.0,0,0.0,51.8,46.4,0,0,5.8,0,0,100.0,0.0 +2020-01-21 16:00:00,94.0,0,0.0,50.0,48.4,0,0,5.8,0,0,100.0,31.8 +2020-01-21 17:00:00,82.0,0,0.0,53.6,48.2,0,0,5.8,0,0,100.0,68.4 +2020-01-21 18:00:00,77.0,0,0.0,55.4,48.4,0,0,9.2,0,0,120.0,80.9 +2020-01-21 19:00:00,72.0,0,0.0,57.2,48.2,0,0,11.4,0,0,160.0,86.2 +2020-01-21 20:00:00,77.0,0,0.0,57.2,50.0,0,0,17.4,0,0,150.0,88.1 +2020-01-21 21:00:00,77.0,0,0.0,57.2,50.0,0,0,17.4,0,0,150.0,87.8 +2020-01-21 22:00:00,77.0,0,0.0,57.2,50.0,0,0,13.7,0,0,140.0,84.9 +2020-01-21 23:00:00,82.0,0,0.0,55.4,50.0,0,0,10.6,0,0,150.0,78.1 +2020-01-22 00:00:00,82.0,0,0.0,55.4,50.0,0,0,10.3,0,0,150.0,61.2 +2020-01-22 01:00:00,82.0,0,0.0,55.4,50.0,0,0,16.2,0,0,120.0,8.6 +2020-01-22 02:00:00,82.0,0,0.0,55.4,50.0,0,0,5.6,0,0,110.0,0.0 +2020-01-22 03:00:00,88.0,0,0.0,55.4,52.0,0,0,10.6,0,0,110.0,0.0 +2020-01-22 04:00:00,88.0,0,0.0,55.4,52.0,0,0,9.3,0,0,130.0,0.0 +2020-01-22 05:00:00,82.0,0,0.0,55.4,50.0,0,0,0,0,0,0,0.0 +2020-01-22 06:00:00,88.0,0,0.0,55.4,52.0,0,0,0.0,0,0,0.0,0.0 +2020-01-22 07:00:00,88.0,0,0.0,55.4,52.0,0,0,8.1,0,0,150.0,0.0 +2020-01-22 08:00:00,88.0,0,0.0,55.4,52.0,0,0,8.1,0,0,140.0,0.0 +2020-01-22 09:00:00,88.0,0,0.0,55.4,52.0,0,0,0.0,0,0,0.0,0.0 +2020-01-22 10:00:00,88.0,0,0.0,55.4,52.0,0,0,0.0,0,0,0.0,0.0 +2020-01-22 11:00:00,94.0,0,0.0,53.6,52.0,0,0,3.4,0,0,100.0,0.0 +2020-01-22 12:00:00,100.0,0,5.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-22 13:00:00,100.0,0,0.0,51.8,51.8,0,0,0.0,0,0,0.0,0.0 +2020-01-22 14:00:00,100.0,0,7.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-22 15:00:00,100.0,0,5.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-22 16:00:00,100.0,0,0.0,51.8,51.8,0,0,0.0,0,0,0,32.4 +2020-01-22 17:00:00,94.0,0,0.0,55.4,53.8,0,0,5.6,0,0,350.0,68.6 +2020-01-22 18:00:00,100.0,0,0.0,53.6,53.6,0,0,6.8,0,0,360.0,81.0 +2020-01-22 19:00:00,100.0,0,0.0,53.6,53.6,0,0,7.0,0,0,360.0,86.2 +2020-01-22 20:00:00,94.0,0,0.0,55.4,53.8,0,0,3.4,0,0,0,88.2 +2020-01-22 21:00:00,77.0,0,0.0,57.2,50.0,0,0,0.0,0,0,0.0,87.9 +2020-01-22 22:00:00,72.0,0,0.0,59.0,50.0,0,0,3.7,0,0,0,85.1 +2020-01-22 23:00:00,72.0,0,0.0,59.0,50.0,0,0,3.4,0,0,360.0,78.3 +2020-01-23 00:00:00,82.0,0,0.0,57.2,51.8,0,0,7.0,0,0,360.0,61.7 +2020-01-23 01:00:00,77.0,0,0.0,57.2,50.0,0,0,3.7,0,0,0,9.9 +2020-01-23 02:00:00,82.0,0,0.0,55.4,50.0,0,0,3.7,0,0,0,0.0 +2020-01-23 03:00:00,88.0,0,0.0,53.6,50.2,0,0,3.7,0,0,0,0.0 +2020-01-23 04:00:00,88.0,0,0.0,53.6,50.2,0,0,0.0,0,0,0,0.0 +2020-01-23 05:00:00,88.0,0,0.0,51.8,48.4,0,0,0,0,0,0,0.0 +2020-01-23 06:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-23 07:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-23 08:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-23 09:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-23 10:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0.0,0.0 +2020-01-23 11:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-23 12:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-23 13:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-23 14:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-23 15:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-23 16:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,33.0 +2020-01-23 17:00:00,94.0,0,0.0,51.8,50.2,0,0,0.0,0,0,0,68.9 +2020-01-23 18:00:00,88.0,0,0.0,53.6,50.2,0,0,3.7,0,0,0,81.1 +2020-01-23 19:00:00,82.0,0,0.0,55.4,50.0,0,0,3.7,0,0,0,86.3 +2020-01-23 20:00:00,82.0,0,0.0,55.4,50.0,0,0,3.4,0,0,0,88.3 +2020-01-23 21:00:00,72.0,0,0.0,57.2,48.2,0,0,0.0,0,0,0,88.0 +2020-01-23 22:00:00,72.0,0,0.0,57.2,48.2,0,0,0.0,0,0,0.0,85.2 +2020-01-23 23:00:00,88.0,0,0.0,55.4,52.0,0,0,3.7,0,0,0,78.5 +2020-01-24 00:00:00,82.0,0,0.0,57.2,51.8,0,0,3.7,0,0,0,62.2 +2020-01-24 01:00:00,94.0,0,0.0,53.6,52.0,0,0,0.0,0,0,0,11.4 +2020-01-24 02:00:00,88.0,0,0.0,53.6,50.2,0,0,0.0,0,0,0,0.0 +2020-01-24 03:00:00,88.0,0,0.0,53.6,50.2,0,0,0.0,0,0,0,0.0 +2020-01-24 04:00:00,82.0,0,0.0,55.4,50.0,0,0,0.0,0,0,0,0.0 +2020-01-24 05:00:00,88.0,0,0.0,53.6,50.2,0,0,0,0,0,0,0.0 +2020-01-24 06:00:00,88.0,0,0.0,53.6,50.2,0,0,0.0,0,0,0.0,0.0 +2020-01-24 07:00:00,100.0,0,0.0,50.0,50.0,0,0,3.4,0,0,180.0,0.0 +2020-01-24 08:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-24 09:00:00,94.0,0,0.0,50.0,48.4,0,0,4.7,0,0,310.0,0.0 +2020-01-24 10:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-24 11:00:00,94.0,0,0.0,48.2,46.6,0,0,3.4,0,0,160.0,0.0 +2020-01-24 12:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-24 13:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-24 14:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-24 15:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-24 16:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,33.7 +2020-01-24 17:00:00,94.0,0,0.0,50.0,48.4,0,0,4.7,0,0,0,69.1 +2020-01-24 18:00:00,82.0,0,0.0,55.4,50.0,0,0,0.0,0,0,0,81.3 +2020-01-24 19:00:00,88.0,0,0.0,55.4,52.0,0,0,4.3,0,0,0,86.4 +2020-01-24 20:00:00,82.0,0,0.0,57.2,51.8,0,0,8.1,0,0,30.0,88.4 +2020-01-24 21:00:00,88.0,0,0.0,57.2,53.6,0,0,8.1,0,0,30.0,88.1 +2020-01-24 22:00:00,82.0,0,0.0,59.0,53.6,0,0,6.8,0,0,360.0,85.4 +2020-01-25 00:00:00,73.0,0,0.0,62.6,53.8,0,0,3.7,0,0,0,62.8 +2020-01-25 01:00:00,72.0,0,0.0,62.6,53.4,0,0,3.4,0,0,320.0,12.8 +2020-01-25 02:00:00,82.0,0,0.0,59.0,53.6,0,0,5.8,0,0,320.0,0.0 +2020-01-25 03:00:00,82.0,0,0.0,59.0,53.6,0,0,5.6,0,0,300.0,0.0 +2020-01-25 04:00:00,88.0,0,0.0,57.2,53.6,0,0,0.0,0,0,0,0.0 +2020-01-25 05:00:00,88.0,0,0.0,57.2,53.6,0,0,0,0,0,0,0.0 +2020-01-25 06:00:00,88.0,0,0.0,57.2,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-25 07:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-25 08:00:00,94.0,0,0.0,55.4,53.8,0,0,0.0,0,0,0.0,0.0 +2020-01-25 09:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-25 10:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-25 11:00:00,100.0,0,0.0,55.4,55.4,0,0,0.0,0,0,0.0,0.0 +2020-01-25 12:00:00,100.0,0,0.0,53.6,53.6,0,0,4.7,0,0,160.0,0.0 +2020-01-25 13:00:00,100.0,0,5.0,53.6,53.6,0,0,3.4,0,0,220.0,0.0 +2020-01-25 14:00:00,100.0,0,5.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-25 15:00:00,100.0,0,5.0,51.8,51.8,0,0,0.0,0,0,0.0,0.0 +2020-01-25 16:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0,34.4 +2020-01-25 17:00:00,94.0,0,0.0,55.4,53.8,0,0,3.7,0,0,0,69.4 +2020-01-25 18:00:00,100.0,0,0.0,55.4,55.4,0,0,3.7,0,0,0,81.4 +2020-01-25 19:00:00,100.0,0,0.0,55.4,55.4,0,0,3.7,0,0,30.0,86.5 +2020-01-25 20:00:00,100.0,0,0.0,55.4,55.4,0,0,5.6,0,0,40.0,88.4 +2020-01-25 21:00:00,100.0,0,0.0,57.2,57.2,0,0,3.7,0,0,0,88.1 +2020-01-25 22:00:00,94.0,0,0.0,59.0,57.2,0,0,3.7,0,0,0,85.5 +2020-01-25 23:00:00,94.0,0,0.0,59.0,57.2,0,0,3.4,0,0,0,79.0 +2020-01-26 00:00:00,83.0,0,0.0,60.8,55.6,0,0,6.8,0,0,230.0,63.3 +2020-01-26 01:00:00,82.0,0,0.0,60.8,55.2,0,0,7.0,0,0,230.0,14.3 +2020-01-26 02:00:00,88.0,0,0.0,59.0,55.4,0,0,6.8,0,0,310.0,0.0 +2020-01-26 03:00:00,88.0,0,0.0,59.0,55.4,0,0,7.0,0,0,310.0,0.0 +2020-01-26 04:00:00,82.0,0,0.0,60.8,55.2,0,0,0.0,0,0,0.0,0.0 +2020-01-26 05:00:00,83.0,0,0.0,60.8,55.6,0,0,0,0,0,0,0.0 +2020-01-26 06:00:00,82.0,0,5.0,60.8,55.2,0,0,5.8,0,0,250.0,0.0 +2020-01-26 07:00:00,94.0,0,7.0,57.2,55.4,0,0,4.7,0,0,80.0,0.0 +2020-01-26 08:00:00,100.0,0,0.0,57.2,57.2,0,0,3.4,0,0,140.0,0.0 +2020-01-26 09:00:00,100.0,0,0.0,55.4,55.4,0,0,0.0,0,0,0.0,0.0 +2020-01-26 10:00:00,100.0,0,0.0,57.2,57.2,0,0,0.0,0,0,0.0,0.0 +2020-01-26 11:00:00,94.0,0,5.0,57.2,55.4,0,0,9.2,0,0,250.0,0.0 +2020-01-26 12:00:00,100.0,0,7.0,55.4,55.4,0,0,3.4,0,0,220.0,0.0 +2020-01-26 13:00:00,94.0,0,0.0,55.4,53.8,0,0,5.8,0,0,260.0,0.0 +2020-01-26 14:00:00,100.0,0,7.0,55.4,55.4,0,0,0.0,0,0,0.0,0.0 +2020-01-26 15:00:00,100.0,0,5.0,55.4,55.4,0,0,0.0,0,0,0.0,0.0 +2020-01-26 16:00:00,100.0,0,0.0,55.4,55.4,0,0,0.0,0,0,0,35.2 +2020-01-26 17:00:00,88.0,0,0.0,57.2,53.6,0,0,6.8,0,0,260.0,69.6 +2020-01-26 18:00:00,82.0,0,0.0,59.0,53.6,0,0,10.6,0,0,270.0,81.5 +2020-01-26 19:00:00,72.0,0,0.0,59.0,50.0,0,0,12.4,0,0,260.0,86.6 +2020-01-26 20:00:00,68.0,0,0.0,60.8,50.2,0,0,13.7,0,0,300.0,88.5 +2020-01-26 21:00:00,68.0,0,0.0,60.8,50.2,0,0,13.9,0,0,300.0,88.2 +2020-01-26 22:00:00,68.0,0,0.0,59.0,48.4,0,0,12.4,0,0,280.0,85.6 +2020-01-26 23:00:00,63.0,0,0.0,59.0,46.4,0,0,14.9,0,0,250.0,79.2 +2020-01-27 00:00:00,63.0,0,0.0,59.0,46.4,0,0,15.0,0,0,250.0,63.8 +2020-01-27 01:00:00,67.0,0,0.0,57.2,46.4,0,0,11.4,0,0,250.0,15.7 +2020-01-27 02:00:00,67.0,0,0.0,55.4,44.6,0,0,4.3,0,0,250.0,0.0 +2020-01-27 03:00:00,67.0,0,0.0,55.4,44.6,0,0,4.7,0,0,250.0,0.0 +2020-01-27 04:00:00,72.0,0,0.0,53.6,44.8,0,0,5.8,0,0,250.0,0.0 +2020-01-27 05:00:00,62.0,0,0.0,53.6,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-27 06:00:00,82.0,0,0.0,48.2,43.0,0,0,0.0,0,0,0.0,0.0 +2020-01-27 07:00:00,82.0,0,0.0,48.2,43.0,0,0,0.0,0,0,0.0,0.0 +2020-01-27 08:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-27 09:00:00,81.0,0,0.0,46.4,40.8,0,0,4.7,0,0,220.0,0.0 +2020-01-27 10:00:00,76.0,0,0.0,48.2,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-27 11:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-27 12:00:00,81.0,0,0.0,46.4,40.8,0,0,0.0,0,0,0.0,0.0 +2020-01-27 13:00:00,87.0,0,0.0,46.4,42.8,0,0,0.0,0,0,0.0,0.0 +2020-01-27 14:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-27 15:00:00,87.0,0,0.0,44.6,41.0,0,0,0.0,0,0,0.0,0.0 +2020-01-27 16:00:00,87.0,0,0.0,48.2,44.6,0,0,3.7,0,0,0,35.9 +2020-01-27 17:00:00,87.0,0,0.0,48.2,44.6,0,0,3.4,0,0,0,69.9 +2020-01-27 18:00:00,82.0,0,0.0,53.6,48.2,0,0,3.4,0,0,0,81.6 +2020-01-27 19:00:00,88.0,0,0.0,53.6,50.2,0,0,3.4,0,0,0,86.7 +2020-01-27 20:00:00,82.0,0,0.0,55.4,50.0,0,0,4.7,0,0,0,88.6 +2020-01-27 21:00:00,82.0,0,0.0,55.4,50.0,0,0,4.7,0,0,0,88.3 +2020-01-27 22:00:00,88.0,0,0.0,55.4,52.0,0,0,3.4,0,0,0,85.7 +2020-01-27 23:00:00,88.0,0,0.0,57.2,53.6,0,0,3.7,0,0,0,79.4 +2020-01-28 00:00:00,88.0,0,0.0,57.2,53.6,0,0,3.4,0,0,0,64.3 +2020-01-28 02:00:00,82.0,0,0.0,53.6,48.2,0,0,6.8,0,0,280.0,0.0 +2020-01-28 03:00:00,82.0,0,0.0,53.6,48.2,0,0,7.0,0,0,280.0,0.0 +2020-01-28 04:00:00,82.0,0,0.0,53.6,48.2,0,0,4.7,0,0,280.0,0.0 +2020-01-28 05:00:00,82.0,0,0.0,53.6,48.2,0,0,4.7,0,0,240.0,0.0 +2020-01-28 06:00:00,82.0,0,0.0,53.6,48.2,0,0,0.0,0,0,0.0,0.0 +2020-01-28 07:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,220.0,0.0 +2020-01-28 08:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-28 09:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-28 10:00:00,94.0,0,0.0,48.2,46.6,0,0,4.7,0,0,140.0,0.0 +2020-01-28 11:00:00,87.0,0,0.0,50.0,46.2,0,0,4.7,0,0,190.0,0.0 +2020-01-28 12:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-28 13:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-28 14:00:00,94.0,0,0.0,50.0,48.4,0,0,0.0,0,0,0.0,0.0 +2020-01-28 15:00:00,94.0,0,0.0,50.0,48.4,0,0,5.8,0,0,160.0,0.0 +2020-01-28 16:00:00,88.0,0,0.0,51.8,48.4,0,0,0.0,0,0,0.0,36.7 +2020-01-28 17:00:00,88.0,0,0.0,51.8,48.4,0,0,0.0,0,0,0.0,70.1 +2020-01-28 18:00:00,77.0,0,0.0,57.2,50.0,0,0,5.6,0,0,110.0,81.8 +2020-01-28 19:00:00,77.0,0,7.0,57.2,50.0,0,0,5.8,0,0,110.0,34.7 +2020-01-28 20:00:00,82.0,0,0.0,59.0,53.6,0,0,9.3,0,0,250.0,88.7 +2020-01-28 21:00:00,82.0,0,0.0,59.0,53.6,0,0,9.2,0,0,250.0,88.4 +2020-01-28 22:00:00,77.0,0,0.0,59.0,51.8,0,0,7.0,0,0,260.0,85.9 +2020-01-28 23:00:00,72.0,0,0.0,59.0,50.0,0,0,9.3,0,0,240.0,79.7 +2020-01-29 00:00:00,72.0,0,0.0,59.0,50.0,0,0,9.2,0,0,240.0,64.8 +2020-01-29 01:00:00,77.0,0,0.0,57.2,50.0,0,0,6.8,0,0,250.0,18.7 +2020-01-29 02:00:00,77.0,0,0.0,55.4,48.4,0,0,6.8,0,0,240.0,0.0 +2020-01-29 03:00:00,82.0,0,0.0,53.6,48.2,0,0,3.7,0,0,0,0.0 +2020-01-29 04:00:00,82.0,0,0.0,53.6,48.2,0,0,3.7,0,0,0,0.0 +2020-01-29 05:00:00,88.0,0,0.0,51.8,48.4,0,0,0,0,0,0,0.0 +2020-01-29 06:00:00,82.0,0,0.0,51.8,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-29 07:00:00,87.0,0,5.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-29 08:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-29 09:00:00,87.0,0,0.0,50.0,46.2,0,0,4.7,0,0,280.0,0.0 +2020-01-29 10:00:00,87.0,0,0.0,50.0,46.2,0,0,3.4,0,0,290.0,0.0 +2020-01-29 11:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-29 12:00:00,94.0,0,0.0,48.2,46.6,0,0,0.0,0,0,0.0,0.0 +2020-01-29 13:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0.0,0.0 +2020-01-29 14:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0.0,0.0 +2020-01-29 15:00:00,93.0,0,0.0,46.4,44.4,0,0,0.0,0,0,0.0,0.0 +2020-01-29 16:00:00,88.0,0,0.0,50.0,46.6,0,0,0.0,0,0,0,37.4 +2020-01-29 17:00:00,88.0,0,0.0,51.8,48.4,0,0,0.0,0,0,0,70.4 +2020-01-29 18:00:00,77.0,0,0.0,55.4,48.4,0,0,3.7,0,0,0,81.9 +2020-01-29 19:00:00,72.0,0,0.0,57.2,48.2,0,0,0.0,0,0,0,86.9 +2020-01-29 20:00:00,72.0,0,0.0,57.2,48.2,0,0,0.0,0,0,0.0,88.8 +2020-01-29 21:00:00,77.0,0,0.0,57.2,50.0,0,0,3.4,0,0,310.0,88.5 +2020-01-29 22:00:00,63.0,0,0.0,59.0,46.4,0,0,10.3,0,0,310.0,86.0 +2020-01-29 23:00:00,63.0,0,0.0,60.8,48.2,0,0,8.1,0,0,320.0,79.9 +2020-01-30 00:00:00,67.0,0,0.0,57.2,46.4,0,0,10.6,0,0,270.0,65.2 +2020-01-30 01:00:00,67.0,0,0.0,57.2,46.4,0,0,10.3,0,0,270.0,20.2 +2020-01-30 02:00:00,72.0,0,0.0,55.4,46.6,0,0,9.3,0,0,250.0,0.0 +2020-01-30 03:00:00,72.0,0,0.0,55.4,46.6,0,0,9.3,0,0,250.0,0.0 +2020-01-30 04:00:00,72.0,0,0.0,53.6,44.8,0,0,3.7,0,0,0,0.0 +2020-01-30 05:00:00,82.0,0,0.0,50.0,44.8,0,0,0,0,0,0,0.0 +2020-01-30 06:00:00,82.0,0,0.0,50.0,44.8,0,0,3.4,0,0,170.0,0.0 +2020-01-30 07:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-30 08:00:00,87.0,0,0.0,48.2,44.6,0,0,0.0,0,0,0.0,0.0 +2020-01-30 09:00:00,82.0,0,0.0,50.0,44.8,0,0,0.0,0,0,0.0,0.0 +2020-01-30 10:00:00,88.0,0,0.0,53.6,50.2,0,0,8.1,0,0,330.0,0.0 +2020-01-30 11:00:00,100.0,0,0.0,50.0,50.0,0,0,4.7,0,0,310.0,0.0 +2020-01-30 12:00:00,87.0,0,0.0,50.0,46.2,0,0,4.7,0,0,190.0,0.0 +2020-01-30 13:00:00,87.0,0,0.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-30 14:00:00,94.0,0,0.0,48.2,46.6,0,0,3.4,0,0,180.0,0.0 +2020-01-30 15:00:00,87.0,0,5.0,50.0,46.2,0,0,0.0,0,0,0.0,0.0 +2020-01-30 16:00:00,94.0,0,5.0,50.0,48.4,0,0,0.0,0,0,0,11.5 +2020-01-30 17:00:00,94.0,0,0.0,51.8,50.2,0,0,0.0,0,0,0.0,70.7 +2020-01-30 18:00:00,94.0,0,0.0,55.4,53.8,0,0,3.4,0,0,0,82.0 +2020-01-30 20:00:00,82.0,0,0.0,59.0,53.6,0,0,8.1,0,0,320.0,88.8 +2020-01-30 21:00:00,73.0,0,0.0,62.6,53.8,0,0,8.1,0,0,300.0,88.6 +2020-01-30 23:00:00,73.0,0,0.0,62.6,53.8,0,0,3.7,0,0,0,80.1 +2020-01-31 01:00:00,82.0,0,0.0,59.0,53.6,0,0,3.7,0,0,0,21.6 +2020-01-31 02:00:00,82.0,0,0.0,59.0,53.6,0,0,3.7,0,0,0,0.0 +2020-01-31 03:00:00,94.0,0,0.0,55.4,53.8,0,0,0.0,0,0,0,0.0 +2020-01-31 04:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0,0.0 +2020-01-31 05:00:00,100.0,0,0.0,53.6,53.6,0,0,0,0,0,0,0.0 +2020-01-31 06:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0.0,0.0 +2020-01-31 07:00:00,100.0,0,0.0,50.0,50.0,0,0,0.0,0,0,0.0,0.0 +2020-01-31 08:00:00,100.0,0,0.0,50.0,50.0,0,0,0.0,0,0,0.0,0.0 +2020-01-31 09:00:00,100.0,0,0.0,50.0,50.0,0,0,0.0,0,0,0.0,0.0 +2020-01-31 10:00:00,100.0,0,0.0,48.2,48.2,0,0,3.4,0,0,200.0,0.0 +2020-01-31 11:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,0.0 +2020-01-31 12:00:00,100.0,0,0.0,48.2,48.2,0,0,0.0,0,0,0.0,0.0 +2020-01-31 13:00:00,100.0,0,0.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-31 14:00:00,100.0,0,5.0,48.2,48.2,0,0,0.0,0,0,0.0,0.0 +2020-01-31 15:00:00,100.0,0,5.0,46.4,46.4,0,0,0.0,0,0,0.0,0.0 +2020-01-31 16:00:00,100.0,0,5.0,48.2,48.2,0,0,0.0,0,0,0.0,11.7 +2020-01-31 17:00:00,100.0,0,0.0,50.0,50.0,0,0,0.0,0,0,0.0,70.9 +2020-01-31 18:00:00,100.0,0,0.0,53.6,53.6,0,0,0.0,0,0,0.0,82.2 +2020-01-31 19:00:00,88.0,0,0.0,59.0,55.4,0,0,3.7,0,0,0,87.0 +2020-01-31 20:00:00,82.0,0,0.0,59.0,53.6,0,0,6.8,0,0,10.0,88.9 +2020-01-31 21:00:00,73.0,0,0.0,62.6,53.8,0,0,6.8,0,0,360.0,88.7 +2020-01-31 22:00:00,72.0,0,0.0,62.6,53.4,0,0,7.0,0,0,360.0,86.2 +2020-01-31 23:00:00,52.0,0,0.0,66.2,48.0,0,0,5.6,0,0,340.0,80.3 +2020-02-01 00:00:00,52.0,0,0.0,66.2,48.0,0,0,5.8,0,0,340.0,66.1 diff --git a/tools/autotest/test_meteostat_opt.glm b/tools/autotest/test_meteostat_opt.glm new file mode 100644 index 000000000..7a535acb7 --- /dev/null +++ b/tools/autotest/test_meteostat_opt.glm @@ -0,0 +1,22 @@ +// generated by meteostat_weather at 2022-06-15 09:00:35.262437 + +module climate; + +class weather { + double sunshine_duration[m]; + int16 condition_code; + double dewpoint[degF]; + double wind_gusts[mph]; +} +object weather { + name "test"; + latitude 37.5; + longitude -122.3; +} + +module tape; +object player { + parent "test"; + file "test_meteostat_opt.csv"; + property "humidity,sunshine_duration,condition_code,temperature,dewpoint,rainfall,snowdepth,wind_speed,wind_gusts,pressure,wind_dir,solar_direct"; +} diff --git a/tools/meteostat_weather.py b/tools/meteostat_weather.py new file mode 100644 index 000000000..336be5b59 --- /dev/null +++ b/tools/meteostat_weather.py @@ -0,0 +1,425 @@ +"""Meteostat weather access + +SYNOPSIS + +Shell: + + $ python3 meteostat.py [OPTIONS] ... + +GLM: + + #python3 meteostat.py [OPTIONS] ... + +Options: + + -h|--help|help Get this help information (exits with code 0) + + -c|--csv=CSVNAME Name the CSV output file (optional) + + -g|--glm=GLMNAME Name the GLM output file (optional) + + -n|--name=OBJNAME Name the weather object (optional) + + -p|--position=LAT,LON Specify the location (required) + + -s|--start=YYYY-MM-DD Specify the start date (optional) + + -e|--end=YYYY-MM-DD Specify the end date (optional) + + -r|--refresh Force refresh of cache data (optional) + +DESCRIPTION + +The meteostat_weather tool gathers data from the Meteostat website and converts it +to a GridLAB-D weather object. If neither CSVNAME or GLMNAME are provided the weather +data is written to stdout. Otherwise, the default CSVNAME is "meteostat_ID.csv" where +ID is the station identifier provided by Meteostat. The default weather object is +also named "meteostat_ID". If the start date and/or end date are not specified, then +the default is all available data. + +""" + +import os, sys, math +import requests +import json, gzip +import haversine +import pandas +import datetime, time +from pysolar.solar import get_altitude, radiation + +share = os.getenv("GLD_ETC") +if not share: + share = "/usr/local/share/gridlabd" +if share not in sys.path: + sys.path.append("/usr/local/share/gridlabd") +import nsrdb_weather + +VERBOSE = False +DEBUG = False +QUIET = False +WARNING = True + +E_OK = 0 # no error +E_MISSING = 1 # missing argument +E_INVALID = 2 # invalid data +E_TIMEOUT = 3 # file lock timeout +E_EXCEPTION = 9 # exception caught + +BASENAME = os.path.splitext(os.path.basename(sys.argv[0]))[0] +URL_STATIONS = "https://bulk.meteostat.net/v2/stations/full.json.gz" +URL_HOURLY = "https://bulk.meteostat.net/v2/hourly/{station}.csv.gz" + +LOCATION = None +OBJECT_NAME = None +OUTPUT_NAME = None +CSV_NAME = None +START_TIME = None +END_TIME = None +TIMEOUT = 10 +TIMESTEP = 0.1 +GEOHASH_RESOLUTION = 5 +REFRESH = False + +DATA_COLUMNS = [ + 'date', # The date string (format: YYYY-MM-DD) String + 'time', # The hour (UTC) Integer + 'temperature[degC]', # The air temperature in °C Float + 'dewpoint[degC]', # The dew point in °C Float + 'humidity[%]', # The relative humidity in percent (%) Integer + 'rainfall[mm]', # The one hour precipitation total in mm Float + 'snowdepth[mm]', # The snow depth in mm Integer + 'wind_direction[deg]', # The wind direction in degrees (°) Integer + 'wind_speed[km/h]', # The average wind speed in km/h Float + 'wind_gusts[km/h]', # The peak wind gust in km/h Float + 'air_pressure[hPa]', # The sea-level air pressure in hPa Float + 'sunshine_duration[m]', # The one hour sunshine total in minutes (m) Integer + 'condition_code', # The weather condition code Integer +] + +SOLAR_CONDITIONS = { # factor to reduce direct solar based on conditions + 0 : 1.0, # unknown + 1 : 1.0, # Clear + 2 : 0.9, # Fair + 3 : 0.7, # Cloudy + 4 : 0.5, # Overcast + 5 : 0.3, # Fog + 6 : 0.2, # Freezing Fog + 7 : 0.4, # Light Rain + 8 : 0.3, # Rain + 9 : 0.2, # Heavy Rain + 10 : 0.3, # Freezing Rain + 11 : 0.2, # Heavy Freezing Rain + 12 : 0.3, # Sleet + 13 : 0.2, # Heavy Sleet + 14 : 0.3, # Light Snowfall + 15 : 0.2, # Snowfall + 16 : 0.2, # Heavy Snowfall + 17 : 0.2, # Rain Shower + 18 : 0.2, # Heavy Rain Shower + 19 : 0.2, # Sleet Shower + 20 : 0.2, # Heavy Sleet Shower + 21 : 0.2, # Snow Shower + 22 : 0.2, # Heavy Snow Shower + 23 : 0.2, # Lightning + 24 : 0.2, # Hail + 25 : 0.2, # Thunderstorm + 26 : 0.1, # Heavy Thunderstorm + 27 : 0.2, # Storm +} + +try: + CACHE_DIR = share + "/weather/meteostat" +except: + CACHE_DIR = "/tmp/meteostat" +os.makedirs(CACHE_DIR,exist_ok=True) +STATIONS_FILE = CACHE_DIR + "/stations.json.gz" +STATIONS_RECENT = CACHE_DIR + "/stations.json" +STATIONS = None + +class MeteostatError(Exception): + pass + +def error(msg,code=None): + if not QUIET: + global BASENAME + print(f"ERROR [{BASENAME}]: {msg} (code {code})", file=sys.stderr, flush=True) + if DEBUG: + raise MeteostatError(msg) + if type(code) == int: + exit(code) + +def warning(msg): + if WARNING: + print(f"WARNING [{BASENAME}]: {msg}", file=sys.stderr, flush=True) + +def file_lock(pathname,timeout=TIMEOUT,wait=TIMESTEP): + lockname = pathname + "-locked" + t0 = datetime.datetime.now() + ok = False + while not ok: + try: + os.mkdir(lockname) + ok = True + except: + if datetime.datetime.now() - t0 > datetime.timedelta(seconds=timeout): + error(f"file lock timeout for {pathname}",E_TIMEOUT) + time.sleep(wait) + return lockname + +def file_unlock(lockname): + os.rmdir(lockname) + +def verbose(msg): + global VERBOSE + if VERBOSE: + global BASENAME + print(f"VERBOSE [{BASENAME}]: {msg}", file=sys.stderr, flush=True) + +def get_stations(refresh=True): + global STATIONS_FILE + lockname = file_lock(STATIONS_FILE) + try: + if not os.path.exists(STATIONS_FILE) or refresh: + global URL_STATIONS + reply = requests.get(URL_STATIONS) + if reply.status_code != 200: + error(f"{URL_STATIONS} error {reply.status_code}",E_INVALID) + with open(STATIONS_FILE,"wb") as fh: + fh.write(reply.content) + with gzip.open(STATIONS_FILE,"r") as fh: + global STATIONS + STATIONS = json.load(fh) + return STATIONS + except: + pass + finally: + file_unlock(lockname) + error(f"{STATIONS_FILE} is not a valid jzon gz file",E_INVALID) + +def find_station(lat,lon): + global STATIONS_RECENT + global GEOHASH_RESOLUTION + try: + lockname = file_lock(STATIONS_RECENT) + geohash = nsrdb_weather.geohash(lat,lon,GEOHASH_RESOLUTION) + verbose(f"checking for geohash '{geohash}' in {STATIONS_RECENT}") + with open(STATIONS_RECENT,"r") as fh: + recents = json.load(fh) + if geohash in recents.keys(): + best_station = recents[geohash] + verbose(f"find_station(lat={lat},lon={lon}) --> {best_station['id']} at geohash {geohash}") + return best_station + verbose(f"geohash '{geohash}' not in recents") + except: + recents = {} + verbose(f"no recents yet in {STATIONS_RECENT} ({sys.exc_info()})") + finally: + file_unlock(lockname) + + best_distance = None + best_station = None + for station in get_stations(): + location = (station["location"]["latitude"],station["location"]["longitude"]) + distance = haversine.haversine(location,(lat,lon)) + if not best_station or distance < best_distance: + best_distance = distance + best_station = station + verbose(f"find_station(lat={lat},lon={lon}) --> {best_station['id']}") + + lockname = file_lock(STATIONS_RECENT) + try: + try: + with open(STATIONS_RECENT,"r") as fh: + recents = json.load(fh) + except: + recents = {} + recents[geohash] = best_station + with open(STATIONS_RECENT,"w") as fh: + json.dump(recents,fh) + except: + e_type, e_value, e_trace = sys.exc_info() + e_file = os.path.basename(e_trace.tb_frame.f_code.co_filename) + e_line = e_trace.tb_lineno + warning(f"unable to update recent stations file {STATIONS_RECENT} ({e_file}@{e_line}: {e_type.__name__} {e_value})") + finally: + file_unlock(lockname) + return best_station + +def change_column(data,from_name,to_name,transformation): + data[to_name] = data[from_name].transform(transformation) + return data.drop(from_name,axis=1) + +def get_weather(station,start=None,stop=None): + global CACHE_DIR + station_file = f"{CACHE_DIR}/{station}.csv.gz" + global REFRESH + if not os.path.exists(station_file) or REFRESH: + url = URL_HOURLY.format(station=station) + verbose(f"downloading data from {url}") + reply = requests.get(url) + if reply.status_code != 200: + error(f"{url} error {reply.status_code}",E_INVALID) + with open(station_file,"wb") as fh: + fh.write(reply.content) + global DATA_COLUMNS + data = pandas.read_csv(station_file,names=DATA_COLUMNS,index_col=0,parse_dates=[DATA_COLUMNS[0:2]],).sort_index() + + # convert to gridlabd weather format/units + data = change_column(data,"temperature[degC]","temperature[degF]",lambda x:round(x*9/5+32,1)) + data = change_column(data,"dewpoint[degC]","dewpoint[degF]",lambda x:round(x*9/5+32,1)) + data = change_column(data,"rainfall[mm]","rainfall[in/h]",lambda x:round(x/25.4,2)) + data = change_column(data,"snowdepth[mm]","snowdepth[in]",lambda x:round(x/25.4,2)) + data = change_column(data,"wind_speed[km/h]","wind_speed[mph]",lambda x:round(x*0.6213712,1)) + data = change_column(data,"wind_gusts[km/h]","wind_gusts[mph]",lambda x:round(x*0.6213712,1)) + data = change_column(data,"air_pressure[hPa]","pressure[mbar]",lambda x:round(x,1)) + data = change_column(data,"wind_direction[deg]","wind_dir[deg]",lambda x:round(x,1)) + + if start: + start = datetime.datetime.strptime(start,"%Y-%m-%d") + if stop: + stop = datetime.datetime.strptime(stop,"%Y-%m-%d") + if start and stop: + data = data.loc[start:stop] + elif start: + data = data.loc[start:] + elif stop: + data = data.loc[:stop] + + verbose(f"get_weather(station='{station}',start={start},stop={stop}) --> {len(data)} rows") + + return data + +def get_solar(data,latitude,longitude): + verbose(f"calculating solar data for position ({latitude},{longitude})") + solar_direct = [] + data["condition_code"] = data["condition_code"].fillna(0) + for dt in data.index: + date = datetime.datetime.fromtimestamp(dt.timestamp(),datetime.timezone.utc) + altitude = get_altitude(latitude, longitude, date) + if altitude > 0: + global SOLAR_CONDITIONS + condition_factor = SOLAR_CONDITIONS[int(data.loc[dt]["condition_code"])] + solar_direct.append(round(radiation.get_radiation_direct(date, altitude)*condition_factor/10.764,1)) + else: + solar_direct.append(0.0) + return solar_direct # W/sf + +try: + + for arg in sys.argv[1:]: + spec = arg.split("=") + if len(spec) == 1: + value = None + elif len(spec) == 2: + value = spec[1] + else: + value = spec[1:] + tag = spec[0] + if tag in ["-h","--help","help"]: + print(__doc__) + exit(E_OK) + elif tag in ["-g","--glm"]: + OUTPUT_NAME = value + elif tag in ["-c","--csv"]: + CSV_NAME = value + elif tag in ["-n","--name"]: + OBJECT_NAME = value + elif tag in ["-s","--start"]: + START_TIME = value + elif tag in ["-e","--end"]: + END_TIME = value + elif tag in ["-p","--position"]: + LOCATION = list(map(lambda x:float(x),value.split(","))) + if len(LOCATION) != 2: + error(f"position '{LOCATION}' is invalid",E_INVALID) + elif tag in ["-r","--refresh"]: + REFRESH = True + elif tag in ["-d","--debug"]: + DEBUG = True + elif tag in ["-v","--verbose"]: + VERBOSE = True + elif tag in ["-q","--quiet"]: + QUIET = True + elif tag in ["-v","--verbose"]: + WARNING = False + else: + error(f"option '{arg}' is invalid",E_INVALID) + + if not LOCATION: + error("location not specified",E_MISSING) + + station_info = find_station(*LOCATION) + if not START_TIME: + START_TIME = station_info["inventory"]["hourly"]["start"] + if not END_TIME: + END_TIME = station_info["inventory"]["hourly"]["end"] + + station_id = station_info["id"] + station_cache = CACHE_DIR + "/" + station_id + "_" + START_TIME + "_" + END_TIME + ".csv" + if os.path.exists(station_cache): + data = pandas.read_csv(station_cache,index_col=0,parse_dates=[0]) + else: + data = get_weather(station_id,START_TIME,END_TIME) + data['solar_direct[W/sf]'] = get_solar(data,*LOCATION) + data.to_csv(station_cache) + + if not CSV_NAME: + + verbose("writing CSV to stdout") + print(data.to_csv(),end='') + + elif os.path.splitext(CSV_NAME)[1] == ".csv": + + verbose(f"writing CSV to {OUTPUT_NAME}") + data.to_csv(CSV_NAME,header=None,na_rep="0") + + else: + error(f"{OUTPUT_NAME} is not a known file format for weather data",E_INVALID) + + if os.path.splitext(OUTPUT_NAME)[1] == ".glm": + + if not OBJECT_NAME: + OBJECT_NAME = f"meteostat_{station_info['id']}" + + if not CSV_NAME: + error(f"cannot output GLM if CSV file name is not provided",E_INVALID) + + verbose(f"writing GLM to {OUTPUT_NAME}") + with open(OUTPUT_NAME,"w") as glm: + print(f"// generated by {BASENAME} at {datetime.datetime.now()}",file=glm) + print("\nmodule climate;",file=glm) + print("\nclass weather {",file=glm) + print(" double sunshine_duration[m];",file=glm) + print(" int16 condition_code;",file=glm) + print(" double dewpoint[degF];",file=glm) + print(" double wind_gusts[mph];",file=glm) + print("}",file=glm) + print("object weather {",file=glm) + print(f" name \"{OBJECT_NAME}\";",file=glm) + print(f" latitude {LOCATION[0]};",file=glm) + print(f" longitude {LOCATION[1]};",file=glm) + print("}",file=glm) + print("\nmodule tape;",file=glm) + print("object player {",file=glm) + print(f" parent \"{OBJECT_NAME}\";",file=glm) + print(f" file \"{CSV_NAME}\";",file=glm) + property_names = [ x.split('[')[0] for x in data.columns ] + print(f" property \"{','.join(property_names)}\";",file=glm) + print("}",file=glm) + + else: + error(f"{OUTPUT_NAME} is not a known file format for a GridLAB-D model",E_INVALID) + +except SystemExit: + + pass + +except: + + e_type, e_name, e_trace = sys.exc_info() + e_file = os.path.basename(e_trace.tb_frame.f_code.co_filename) + e_line = e_trace.tb_lineno + if DEBUG: + raise + else: + error(f"{e_type.__name__} at {e_file}/{e_line}: {e_name}",E_EXCEPTION) diff --git a/tools/requirements.txt b/tools/requirements.txt index c37141ba7..61c09c95d 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -2,3 +2,4 @@ metar>=1.8.0 boto3>=1.19.11 control>=0.9.0 rasterio>=1.2.10 +pysolar>=0.9