From c4058dcf680dfa33f6a56d04510047be35091613 Mon Sep 17 00:00:00 2001 From: Dennis Siemensma Date: Sat, 13 Jan 2018 12:34:53 +0100 Subject: [PATCH] Source data retention #72 --- .travis.yml | 1 + docs/changelog.rst | 1 + docs/faq.rst | 9 + docs/index.rst | 1 + docs/locale/nl/LC_MESSAGES/changelog.mo | Bin 4487 -> 4487 bytes docs/locale/nl/LC_MESSAGES/changelog.po | 600 ++++++----- docs/locale/nl/LC_MESSAGES/credits.mo | Bin 1351 -> 1351 bytes docs/locale/nl/LC_MESSAGES/credits.po | 140 +-- docs/locale/nl/LC_MESSAGES/faq.mo | Bin 11219 -> 11957 bytes docs/locale/nl/LC_MESSAGES/faq.po | 239 ++++- docs/locale/nl/LC_MESSAGES/retention.mo | Bin 0 -> 3803 bytes docs/locale/nl/LC_MESSAGES/retention.po | 131 +++ docs/locale/nl/LC_MESSAGES/settings.mo | Bin 10131 -> 10741 bytes docs/locale/nl/LC_MESSAGES/settings.po | 250 ++--- docs/retention.rst | 46 + docs/settings.rst | 10 + .../management/commands/dsmr_backend.py | 2 +- dsmr_datalogger/admin.py | 21 +- dsmr_datalogger/apps.py | 13 + .../fixtures/dsmr_datalogger/dsmrreading.json | 990 ++++++++++++++++++ .../electricity-consumption.json | 875 ++++++++++++++++ .../dsmr_datalogger/gas-consumption.json | 299 ++++++ .../migrations/0009_retention_settings.py | 26 + dsmr_datalogger/models/settings.py | 31 + dsmr_datalogger/services.py | 73 +- dsmr_datalogger/tests/models/test_settings.py | 20 +- dsmr_datalogger/tests/retention/__init__.py | 0 .../tests/retention/test_retention.py | 68 ++ .../dsmr_stats_regenerate_statistics.py | 23 + dsmrreader/__init__.py | 2 +- dsmrreader/locales/nl/LC_MESSAGES/django.mo | Bin 52395 -> 53622 bytes dsmrreader/locales/nl/LC_MESSAGES/django.po | 36 + 32 files changed, 3420 insertions(+), 487 deletions(-) create mode 100644 docs/locale/nl/LC_MESSAGES/retention.mo create mode 100644 docs/locale/nl/LC_MESSAGES/retention.po create mode 100644 docs/retention.rst create mode 100644 dsmr_datalogger/fixtures/dsmr_datalogger/dsmrreading.json create mode 100644 dsmr_datalogger/fixtures/dsmr_datalogger/electricity-consumption.json create mode 100644 dsmr_datalogger/fixtures/dsmr_datalogger/gas-consumption.json create mode 100644 dsmr_datalogger/migrations/0009_retention_settings.py create mode 100644 dsmr_datalogger/tests/retention/__init__.py create mode 100644 dsmr_datalogger/tests/retention/test_retention.py create mode 100644 dsmr_stats/management/commands/dsmr_stats_regenerate_statistics.py diff --git a/.travis.yml b/.travis.yml index 88f101f08..59c465045 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,6 +41,7 @@ install: before_script: - sh -c "if [ '$DB' = 'postgresql' ]; then dropdb -U postgres --if-exists dsmrreader; fi" - sh -c "if [ '$DB' = 'postgresql' ]; then createdb -U postgres dsmrreader; fi" + - sh -c "if [ '$DB' = 'mysql' ]; then mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'drop database IF EXISTS dsmrreader;' -u root; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysqladmin create dsmrreader; fi" diff --git a/docs/changelog.rst b/docs/changelog.rst index 23197e5f7..dd0accbe0 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -23,6 +23,7 @@ v1.12.0 - 2018-xx-xx **Tickets resolved in this release:** +- [`#72 `_] Source data retention - [`#414 `_] add systemd service files - by meijjaa - [`#405 `_] More updates to the Dutch translation of the documentation - by lckarssen - [`#404 `_] Fix minor typo in Dutch translation - by lckarssen diff --git a/docs/faq.rst b/docs/faq.rst index 7dd3c07ab..200e6f119 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -156,6 +156,15 @@ For **MySQL** restores:: In case the version differs, you can try forcing a deployment reload by: ``sudo su - dsmr`` and then executing ``./post-deploy.sh``. +How do I enable timezone support for MySQL? +------------------------------------------- + +`Check these docs `_ for more information about how to enable timezone support on MySQL. +On recent versions it should be as simple as executing the following command as root/sudo user:: + + mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql + + Feature/bug report ------------------ *How can I propose a feature or report a bug I've found?* diff --git a/docs/index.rst b/docs/index.rst index 7df1388be..3713a5350 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,6 +10,7 @@ DSMR Reader's documentation installation application settings + retention api mqtt mindergas diff --git a/docs/locale/nl/LC_MESSAGES/changelog.mo b/docs/locale/nl/LC_MESSAGES/changelog.mo index 2cea6775f5bf5e645a7c4d6a88f64ab1363fa91a..3059519de34a73f6d287988edd6302c87b556c1c 100644 GIT binary patch delta 16 XcmZoyZdcxLoRis9&v5f8&b{maF-rxu delta 16 XcmZoyZdcxLoRisD&t&r{&b{maF---x diff --git a/docs/locale/nl/LC_MESSAGES/changelog.po b/docs/locale/nl/LC_MESSAGES/changelog.po index ddd07ecba..15fd3d1e0 100644 --- a/docs/locale/nl/LC_MESSAGES/changelog.po +++ b/docs/locale/nl/LC_MESSAGES/changelog.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.1\n" #: ../../changelog.rst:2 msgid "Changelog" @@ -53,25 +53,120 @@ msgstr "" "fixes-new-features>`_." #: ../../changelog.rst:22 -msgid "v1.11.0 - 2017-xx-xx" -msgstr "" - -#: ../../changelog.rst:24 ../../changelog.rst:44 ../../changelog.rst:63 -#: ../../changelog.rst:89 ../../changelog.rst:98 ../../changelog.rst:107 -#: ../../changelog.rst:130 ../../changelog.rst:139 ../../changelog.rst:149 -#: ../../changelog.rst:171 ../../changelog.rst:189 ../../changelog.rst:198 -#: ../../changelog.rst:208 ../../changelog.rst:217 ../../changelog.rst:227 -#: ../../changelog.rst:236 ../../changelog.rst:254 ../../changelog.rst:273 -#: ../../changelog.rst:298 ../../changelog.rst:311 ../../changelog.rst:326 -#: ../../changelog.rst:334 ../../changelog.rst:345 ../../changelog.rst:357 -#: ../../changelog.rst:374 ../../changelog.rst:382 ../../changelog.rst:390 -#: ../../changelog.rst:404 +msgid "v1.12.0 - 2018-xx-xx" +msgstr "" + +#: ../../changelog.rst:24 ../../changelog.rst:41 ../../changelog.rst:62 +#: ../../changelog.rst:81 ../../changelog.rst:107 ../../changelog.rst:116 +#: ../../changelog.rst:125 ../../changelog.rst:148 ../../changelog.rst:157 +#: ../../changelog.rst:167 ../../changelog.rst:189 ../../changelog.rst:207 +#: ../../changelog.rst:216 ../../changelog.rst:226 ../../changelog.rst:235 +#: ../../changelog.rst:245 ../../changelog.rst:254 ../../changelog.rst:272 +#: ../../changelog.rst:291 ../../changelog.rst:316 ../../changelog.rst:329 +#: ../../changelog.rst:344 ../../changelog.rst:352 ../../changelog.rst:363 +#: ../../changelog.rst:375 ../../changelog.rst:392 ../../changelog.rst:400 +#: ../../changelog.rst:408 ../../changelog.rst:422 msgid "**Tickets resolved in this release:**" msgstr "**Tickets die opgelost zijn in deze release:**" #: ../../changelog.rst:26 #, fuzzy msgid "" +"[`#72 `_] " +"Source data retention" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:27 +#, fuzzy +msgid "" +"[`#414 `_] add" +" systemd service files - by meijjaa" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:28 +#, fuzzy +msgid "" +"[`#405 `_] " +"More updates to the Dutch translation of the documentation - by lckarssen" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:29 +#, fuzzy +msgid "" +"[`#404 `_] Fix" +" minor typo in Dutch translation - by lckarssen" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:30 +#, fuzzy +msgid "" +"[`#398 `_] iOS" +" Web App: prevent same-window links from being opened externally - by " +"Joris Vervuurt" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:31 +#, fuzzy +msgid "" +"[`#399 `_] " +"Veel calls naar api.buienradar" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:32 +#, fuzzy +msgid "" +"[`#406 `_] " +"Spelling correction trends page" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:33 +#, fuzzy +msgid "" +"[`#413 `_] " +"Hoge CPU belasting op rpi 2 icm DSMR 5.0 meter" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:34 +#, fuzzy +msgid "" +"[`#419 `_] " +"Requirements update (January 2018)" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:39 +msgid "v1.11.0 - 2017-11-24" +msgstr "" + +#: ../../changelog.rst:43 +#, fuzzy +msgid "" "[`#382 `_] " "Archief klopt niet" msgstr "" @@ -79,7 +174,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:27 +#: ../../changelog.rst:44 #, fuzzy msgid "" "[`#385 `_] " @@ -89,7 +184,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:28 +#: ../../changelog.rst:45 #, fuzzy msgid "" "[`#387 `_] " @@ -99,7 +194,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:29 +#: ../../changelog.rst:46 #, fuzzy msgid "" "[`#368 `_] " @@ -109,7 +204,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:30 +#: ../../changelog.rst:47 #, fuzzy msgid "" "[`#370 `_] " @@ -119,7 +214,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:31 +#: ../../changelog.rst:48 #, fuzzy msgid "" "[`#371 `_] " @@ -129,18 +224,28 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:36 +#: ../../changelog.rst:49 +#, fuzzy +msgid "" +"[`#378 `_] " +"Processing of telegrams stalled" +msgstr "" +"De ondersteuning voor ``Python 3.3`` is **vervallen** wegens de Django " +"upgrade (`#103 `_)." + +#: ../../changelog.rst:54 msgid "v1.10.0 - 2017-10-19" msgstr "" -#: ../../changelog.rst:40 +#: ../../changelog.rst:58 msgid "" "This releases turns telegram logging **off by default**. If you wish to " "continue using this feature, add ``DSMRREADER_LOG_TELEGRAMS = True`` to " "your ``settings.py`` and reload the application." msgstr "" -#: ../../changelog.rst:46 +#: ../../changelog.rst:64 #, fuzzy msgid "" "[`#363 `_] " @@ -150,7 +255,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:47 +#: ../../changelog.rst:65 #, fuzzy msgid "" "[`#305 `_] " @@ -160,7 +265,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:48 +#: ../../changelog.rst:66 #, fuzzy msgid "" "[`#194 `_] Add" @@ -170,7 +275,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:49 +#: ../../changelog.rst:67 #, fuzzy msgid "" "[`#365 `_] " @@ -180,7 +285,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:50 +#: ../../changelog.rst:68 #, fuzzy msgid "" "[`#366 `_] " @@ -190,11 +295,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:55 +#: ../../changelog.rst:73 msgid "v1.9.0 - 2017-10-08" msgstr "" -#: ../../changelog.rst:59 +#: ../../changelog.rst:77 msgid "" "This release contains an update for the API framework, which `has a fix " "for some timezone issues `_] Data " @@ -212,7 +317,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:66 +#: ../../changelog.rst:84 #, fuzzy msgid "" "[`#163 `_] " @@ -222,7 +327,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:67 +#: ../../changelog.rst:85 #, fuzzy msgid "" "[`#337 `_] API" @@ -232,7 +337,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:68 +#: ../../changelog.rst:86 #, fuzzy msgid "" "[`#284 `_] " @@ -242,7 +347,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:69 +#: ../../changelog.rst:87 #, fuzzy msgid "" "[`#279 `_] " @@ -253,7 +358,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:70 +#: ../../changelog.rst:88 #, fuzzy msgid "" "[`#245 `_] " @@ -263,7 +368,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:71 +#: ../../changelog.rst:89 #, fuzzy msgid "" "[`#272 `_] " @@ -273,7 +378,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:72 +#: ../../changelog.rst:90 #, fuzzy msgid "" "[`#273 `_] " @@ -283,7 +388,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:73 +#: ../../changelog.rst:91 #, fuzzy msgid "" "[`#286 `_] Na " @@ -294,7 +399,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:74 +#: ../../changelog.rst:92 #, fuzzy msgid "" "[`#332 `_] " @@ -304,7 +409,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:75 +#: ../../changelog.rst:93 #, fuzzy msgid "" "[`#276 `_] " @@ -314,7 +419,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:76 +#: ../../changelog.rst:94 #, fuzzy msgid "" "[`#288 `_] Add" @@ -324,7 +429,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:77 +#: ../../changelog.rst:95 #, fuzzy msgid "" "[`#320 `_] " @@ -334,7 +439,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:78 +#: ../../changelog.rst:96 #, fuzzy msgid "" "[`#314 `_] Add" @@ -344,7 +449,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:79 +#: ../../changelog.rst:97 #, fuzzy msgid "" "[`#358 `_] " @@ -354,7 +459,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:80 +#: ../../changelog.rst:98 #, fuzzy msgid "" "[`#270 `_] " @@ -364,7 +469,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:81 +#: ../../changelog.rst:99 #, fuzzy msgid "" "[`#231 `_] " @@ -374,7 +479,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:82 +#: ../../changelog.rst:100 #, fuzzy msgid "" "[`#300 `_] " @@ -384,11 +489,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:87 +#: ../../changelog.rst:105 msgid "v1.8.2 - 2017-08-12" msgstr "" -#: ../../changelog.rst:91 +#: ../../changelog.rst:109 #, fuzzy msgid "" "[`#346 `_] " @@ -398,11 +503,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:96 +#: ../../changelog.rst:114 msgid "v1.8.1 - 2017-07-04" msgstr "" -#: ../../changelog.rst:100 +#: ../../changelog.rst:118 #, fuzzy msgid "" "[`#339 `_] " @@ -412,11 +517,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:105 +#: ../../changelog.rst:123 msgid "v1.8.0 - 2017-06-14" msgstr "" -#: ../../changelog.rst:109 +#: ../../changelog.rst:127 #, fuzzy msgid "" "[`#141 `_] Add" @@ -426,7 +531,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:110 +#: ../../changelog.rst:128 #, fuzzy msgid "" "[`#331 `_] " @@ -436,7 +541,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:111 +#: ../../changelog.rst:129 #, fuzzy msgid "" "[`#299 `_] " @@ -446,31 +551,31 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:116 +#: ../../changelog.rst:134 msgid "v1.7.0 - 2017-05-04" msgstr "" -#: ../../changelog.rst:120 +#: ../../changelog.rst:138 msgid "" "Please note that the ``dsmr_datalogger.0007_dsmrreading_timestamp_index``" " migration **will take quite some time**, as it adds an index on one of " "the largest database tables!" msgstr "" -#: ../../changelog.rst:122 +#: ../../changelog.rst:140 msgid "" "It takes **around two minutes** on a RaspberryPi 2 & 3 with ``> 4.3 " "million`` readings on PostgreSQL. Results may differ on **slower " "RaspberryPi's** or **with MySQL**." msgstr "" -#: ../../changelog.rst:127 +#: ../../changelog.rst:145 msgid "" "The API-docs for the new v2 API `can be found here `_." msgstr "" -#: ../../changelog.rst:132 +#: ../../changelog.rst:150 #, fuzzy msgid "" "[`#230 `_] " @@ -480,11 +585,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:137 +#: ../../changelog.rst:155 msgid "v1.6.2 - 2017-04-23" msgstr "" -#: ../../changelog.rst:141 +#: ../../changelog.rst:159 #, fuzzy msgid "" "[`#269 `_] " @@ -494,7 +599,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:142 +#: ../../changelog.rst:160 #, fuzzy msgid "" "[`#303 `_] " @@ -504,11 +609,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:147 +#: ../../changelog.rst:165 msgid "v1.6.1 - 2017-04-06" msgstr "" -#: ../../changelog.rst:151 +#: ../../changelog.rst:169 #, fuzzy msgid "" "[`#298 `_] " @@ -518,11 +623,11 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:156 +#: ../../changelog.rst:174 msgid "v1.6.0 - 2017-03-18" msgstr "" -#: ../../changelog.rst:160 +#: ../../changelog.rst:178 msgid "" "Support for ``MySQL`` has been **deprecated** since ``DSMR-reader v1.6`` " "and will be discontinued completely in a later release. Please use a " @@ -530,14 +635,14 @@ msgid "" "supported in easily migrating to PostgreSQL in the future." msgstr "" -#: ../../changelog.rst:165 +#: ../../changelog.rst:183 msgid "" "**Change in API:** The telegram creation API now returns an ``HTTP 201`` " "response when successful. An ``HTTP 200`` was returned in former " "versions. :doc:`View API docs`." msgstr "" -#: ../../changelog.rst:173 +#: ../../changelog.rst:191 #, fuzzy msgid "" "[`#221 `_] " @@ -547,7 +652,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:174 +#: ../../changelog.rst:192 #, fuzzy msgid "" "[`#237 `_] " @@ -557,7 +662,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:175 +#: ../../changelog.rst:193 #, fuzzy msgid "" "[`#249 `_] " @@ -567,7 +672,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:176 +#: ../../changelog.rst:194 #, fuzzy msgid "" "[`#232 `_] " @@ -577,19 +682,19 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:177 +#: ../../changelog.rst:195 msgid "" "[`#260 `_] Add" " link to readthedocs in Django for Dropbox instructions." msgstr "" -#: ../../changelog.rst:178 +#: ../../changelog.rst:196 msgid "" "[`#211 `_] API" " request should return HTTP 201 instead of HTTP 200." msgstr "" -#: ../../changelog.rst:179 +#: ../../changelog.rst:197 #, fuzzy msgid "" "[`#191 `_] " @@ -599,7 +704,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:180 +#: ../../changelog.rst:198 #, fuzzy msgid "" "[`#251 `_] " @@ -609,7 +714,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:181 +#: ../../changelog.rst:199 #, fuzzy msgid "" "[`#257 `_] " @@ -619,7 +724,7 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:182 +#: ../../changelog.rst:200 #, fuzzy msgid "" "[`#274 `_] " @@ -629,81 +734,81 @@ msgstr "" "upgrade (`#103 `_)." -#: ../../changelog.rst:187 ../../changelog.rst:206 +#: ../../changelog.rst:205 ../../changelog.rst:224 msgid "v1.5.5 - 2017-01-19" msgstr "" -#: ../../changelog.rst:191 ../../changelog.rst:210 +#: ../../changelog.rst:209 ../../changelog.rst:228 msgid "" "Remove readonly restriction for editing statistics in admin interface " "(`#242 `_)." msgstr "" -#: ../../changelog.rst:196 ../../changelog.rst:215 +#: ../../changelog.rst:214 ../../changelog.rst:233 msgid "v1.5.4 - 2017-01-12" msgstr "" -#: ../../changelog.rst:200 ../../changelog.rst:219 +#: ../../changelog.rst:218 ../../changelog.rst:237 msgid "" "Improve datalogger for DSMR v5.0 (`#212 " "`_)." msgstr "" -#: ../../changelog.rst:201 ../../changelog.rst:220 +#: ../../changelog.rst:219 ../../changelog.rst:238 msgid "" "Fixed another bug in MinderGas API client implementation (`#228 " "`_)." msgstr "" -#: ../../changelog.rst:225 +#: ../../changelog.rst:243 msgid "v1.5.3 - 2017-01-11" msgstr "" -#: ../../changelog.rst:229 +#: ../../changelog.rst:247 msgid "" "Improve MinderGas API client implementation (`#228 " "`_)." msgstr "" -#: ../../changelog.rst:234 +#: ../../changelog.rst:252 msgid "v1.5.2 - 2017-01-09" msgstr "" -#: ../../changelog.rst:238 +#: ../../changelog.rst:256 msgid "" "Automatic refresh of dashboard charts (`#210 " "`_)." msgstr "" -#: ../../changelog.rst:239 +#: ../../changelog.rst:257 msgid "" "Mindergas.nl API: Tijdstip van verzending willekeurig maken (`#204 " "`_)." msgstr "" -#: ../../changelog.rst:240 +#: ../../changelog.rst:258 msgid "" "Extend API docs with additional example (`#185 " "`_)." msgstr "" -#: ../../changelog.rst:241 +#: ../../changelog.rst:259 msgid "" "Docs: How to restore backup (`#190 `_)." msgstr "" -#: ../../changelog.rst:242 +#: ../../changelog.rst:260 msgid "" "Log errors occured to file (`#181 `_)." msgstr "" -#: ../../changelog.rst:247 +#: ../../changelog.rst:265 msgid "v1.5.1 - 2017-01-04" msgstr "" -#: ../../changelog.rst:251 +#: ../../changelog.rst:269 msgid "" "This patch contains no new features and **only solves upgrading issues** " "for some users." @@ -711,7 +816,7 @@ msgstr "" "Deze patch bevat geen nieuwe features en **lost alleen upgrade-problemen " "op** voor sommige gebruikers." -#: ../../changelog.rst:256 +#: ../../changelog.rst:274 msgid "" "Fix for issues `#200 `_ & `#217 `_)." -#: ../../changelog.rst:266 +#: ../../changelog.rst:284 msgid "" "There is **experimental support** for ``Python 3.6`` and ``Python 3.7 " "(nightly)`` as the unittests are `now built against those versions `_ (`#167 `_)." -#: ../../changelog.rst:268 +#: ../../changelog.rst:286 msgid "**Legacy warning**" msgstr "**Waarschuwing voor legacy**" -#: ../../changelog.rst:270 +#: ../../changelog.rst:288 msgid "" "The migrations that were squashed together in (`#31 " "`_) have been " @@ -773,7 +878,7 @@ msgstr "" "**verwijderd**. Hier heb je alleen maar te maken wanneer je nog gebruik " "maakt van een dsmrreader-versie **vóór** ``v0.13 (β)``." -#: ../../changelog.rst:271 +#: ../../changelog.rst:289 msgid "" "If you are indeed still running ``< v0.13 (β)``, please upgrade to " "``v1.4`` first (!), followed by an upgrade to ``v1.5``." @@ -781,409 +886,409 @@ msgstr "" "Wanneer je nog steeds een versie van vóór ``< v0.13 (β)`` draait, upgrade" " dan eerst naar ``v1.4`` (!), gevolgd door een upgrade naar ``v1.5``." -#: ../../changelog.rst:275 +#: ../../changelog.rst:293 msgid "" "Verify telegrams' CRC (`#188 `_)." msgstr "" -#: ../../changelog.rst:276 +#: ../../changelog.rst:294 msgid "" "Display last 24 hours on dashboard (`#164 " "`_)." msgstr "" -#: ../../changelog.rst:277 +#: ../../changelog.rst:295 msgid "" "Status page visualisation (`#172 `_)." msgstr "" -#: ../../changelog.rst:278 +#: ../../changelog.rst:296 msgid "" "Store and display phases consumption (`#161 " "`_)." msgstr "" -#: ../../changelog.rst:279 +#: ../../changelog.rst:297 msgid "" "Weather graph not showing when no gas data is available (`#170 " "`_)." msgstr "" -#: ../../changelog.rst:280 +#: ../../changelog.rst:298 msgid "" "Upgrade to ChartJs 2.0 (`#127 `_)." msgstr "" -#: ../../changelog.rst:281 +#: ../../changelog.rst:299 msgid "" "Improve Statistics page performance (`#173 " "`_)." msgstr "" -#: ../../changelog.rst:282 +#: ../../changelog.rst:300 msgid "" "Version checker at github (`#166 `_)." msgstr "" -#: ../../changelog.rst:283 +#: ../../changelog.rst:301 msgid "" "Remove required login for dismissal of in-app notifications (`#179 " "`_)." msgstr "" -#: ../../changelog.rst:284 +#: ../../changelog.rst:302 msgid "" "Round numbers displayed in GUI to 2 decimals (`#183 " "`_)." msgstr "" -#: ../../changelog.rst:285 +#: ../../changelog.rst:303 msgid "" "Switch Nosetests to Pytest (+ pytest-cov) (`#167 " "`_)." msgstr "" -#: ../../changelog.rst:286 +#: ../../changelog.rst:304 msgid "" "PyLama code audit (+ pytest-cov) (`#158 " "`_)." msgstr "" -#: ../../changelog.rst:287 +#: ../../changelog.rst:305 msgid "" "Double upgrade of Django framework ``Django 1.8`` -> ``Django 1.9`` -> " "``Django 1.10`` (`#103 `_)." msgstr "" -#: ../../changelog.rst:288 +#: ../../changelog.rst:306 msgid "" "Force ``PYTHONUNBUFFERED`` for supervisor commands (`#176 " "`_)." msgstr "" -#: ../../changelog.rst:289 +#: ../../changelog.rst:307 msgid "" "Documentation updates for v1.5 (`#171 `_)." msgstr "" -#: ../../changelog.rst:290 +#: ../../changelog.rst:308 msgid "" "Requirements update for v1.5 (december 2016) (`#182 " "`_)." msgstr "" -#: ../../changelog.rst:291 +#: ../../changelog.rst:309 msgid "" "Improved backend process logging (`#184 " "`_)." msgstr "" -#: ../../changelog.rst:296 +#: ../../changelog.rst:314 msgid "v1.4.1 - 2016-12-12" msgstr "" -#: ../../changelog.rst:300 +#: ../../changelog.rst:318 msgid "" "Consumption chart hangs due to unique_key violation (`#174 " "`_)." msgstr "" -#: ../../changelog.rst:301 +#: ../../changelog.rst:319 msgid "" "NoReverseMatch at / Reverse for 'docs' (`#175 " "`_)." msgstr "" -#: ../../changelog.rst:306 +#: ../../changelog.rst:324 msgid "v1.4.0 - 2016-11-28" msgstr "" -#: ../../changelog.rst:309 +#: ../../changelog.rst:327 msgid "" "Support for ``Python 3.5`` has been added officially (`#55 " "`_)." msgstr "" -#: ../../changelog.rst:313 +#: ../../changelog.rst:331 msgid "" "Push notifications for Notify My Android / Prowl (iOS), written by Jeroen" " Peters (`#152 `_)." msgstr "" -#: ../../changelog.rst:314 +#: ../../changelog.rst:332 msgid "" "Support for both single and high/low tariff (`#130 " "`_)." msgstr "" -#: ../../changelog.rst:315 +#: ../../changelog.rst:333 msgid "" "Add new note from Dashboard has wrong time format (`#159 " "`_)." msgstr "" -#: ../../changelog.rst:316 +#: ../../changelog.rst:334 msgid "" "Display estimated price for current usage in Dashboard (`#155 " "`_)." msgstr "" -#: ../../changelog.rst:317 +#: ../../changelog.rst:335 msgid "" "Dropbox API v1 deprecated in June 2017 (`#142 " "`_)." msgstr "" -#: ../../changelog.rst:318 +#: ../../changelog.rst:336 msgid "" "Improve code coverage (`#151 `_)." msgstr "" -#: ../../changelog.rst:319 +#: ../../changelog.rst:337 msgid "" "Restyle configuration overview (`#156 `_)." msgstr "" -#: ../../changelog.rst:320 +#: ../../changelog.rst:338 msgid "" "Capability based push notifications (`#165 " "`_)." msgstr "" -#: ../../changelog.rst:325 +#: ../../changelog.rst:343 msgid "v1.3.2 - 2016-11-08" msgstr "" -#: ../../changelog.rst:328 +#: ../../changelog.rst:346 msgid "" "Requirements update (november 2016) (`#150 " "`_)." msgstr "" -#: ../../changelog.rst:333 +#: ../../changelog.rst:351 msgid "v1.3.1 - 2016-08-16" msgstr "" -#: ../../changelog.rst:336 +#: ../../changelog.rst:354 msgid "" "CSS large margin-bottom (`#144 `_)." msgstr "" -#: ../../changelog.rst:337 +#: ../../changelog.rst:355 msgid "" "Django security releases issued: 1.8.14 (`#147 " "`_)." msgstr "" -#: ../../changelog.rst:338 +#: ../../changelog.rst:356 msgid "" "Requirements update (August 2016) (`#148 " "`_)." msgstr "" -#: ../../changelog.rst:339 +#: ../../changelog.rst:357 msgid "" "Query performance improvements (`#149 `_)." msgstr "" -#: ../../changelog.rst:344 +#: ../../changelog.rst:362 msgid "v1.3.0 - 2016-07-15" msgstr "" -#: ../../changelog.rst:347 +#: ../../changelog.rst:365 msgid "" "API endpoint for datalogger (`#140 `_)." msgstr "" -#: ../../changelog.rst:348 +#: ../../changelog.rst:366 msgid "" "Colors for charts (`#137 `_)." msgstr "" -#: ../../changelog.rst:349 +#: ../../changelog.rst:367 msgid "" "Data export: Mindergas.nl (`#10 `_)." msgstr "" -#: ../../changelog.rst:350 +#: ../../changelog.rst:368 msgid "" "Requirement upgrade (`#143 `_)." msgstr "" -#: ../../changelog.rst:351 +#: ../../changelog.rst:369 msgid "" "Installation wizard for first time use (`#139 " "`_)." msgstr "" -#: ../../changelog.rst:356 +#: ../../changelog.rst:374 msgid "v1.2.0 - 2016-05-18" msgstr "" -#: ../../changelog.rst:359 +#: ../../changelog.rst:377 msgid "" "Energy supplier prices does not indicate tariff type (Django admin) " "(`#126 `_)." msgstr "" -#: ../../changelog.rst:360 +#: ../../changelog.rst:378 msgid "" "Requirements update (`#128 `_)." msgstr "" -#: ../../changelog.rst:361 +#: ../../changelog.rst:379 msgid "" "Force backup (`#123 `_)." msgstr "" -#: ../../changelog.rst:362 +#: ../../changelog.rst:380 msgid "" "Update clean-install.md (`#131 `_)." msgstr "" -#: ../../changelog.rst:363 +#: ../../changelog.rst:381 msgid "" "Improve data export field names (`#132 " "`_)." msgstr "" -#: ../../changelog.rst:364 +#: ../../changelog.rst:382 msgid "" "Display average temperature in archive (`#122 " "`_)." msgstr "" -#: ../../changelog.rst:365 +#: ../../changelog.rst:383 msgid "" "Pie charts on trends page overlap their canvas (`#136 " "`_)." msgstr "" -#: ../../changelog.rst:366 +#: ../../changelog.rst:384 msgid "" "'Slumber' consumption (`#115 `_)." msgstr "" -#: ../../changelog.rst:367 +#: ../../changelog.rst:385 msgid "" "Show lowest & highest Watt peaks (`#138 " "`_)." msgstr "" -#: ../../changelog.rst:368 +#: ../../changelog.rst:386 msgid "" "Allow day & hour statistics reset due to changing energy prices (`#95 " "`_)." msgstr "" -#: ../../changelog.rst:373 +#: ../../changelog.rst:391 msgid "v1.1.2 - 2016-05-01" msgstr "" -#: ../../changelog.rst:376 +#: ../../changelog.rst:394 msgid "" "Trends page giving errors (when lacking data) (`#125 " "`_)." msgstr "" -#: ../../changelog.rst:381 +#: ../../changelog.rst:399 msgid "v1.1.1 - 2016-04-27" msgstr "" -#: ../../changelog.rst:384 +#: ../../changelog.rst:402 msgid "" "Improve readme (`#124 `_)." msgstr "" -#: ../../changelog.rst:389 +#: ../../changelog.rst:407 msgid "v1.1.0 - 2016-04-23" msgstr "" -#: ../../changelog.rst:392 +#: ../../changelog.rst:410 msgid "" "Autorefresh dashboard (`#117 `_)." msgstr "" -#: ../../changelog.rst:393 +#: ../../changelog.rst:411 msgid "" "Improve line graphs' visibility (`#111 " "`_)." msgstr "" -#: ../../changelog.rst:394 +#: ../../changelog.rst:412 msgid "" "Easily add notes (`#110 `_)." msgstr "" -#: ../../changelog.rst:395 +#: ../../changelog.rst:413 msgid "" "Export data points in CSV format (`#2 `_)." msgstr "" -#: ../../changelog.rst:396 +#: ../../changelog.rst:414 msgid "" "Allow day/month/year comparison (`#94 `_)." msgstr "" -#: ../../changelog.rst:397 +#: ../../changelog.rst:415 msgid "" "Docs: Add FAQ and generic application info (`#113 " "`_)." msgstr "" -#: ../../changelog.rst:398 +#: ../../changelog.rst:416 msgid "" "Support for Iskra meter (DSMR 2.x) (`#120 " "`_)." msgstr "" -#: ../../changelog.rst:403 +#: ../../changelog.rst:421 msgid "v1.0.1 - 2016-04-07" msgstr "" -#: ../../changelog.rst:406 +#: ../../changelog.rst:424 msgid "" "Update licence to OSI compatible one (`#119 " "`_)." msgstr "" -#: ../../changelog.rst:411 +#: ../../changelog.rst:429 msgid "v1.0.0 - 2016-04-07" msgstr "" -#: ../../changelog.rst:412 +#: ../../changelog.rst:430 msgid "First official stable release." msgstr "Eerste officiële stabiele release." -#: ../../changelog.rst:417 +#: ../../changelog.rst:435 msgid "[β] v0.1 (2015-10-29) to 0.16 (2016-04-06)" msgstr "" -#: ../../changelog.rst:420 +#: ../../changelog.rst:438 msgid "" "All previous beta releases/changes have been combined to a single list " "below." @@ -1191,444 +1296,444 @@ msgstr "" "Alle vorige bèta releases/veranderingen zijn gecombineerd tot een enkele " "lijst hieronder." -#: ../../changelog.rst:422 +#: ../../changelog.rst:440 msgid "" "Move documentation to wiki or RTD (`#90 " "`_)." msgstr "" -#: ../../changelog.rst:423 +#: ../../changelog.rst:441 msgid "" "Translate README to Dutch (`#16 `_)." msgstr "" -#: ../../changelog.rst:424 +#: ../../changelog.rst:442 msgid "" "Delete (recent) history page (`#112 `_)." msgstr "" -#: ../../changelog.rst:425 +#: ../../changelog.rst:443 msgid "" "Display most recent temperature in dashboard (`#114 " "`_)." msgstr "" -#: ../../changelog.rst:426 +#: ../../changelog.rst:444 msgid "" "Upgrade Django to 1.8.12 (`#118 `_)." msgstr "" -#: ../../changelog.rst:428 +#: ../../changelog.rst:446 msgid "" "Redesign trends page (`#97 `_)." msgstr "" -#: ../../changelog.rst:429 +#: ../../changelog.rst:447 msgid "" "Support for summer time (`#105 `_)." msgstr "" -#: ../../changelog.rst:430 +#: ../../changelog.rst:448 msgid "" "Support for Daylight Saving Time (DST) transition (`#104 " "`_)." msgstr "" -#: ../../changelog.rst:431 +#: ../../changelog.rst:449 msgid "" "Add (error) hints to status page (`#106 " "`_)." msgstr "" -#: ../../changelog.rst:432 +#: ../../changelog.rst:450 msgid "" "Keep track of version (`#108 `_)." msgstr "" -#: ../../changelog.rst:434 +#: ../../changelog.rst:452 msgid "" "Django 1.8.11 released (`#82 `_)." msgstr "" -#: ../../changelog.rst:435 +#: ../../changelog.rst:453 msgid "" "Prevent tests from failing due to moment of execution (`#88 " "`_)." msgstr "" -#: ../../changelog.rst:436 +#: ../../changelog.rst:454 msgid "" "Statistics page meter positions are broken (`#93 " "`_)." msgstr "" -#: ../../changelog.rst:437 +#: ../../changelog.rst:455 msgid "" "Archive only shows graph untill 23:00 (11 pm) (`#77 " "`_)." msgstr "" -#: ../../changelog.rst:438 +#: ../../changelog.rst:456 msgid "" "Trends page crashes due to nullable fields average (`#100 " "`_)." msgstr "" -#: ../../changelog.rst:439 +#: ../../changelog.rst:457 msgid "" "Trends: Plot peak and off-peak relative to each other (`#99 " "`_)." msgstr "" -#: ../../changelog.rst:440 +#: ../../changelog.rst:458 msgid "" "Monitor requirements with requires.io (`#101 " "`_)." msgstr "" -#: ../../changelog.rst:441 +#: ../../changelog.rst:459 msgid "" "Terminology (`#41 `_)." msgstr "" -#: ../../changelog.rst:442 +#: ../../changelog.rst:460 msgid "" "Obsolete signals in dsmr_consumption (`#63 " "`_)." msgstr "" -#: ../../changelog.rst:443 +#: ../../changelog.rst:461 msgid "" "Individual app testing coverage (`#64 `_)." msgstr "" -#: ../../changelog.rst:444 +#: ../../changelog.rst:462 msgid "" "Support for extra devices on other M-bus (0-n:24.1) (`#92 " "`_)." msgstr "" -#: ../../changelog.rst:445 +#: ../../changelog.rst:463 msgid "" "Separate post-deployment commands (`#102 " "`_)." msgstr "" -#: ../../changelog.rst:447 +#: ../../changelog.rst:465 msgid "" "Show exceptions in production (webinterface) (`#87 " "`_)." msgstr "" -#: ../../changelog.rst:448 +#: ../../changelog.rst:466 msgid "" "Keep Supervisor processes running (`#79 " "`_)." msgstr "" -#: ../../changelog.rst:449 +#: ../../changelog.rst:467 msgid "" "Hourly stats of 22:00:00+00 every day lack gas (`#78 " "`_)." msgstr "" -#: ../../changelog.rst:450 +#: ../../changelog.rst:468 msgid "" "Test Travis-CI with MySQL + MariaDB + PostgreSQL (`#54 " "`_)." msgstr "" -#: ../../changelog.rst:451 +#: ../../changelog.rst:469 msgid "" "PostgreSQL tests + nosetests + coverage failure: unrecognized " "configuration parameter \"foreign_key_checks\" (`#62 " "`_)." msgstr "" -#: ../../changelog.rst:452 +#: ../../changelog.rst:470 msgid "" "Performance check (`#83 `_)." msgstr "" -#: ../../changelog.rst:453 +#: ../../changelog.rst:471 msgid "" "Allow month & year archive (`#66 `_)." msgstr "" -#: ../../changelog.rst:454 +#: ../../changelog.rst:472 msgid "" "Graphs keep increasing height on tablet (`#89 " "`_)." msgstr "" -#: ../../changelog.rst:456 +#: ../../changelog.rst:474 msgid "" "Delete StatsSettings(.track) settings model (`#71 " "`_)." msgstr "" -#: ../../changelog.rst:457 +#: ../../changelog.rst:475 msgid "" "Drop deprecated commands (`#22 `_)." msgstr "" -#: ../../changelog.rst:458 +#: ../../changelog.rst:476 msgid "" "Datalogger doesn't work properly with DSMR 4.2 (KAIFA-METER) (`#73 " "`_)." msgstr "" -#: ../../changelog.rst:459 +#: ../../changelog.rst:477 msgid "" "Dashboard month statistics costs does not add up (`#75 " "`_)." msgstr "" -#: ../../changelog.rst:460 +#: ../../changelog.rst:478 msgid "" "Log unhandled exceptions and errors (`#65 " "`_)." msgstr "" -#: ../../changelog.rst:461 +#: ../../changelog.rst:479 msgid "" "Datalogger crashes with IntegrityError because 'timestamp' is null (`#74 " "`_)." msgstr "" -#: ../../changelog.rst:462 +#: ../../changelog.rst:480 msgid "" "Trends are always shown in UTC (`#76 `_)." msgstr "" -#: ../../changelog.rst:463 +#: ../../changelog.rst:481 msgid "" "Squash migrations (`#31 `_)." msgstr "" -#: ../../changelog.rst:464 +#: ../../changelog.rst:482 msgid "" "Display 'electricity returned' graph in dashboard (`#81 " "`_)." msgstr "" -#: ../../changelog.rst:465 +#: ../../changelog.rst:483 msgid "" "Optional gas (and electricity returned) capabilities tracking (`#70 " "`_)." msgstr "" -#: ../../changelog.rst:466 +#: ../../changelog.rst:484 msgid "" "Add 'electricity returned' to trends page (`#84 " "`_)." msgstr "" -#: ../../changelog.rst:468 +#: ../../changelog.rst:486 msgid "" "Archive: View past days details (`#61 `_)." msgstr "" -#: ../../changelog.rst:469 +#: ../../changelog.rst:487 msgid "" "Dashboard: Consumption total for current month (`#60 " "`_)." msgstr "" -#: ../../changelog.rst:470 +#: ../../changelog.rst:488 msgid "" "Check whether gas readings are optional (`#34 " "`_)." msgstr "" -#: ../../changelog.rst:471 +#: ../../changelog.rst:489 msgid "" "Django security releases issued: 1.8.10 (`#68 " "`_)." msgstr "" -#: ../../changelog.rst:472 +#: ../../changelog.rst:490 msgid "" "Notes display in archive (`#69 `_)." msgstr "" -#: ../../changelog.rst:474 +#: ../../changelog.rst:492 msgid "" "Status page/alerts when features are disabled/unavailable (`#45 " "`_)." msgstr "" -#: ../../changelog.rst:475 +#: ../../changelog.rst:493 msgid "" "Integrate Travis CI (`#48 `_)." msgstr "" -#: ../../changelog.rst:476 +#: ../../changelog.rst:494 msgid "" "Testing coverage (`#38 `_)." msgstr "" -#: ../../changelog.rst:477 +#: ../../changelog.rst:495 msgid "" "Implement automatic backups & Dropbox cloud storage (`#44 " "`_)." msgstr "" -#: ../../changelog.rst:478 +#: ../../changelog.rst:496 msgid "" "Link code coverage service to repository (`#56 " "`_)." msgstr "" -#: ../../changelog.rst:479 +#: ../../changelog.rst:497 msgid "" "Explore timezone.localtime() as replacement for datetime.astimezone() " "(`#50 `_)." msgstr "" -#: ../../changelog.rst:480 +#: ../../changelog.rst:498 msgid "" "Align GasConsumption.read_at to represent the start of hour (`#40 " "`_)." msgstr "" -#: ../../changelog.rst:482 +#: ../../changelog.rst:500 msgid "" "Cleanup unused static files (`#47 `_)." msgstr "" -#: ../../changelog.rst:483 +#: ../../changelog.rst:501 msgid "" "Investigated mysql_tzinfo_to_sql — Load the Time Zone Tables (`#35 " "`_)." msgstr "" -#: ../../changelog.rst:484 +#: ../../changelog.rst:502 msgid "" "Make additional DSMR data optional (`#46 " "`_)." msgstr "" -#: ../../changelog.rst:485 +#: ../../changelog.rst:503 msgid "" "Localize graph x-axis (`#42 `_)." msgstr "" -#: ../../changelog.rst:486 +#: ../../changelog.rst:504 msgid "" "Added graph formatting string to gettext file (`#42 " "`_)." msgstr "" -#: ../../changelog.rst:487 +#: ../../changelog.rst:505 msgid "" "Different colors for peak & off-peak electricity (`#52 " "`_)." msgstr "" -#: ../../changelog.rst:488 +#: ../../changelog.rst:506 msgid "" "Admin: Note widget (`#51 `_)." msgstr "" -#: ../../changelog.rst:489 +#: ../../changelog.rst:507 msgid "" "Allow GUI to run without data (`#26 `_)." msgstr "" -#: ../../changelog.rst:491 +#: ../../changelog.rst:509 msgid "" "Moved project to GitHub (`#28 `_)." msgstr "" -#: ../../changelog.rst:492 +#: ../../changelog.rst:510 msgid "Added stdout to dsmr_backend to reflect progress." msgstr "" -#: ../../changelog.rst:493 +#: ../../changelog.rst:511 msgid "" "Restore note usage in GUI (`#39 `_)." msgstr "" -#: ../../changelog.rst:495 +#: ../../changelog.rst:513 msgid "" "Store daily, weekly, monthly and yearly statistics (`#3 " "`_)." msgstr "" -#: ../../changelog.rst:496 +#: ../../changelog.rst:514 msgid "" "Improved Recent History page performance a bit. (as result of `#3 " "`_)" msgstr "" -#: ../../changelog.rst:497 +#: ../../changelog.rst:515 msgid "" "Updates ChartJS library tot 1.1, disposing django-chartjs plugin. Labels " "finally work! (as result of `#3 `_)" msgstr "" -#: ../../changelog.rst:498 +#: ../../changelog.rst:516 msgid "" "Added trends page. (as result of `#3 `_)" msgstr "" -#: ../../changelog.rst:500 +#: ../../changelog.rst:518 msgid "" "Recent history setting: set range (`#29 " "`_)." msgstr "" -#: ../../changelog.rst:501 +#: ../../changelog.rst:519 msgid "" "Mock required for test: dsmr_weather.test_weather_tracking (`#32 " "`_)." msgstr "" -#: ../../changelog.rst:503 +#: ../../changelog.rst:521 msgid "" "Massive refactoring: Separating apps & using signals (`#19 " "`_)." msgstr "" -#: ../../changelog.rst:504 +#: ../../changelog.rst:522 msgid "" "README update: Exit character for cu (`#27 " "`_, by Jeroen " "Peters)." msgstr "" -#: ../../changelog.rst:505 +#: ../../changelog.rst:523 msgid "Fixed untranslated strings in admin interface." msgstr "" -#: ../../changelog.rst:506 +#: ../../changelog.rst:524 msgid "Upgraded Django to 1.8.9." msgstr "" @@ -1638,3 +1743,6 @@ msgstr "" #~ msgid "v1.10 - 2017-xx-xx" #~ msgstr "" +#~ msgid "v1.11.0 - 2017-xx-xx" +#~ msgstr "" + diff --git a/docs/locale/nl/LC_MESSAGES/credits.mo b/docs/locale/nl/LC_MESSAGES/credits.mo index f9b62c89e9443bb93e75288801b85fcee6d862fc..fd11fc0004de9ed84d44468549cffa629f99a967 100644 GIT binary patch delta 16 YcmX@kb)0L%EM{g?J;Tj&nO89a05b9gg#Z8m delta 16 YcmX@kb)0L%EM{h7J(JCInO89a05bFih5!Hn diff --git a/docs/locale/nl/LC_MESSAGES/credits.po b/docs/locale/nl/LC_MESSAGES/credits.po index 395d2b1f4..3d7694948 100644 --- a/docs/locale/nl/LC_MESSAGES/credits.po +++ b/docs/locale/nl/LC_MESSAGES/credits.po @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 2.5.1\n" #: ../../credits.rst:2 msgid "Credits / Hall of Fame" @@ -36,142 +36,158 @@ msgid "Listed in any order, sorted by name." msgstr "Getoond in willekeurige belangrijkheid, gesorteerd op naam." #: ../../credits.rst:15 -msgid "`balk77 `_" +msgid "`allureGOT `_" msgstr "" #: ../../credits.rst:16 -msgid "`Bert-Jan Vos `_" +msgid "`balk77 `_" msgstr "" #: ../../credits.rst:17 -msgid "`dajappie `_" +msgid "`Bert-Jan Vos `_" msgstr "" #: ../../credits.rst:18 -msgid "`Daniel ter Horst `_" +msgid "`dajappie `_" msgstr "" #: ../../credits.rst:19 -msgid "`dbmnl `_" +msgid "`Daniel ter Horst `_" msgstr "" #: ../../credits.rst:20 -msgid "`emilkwaaitaal `_" +msgid "`dbmnl `_" msgstr "" #: ../../credits.rst:21 -msgid "`fpompert `_" +msgid "`emilkwaaitaal `_" msgstr "" #: ../../credits.rst:22 -msgid "`Gert Schaafsma `_" +msgid "`fpompert `_" msgstr "" #: ../../credits.rst:23 -msgid "`gertjuhh `_" +msgid "`Gert Schaafsma `_" msgstr "" #: ../../credits.rst:24 -msgid "`goegol `_" +msgid "`gertjuhh `_" msgstr "" #: ../../credits.rst:25 -msgid "`Hans-Paul Hemelaar `_" +msgid "`goegol `_" msgstr "" #: ../../credits.rst:26 -msgid "`helmo `_" +msgid "`Hans-Paul Hemelaar `_" msgstr "" #: ../../credits.rst:27 -msgid "`HugoDaBosss `_" +msgid "`helmo `_" msgstr "" #: ../../credits.rst:28 -msgid "`Jelte Leijenaar `_" +msgid "`HugoDaBosss `_" msgstr "" #: ../../credits.rst:29 -msgid "`Jeroen Tielen `_" +msgid "`Jelte Leijenaar `_" msgstr "" #: ../../credits.rst:30 -msgid "`ju5t `_" +msgid "`Jeroen Tielen `_" msgstr "" #: ../../credits.rst:31 -msgid "Koen Volleberg" +msgid "`Joris Vervuurt `_" msgstr "" #: ../../credits.rst:32 -msgid "`MarsWarrior `_" +msgid "`ju5t `_" msgstr "" #: ../../credits.rst:33 -msgid "`mbnn `_" +msgid "Koen Volleberg" msgstr "" #: ../../credits.rst:34 -msgid "`michielvisser `_" +msgid "`lckarssen `_" msgstr "" #: ../../credits.rst:35 -msgid "`mkruiver `_" +msgid "`MarsWarrior `_" msgstr "" #: ../../credits.rst:36 -msgid "`Paul Vinken `_" +msgid "`mbnn `_" msgstr "" #: ../../credits.rst:37 -msgid "`perryodk `_" +msgid "`meijjaa `_" msgstr "" #: ../../credits.rst:38 -msgid "`pyrocumulus `_" +msgid "`michielvisser `_" msgstr "" #: ../../credits.rst:39 -msgid "`Sander de Leeuw `_" +msgid "`mkruiver `_" msgstr "" #: ../../credits.rst:40 -msgid "`Sevickson `_" +msgid "`Paul Vinken `_" msgstr "" #: ../../credits.rst:41 -msgid "`ThinkPadNL `_" +msgid "`perryodk `_" msgstr "" #: ../../credits.rst:42 -msgid "`thommy101 `_" +msgid "`pyrocumulus `_" msgstr "" #: ../../credits.rst:43 -msgid "`TopdRob `_" +msgid "`Sander de Leeuw `_" msgstr "" #: ../../credits.rst:44 -msgid "`trbs `_" +msgid "`Sevickson `_" msgstr "" #: ../../credits.rst:45 -msgid "`voipmeister `_" +msgid "`ThinkPadNL `_" msgstr "" #: ../../credits.rst:46 -msgid "`WatskeBart `_" +msgid "`thommy101 `_" msgstr "" #: ../../credits.rst:47 -msgid "`xirixiz `_" +msgid "`TopdRob `_" +msgstr "" + +#: ../../credits.rst:48 +msgid "`trbs `_" +msgstr "" + +#: ../../credits.rst:49 +msgid "`voipmeister `_" +msgstr "" + +#: ../../credits.rst:50 +msgid "`WatskeBart `_" msgstr "" #: ../../credits.rst:51 +msgid "`xirixiz `_" +msgstr "" + +#: ../../credits.rst:55 msgid "Software used" msgstr "Gebruikte software" -#: ../../credits.rst:52 +#: ../../credits.rst:56 msgid "" "Please note and respect their licences as well, if any. Credits to the " "following software and projects:" @@ -179,119 +195,119 @@ msgstr "" "Houd rekening met eventuele licenties/restricties van deze software, " "wanneer van toepassing. Met dank aan de volgende software en projecten:" -#: ../../credits.rst:54 +#: ../../credits.rst:58 msgid "`Raspbian `_" msgstr "" -#: ../../credits.rst:55 +#: ../../credits.rst:59 msgid "`Django Project `_" msgstr "" -#: ../../credits.rst:56 +#: ../../credits.rst:60 msgid "`Django Solo `_" msgstr "" -#: ../../credits.rst:57 +#: ../../credits.rst:61 msgid "`Django Colorfield `_" msgstr "" -#: ../../credits.rst:58 +#: ../../credits.rst:62 msgid "`Supervisor `_" msgstr "" -#: ../../credits.rst:59 +#: ../../credits.rst:63 msgid "`MySQL `_" msgstr "" -#: ../../credits.rst:60 +#: ../../credits.rst:64 msgid "`MariaDB `_" msgstr "" -#: ../../credits.rst:61 +#: ../../credits.rst:65 msgid "`PostgreSQL `_" msgstr "" -#: ../../credits.rst:62 +#: ../../credits.rst:66 msgid "" "`Director Responsive Admin `_" msgstr "" -#: ../../credits.rst:63 +#: ../../credits.rst:67 msgid "" "Favicon made by `Freepik `_ from `flaticon.com " "`_" msgstr "" -#: ../../credits.rst:64 +#: ../../credits.rst:68 msgid "`Real Favicon Generator `_" msgstr "" -#: ../../credits.rst:65 +#: ../../credits.rst:69 msgid "`Bootstrap-datepicker `_" msgstr "" -#: ../../credits.rst:66 +#: ../../credits.rst:70 msgid "`Github `_" msgstr "" -#: ../../credits.rst:67 +#: ../../credits.rst:71 msgid "`TravisCI `_" msgstr "" -#: ../../credits.rst:68 +#: ../../credits.rst:72 msgid "`Codecov `_" msgstr "" -#: ../../credits.rst:69 +#: ../../credits.rst:73 msgid "`Read The Docs `_" msgstr "" -#: ../../credits.rst:70 +#: ../../credits.rst:74 msgid "`MW `_" msgstr "" -#: ../../credits.rst:71 +#: ../../credits.rst:75 msgid "" "`Full Page Screen Capture `_" msgstr "" -#: ../../credits.rst:72 +#: ../../credits.rst:76 msgid "`Buienradar `_" msgstr "" -#: ../../credits.rst:73 +#: ../../credits.rst:77 msgid "`Django REST Framework `_" msgstr "" -#: ../../credits.rst:74 +#: ../../credits.rst:78 msgid "`Swagger UI Themes `_" msgstr "" -#: ../../credits.rst:78 +#: ../../credits.rst:82 msgid "Misc" msgstr "Overig" -#: ../../credits.rst:80 +#: ../../credits.rst:84 msgid "Dutch Smart Meter reading specifications, data cables, examples and hints:" msgstr "Dutch Smart Meter reading specifications, data cables, examples and hints:" -#: ../../credits.rst:82 +#: ../../credits.rst:86 msgid "`Gé Janssen `_" msgstr "" -#: ../../credits.rst:84 +#: ../../credits.rst:88 msgid "" "`Joost van der Linde (smartmeterdashboard) " "`_" msgstr "" -#: ../../credits.rst:86 +#: ../../credits.rst:90 msgid "`SOS Solutions `_" msgstr "" -#: ../../credits.rst:88 +#: ../../credits.rst:92 msgid "`Nico Di Rocco `_" msgstr "" diff --git a/docs/locale/nl/LC_MESSAGES/faq.mo b/docs/locale/nl/LC_MESSAGES/faq.mo index b8077b4faebda42bb0b6b04a62203060c0e8fa00..b6a10f7b36556cade7e1d54cb219deb8d0f1ec6e 100644 GIT binary patch delta 1961 zcmb`HU2IfE7=}Nf1zLUt!~$Ai%8!7!yA}cIw#8Cg6hnhTV-o|&+1+V(>De>OIdcka zG^>eT7@|ZP@#h8%cP45gnkXik5KIj5H)xcYcw;bLc;gL0<-%vqE{%y^I?3!a-_GpJ zH}Ct+ULJb?K=r3Z4KE9AE4`Ke`81JT@W~l`(9Sf7big-Y5&j78g?)`8Ti`M1=HG^! z;jeH7Ts~9e6zqZv;bpj(y|2Pgi2t0GtgFiT*&>Vh;tE^}e}l_mW0Q!2tKl86uO1(Q z8;PHRtKnPFCGZX02In-3tb~2gB~XCR!oQ$~PtOr)hrhs8QsvOOwSzmMQ(+J;hR5M_ zGCl(p@!5GIId~Bsfa~USAoI_`UgD2$5ixMu0+9$FfvezE_&l7A3^(9O*u?KnaO?e? zFR$GyG7hi7Az0z`Zul9Tgfnjwc@Mr0*T6k3+y+{B5LT9m^uVv+dNy8wjLw>lWwk^M zbjth;v#|Ack?n8@Ry!D+Vz3T=4c~;2x-VhF58#(>o&s45PvZ}{%BRpteFeJ2 z{(zhzD<}Y01Kap;>xZC|{Hc2U4%|%q-3s*2GH7NOl9zsX5gvf2;VM;A-~x0%c&tq% z4Ua=ttmmQI_tPHace}FUl!| zqf^Z(%_9@))z!ZUNhNJoofLf1?x_wUg8`^Z><$SGdsjMeVpj8xCDkijQ z*o10eeBYzH&kZ$Qnp=IKsPm)B7Imam!Q>;=RkXGeWiy$A9!rk|Ru*m9-+t(c$FyTMjOJPzO5ntR{i+tm^f0+E<&>Thi_4a!bmMYi;Rp z!P%HHK>;zWjstf)&kNL;nR4_(Yc#+5cnK%+LYGow;9 zi1I~mRQpz$%9NFrx|O=-rN+ug6}44b2Ws@Fj$Dpo+@^j%E>^hd9e$PUn9(6iJ^vp* Xrbcuwj7y_6GY33xl_ delta 1235 zcmYk+O-NKx6u|M5&SayLscAFjsL!%5Yb?uBC(@zlVu3SG=Li(Is_c12durj&Xu=$J+Kv|Uj`boJ@EZ2w0ycBMp-|)~^D7%f25=G+ zSXq=^UNz70Pk zdlWAPq9L|WHxx!5l?ZCi9n|MXSIl4|^Ci@cRFhZsCf%69cqQ>4W6;Fgdg2eLFI;7n zdVGYuD{oPA_Z_uXsw|N_O#$v_-crLUF^WC-4sGrSNwl7Pn1UI?c^t+LcCQipRO^V0 zFeqc&ZeEzcHk{lp665+0;&dO+?j-;C6;EOJE-@Q_jBl79tIOuRcz3o&8ZpfEB=U2n zpusdf2qh%crBt)NX{5xQL@RwWo%c-Bw7BRRX3g3EjXkcm97efx4rZE0k$M!1&X*?a zbG1<}5?q-%8s@#LxA;sLdsgPuTQ=`Vv766M)4>;M@?C=jL<;B>x%t1K`Q1m?=BASY zAvnTkZyFzgsS!;hEj{M?=1R|aX1%HFzNwmaJ24pSjNAQ*s699k4_W!`c7NXuyDt*# hjM%Y|l^XY-_x`&UvihUxit?B{{j%y(VaiuO`WI-WhE4zg diff --git a/docs/locale/nl/LC_MESSAGES/faq.po b/docs/locale/nl/LC_MESSAGES/faq.po index 1ab99f5d6..2f6a6645d 100644 --- a/docs/locale/nl/LC_MESSAGES/faq.po +++ b/docs/locale/nl/LC_MESSAGES/faq.po @@ -1,20 +1,17 @@ msgid "" msgstr "" "Project-Id-Version: \n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Last-Translator: \n" +"Language: nl\n" "Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -"Language: nl\n" +"Generated-By: Babel 2.5.1\n" "X-Generator: Poedit 1.8.7.1\n" -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2016, Dennis Siemensma -# This file is distributed under the same license as the DSMR Reader -# package. -# FIRST AUTHOR , 2016. -# #: ../../faq.rst:2 msgid "Frequently Asked Questions (FAQ)" msgstr "Veelgestelde vragen (FAQ)" @@ -24,20 +21,44 @@ msgid "How can I update my application?" msgstr "Hoe kan ik mijn applicatie bijwerken?" #: ../../faq.rst:11 -msgid "The version you are running is always based on the 'latest' version of the application, called the `master` branch. Every once in a while there may be updates. Since ``v1.5`` you can also easily check for updates by using the application's Status page." -msgstr "De versie die je draait is altijd gebaseerd op de 'laatste' versie van de applicatie, ook wel de `master` branch genoemd. Met enige regelmaat zijn er updates beschikbaar. Sinds ``v1.5`` kun je dit ook eenvoudig controleren op de Status-pagina van de applicatie." +msgid "" +"The version you are running is always based on the 'latest' version of the " +"application, called the `master` branch. Every once in a while there may be " +"updates. Since ``v1.5`` you can also easily check for updates by using the " +"application's Status page." +msgstr "" +"De versie die je draait is altijd gebaseerd op de 'laatste' versie van de " +"applicatie, ook wel de `master` branch genoemd. Met enige regelmaat zijn er " +"updates beschikbaar. Sinds ``v1.5`` kun je dit ook eenvoudig controleren op de " +"Status-pagina van de applicatie." #: ../../faq.rst:16 -msgid "Before updating, **please make sure you have a recent backup of your database**! :doc:`More information about backups can be found here`." -msgstr "Voordat je bijwerkt, **zorg ervoor dat je in ieder geval een recente back-up van je database hebt**! :doc:`Meer informatie over back-ups kun je hier vinden`." +msgid "" +"Before updating, **please make sure you have a recent backup of your " +"database**! :doc:`More information about backups can be found " +"here`." +msgstr "" +"Voordat je bijwerkt, **zorg ervoor dat je in ieder geval een recente back-up " +"van je database hebt**! :doc:`Meer informatie over back-ups kun je hier " +"vinden`." #: ../../faq.rst:18 -msgid "You can update your application to the latest version by executing **deploy.sh**, located in the root of the project. Make sure to execute it while logged in as the ``dsmr`` user::" -msgstr "Je kun je applicatie bijwerken door het script **deploy.sh** uit te voeren, die in zich in de hoofdmap van het project bevindt. Zorg er wel voor dat je ingelogd bent als ``dsmr`` gebruiker op de terminal::" +msgid "" +"You can update your application to the latest version by executing **deploy." +"sh**, located in the root of the project. Make sure to execute it while logged " +"in as the ``dsmr`` user::" +msgstr "" +"Je kun je applicatie bijwerken door het script **deploy.sh** uit te voeren, " +"die in zich in de hoofdmap van het project bevindt. Zorg er wel voor dat je " +"ingelogd bent als ``dsmr`` gebruiker op de terminal::" #: ../../faq.rst:24 -msgid "It will make sure to check, fetch and apply any changes released. Summary of deployment script steps:" -msgstr "Dit zorgt ervoor dat alle wijzigingen op een juiste volgorde worden binnengehaald en toegepast. Een overzicht van wat dit uitrol-script exact doet:" +msgid "" +"It will make sure to check, fetch and apply any changes released. Summary of " +"deployment script steps:" +msgstr "" +"Dit zorgt ervoor dat alle wijzigingen op een juiste volgorde worden " +"binnengehaald en toegepast. Een overzicht van wat dit uitrol-script exact doet:" #: ../../faq.rst:26 msgid "GIT pull (codebase update)." @@ -56,8 +77,12 @@ msgid "Sync static files to Nginx folder." msgstr "Synchroniseert statische bestanden naar de Nginx map." #: ../../faq.rst:30 -msgid "Reload Gunicorn application server (web interface) and backend processes (such as the datalogger)." -msgstr "Herlaadt de Gunicorn-applicatieserver (webinterface) en achtergrondprocessen (zoals de datalogger)." +msgid "" +"Reload Gunicorn application server (web interface) and backend processes (such " +"as the datalogger)." +msgstr "" +"Herlaadt de Gunicorn-applicatieserver (webinterface) en achtergrondprocessen " +"(zoals de datalogger)." #: ../../faq.rst:31 msgid "Clear any caches." @@ -100,36 +125,76 @@ msgid "I only pay for a single electricity tariff but I see two!" msgstr "Ik betaal voor een enkel tarief maar ik zie er twee!" #: ../../faq.rst:60 -msgid "DSMR (and your energy supplier) always reads both high and low tariff from your meter. It's possible however that you are only paying for a single tariff. In that case your energy supplier will simply merge both high and low tariffs to make it look like you have a single one." -msgstr "DSMR (en je energieleverancier) lezen altijd zowel hoog als laag tarief van je meter uit. Het is desondanks mogelijk dat je betaalt voor slechts één tarief. In dat geval voegt jouw energieleverancier het hoge en lage tarief samen zodat het lijkt alsof je een enkel tarief hebt." +msgid "" +"DSMR (and your energy supplier) always reads both high and low tariff from " +"your meter. It's possible however that you are only paying for a single " +"tariff. In that case your energy supplier will simply merge both high and low " +"tariffs to make it look like you have a single one." +msgstr "" +"DSMR (en je energieleverancier) lezen altijd zowel hoog als laag tarief van je " +"meter uit. Het is desondanks mogelijk dat je betaalt voor slechts één " +"tarief. In dat geval voegt jouw energieleverancier het hoge en lage tarief " +"samen zodat het lijkt alsof je een enkel tarief hebt." #: ../../faq.rst:64 -msgid "This application displays separate tariffs by default, but supports merging them to a single one as well. Just make sure that you apply the **same price to both electricity 1 and 2** and enable the option ``Merge electricity tariffs`` in the frontend configuration." -msgstr "Deze applicatie weergeeft standaard gescheiden tarieven, maar heeft wel ondersteuning om ze samen te voegen (net zoals je energieleverancier doet). Zorg er wel voor dat je **dezelfde prijs invult bij hoog en laag tarief voor elektriciteit** en dat je de optie ``Voeg tarieven samen`` aanzet in de interfaceconfiguratie." +msgid "" +"This application displays separate tariffs by default, but supports merging " +"them to a single one as well. Just make sure that you apply the **same price " +"to both electricity 1 and 2** and enable the option ``Merge electricity " +"tariffs`` in the frontend configuration." +msgstr "" +"Deze applicatie weergeeft standaard gescheiden tarieven, maar heeft wel " +"ondersteuning om ze samen te voegen (net zoals je energieleverancier doet). " +"Zorg er wel voor dat je **dezelfde prijs invult bij hoog en laag tarief voor " +"elektriciteit** en dat je de optie ``Voeg tarieven samen`` aanzet in de " +"interfaceconfiguratie." #: ../../faq.rst:69 msgid "I want to see the load of each electricity phase as well" msgstr "Ik wil het elektriciteitsverbruik per fase ook kunnen zien" #: ../../faq.rst:70 -msgid "Since ``DSMR-reader v1.5`` it's possible to track your ``P+`` (consumption) phases as well. You will need to enable this in the ``Datalogger configuration``. There is a setting called ``Track electricity phases``. When active, this will log the current usage of those phases and plot these on the Dashboard page." -msgstr "Sinds ``DSMR-reader v1.5`` is het mogelijk om je ``P+`` (verbruik) elektriciteitsfasen in te zien. Dit is een aparte optie die je zelf moet inschakelen in ``Dataloggerconfiguratie``. De instelling heet daar ``Houd elektriciteitsfasen bij``. Zodra ingeschakeld, zal de applicatie het verbruik per fase vastleggen in tonen in een grafiek in het Dashboard." +msgid "" +"Since ``DSMR-reader v1.5`` it's possible to track your ``P+`` (consumption) " +"phases as well. You will need to enable this in the ``Datalogger " +"configuration``. There is a setting called ``Track electricity phases``. When " +"active, this will log the current usage of those phases and plot these on the " +"Dashboard page." +msgstr "" +"Sinds ``DSMR-reader v1.5`` is het mogelijk om je ``P+`` (verbruik) " +"elektriciteitsfasen in te zien. Dit is een aparte optie die je zelf moet " +"inschakelen in ``Dataloggerconfiguratie``. De instelling heet daar ``Houd " +"elektriciteitsfasen bij``. Zodra ingeschakeld, zal de applicatie het verbruik " +"per fase vastleggen in tonen in een grafiek in het Dashboard." #: ../../faq.rst:73 msgid "Please keep in mind:" msgstr "Houd in gedachten:" #: ../../faq.rst:75 -msgid "This will **not work retroactively**. The datalogger always discards all data not used." -msgstr "Dit werkt **niet met terugwerkende kracht**. De datalogger gooit namelijk alle gegevens weg die niet nodig zijn." +msgid "" +"This will **not work retroactively**. The datalogger always discards all data " +"not used." +msgstr "" +"Dit werkt **niet met terugwerkende kracht**. De datalogger gooit namelijk alle " +"gegevens weg die niet nodig zijn." #: ../../faq.rst:76 -msgid "This feature will only work when your smart meter is connected to **three phases**. Even when having the setting enabled." -msgstr "Deze feature werkt alleen wanneer je slimme meter ook daadwerkelijk is aangesloten op **drie fasen**. Zelfs wanneer de optie is ingeschakeld." +msgid "" +"This feature will only work when your smart meter is connected to **three " +"phases**. Even when having the setting enabled." +msgstr "" +"Deze feature werkt alleen wanneer je slimme meter ook daadwerkelijk is " +"aangesloten op **drie fasen**. Zelfs wanneer de optie is ingeschakeld." #: ../../faq.rst:77 -msgid "When having tracking phases enabled, you should see a button in the Dashboard called ``Display electricity phases``. Click on it to show the graph." -msgstr "Wanneer het bijhouden van de fasen is ingeschakeld, zie je op het Dashboard een knop genaamd ``Toon elektriciteitsfasen``. Klik die aan om de grafiek te tonen." +msgid "" +"When having tracking phases enabled, you should see a button in the Dashboard " +"called ``Display electricity phases``. Click on it to show the graph." +msgstr "" +"Wanneer het bijhouden van de fasen is ingeschakeld, zie je op het Dashboard " +"een knop genaamd ``Toon elektriciteitsfasen``. Klik die aan om de grafiek te " +"tonen." #: ../../faq.rst:79 msgid "You should see something similar to:" @@ -140,56 +205,99 @@ msgid "Recalculate prices retroactively" msgstr "Prijzen opnieuw berekenen met terugwerkende kracht" #: ../../faq.rst:88 -msgid "*I've adjusted my energy prices but there are no changes! How can I regenerate them with my new prices?*" -msgstr "*Ik heb zojuist mijn energieprijzen aangepast, maar ik zie geen verschil! Hoe kan ik de nieuwe prijzen doorvoeren?*" +msgid "" +"*I've adjusted my energy prices but there are no changes! How can I regenerate " +"them with my new prices?*" +msgstr "" +"*Ik heb zojuist mijn energieprijzen aangepast, maar ik zie geen verschil! Hoe " +"kan ik de nieuwe prijzen doorvoeren?*" #: ../../faq.rst:90 -msgid "Statistics for each day are generated once, the day after. However, you can flush your statistics by executing:" -msgstr "Dagstatistieken worden dagelijks eenmalig gegenereerd. Het is echter wel mogelijk om deze te resetten door het volgende te doen:" +msgid "" +"Statistics for each day are generated once, the day after. However, you can " +"flush your statistics by executing:" +msgstr "" +"Dagstatistieken worden dagelijks eenmalig gegenereerd. Het is echter wel " +"mogelijk om deze te resetten door het volgende te doen:" #: ../../faq.rst:92 msgid "``./manage.py dsmr_backend_delete_aggregated_data --statistics``" msgstr "``./manage.py dsmr_backend_delete_aggregated_data --statistics``" #: ../../faq.rst:94 -msgid "The application will delete all statistics and (slowly) regenerate them in the background. Just make sure the source data is still there." -msgstr "De applicatie verwijdert alle statistieken en genereert ze (langzaam) weer op de achtergrond. Zorg er wel voor dat alle brongegevens intact zijn." +msgid "" +"The application will delete all statistics and (slowly) regenerate them in the " +"background. Just make sure the source data is still there." +msgstr "" +"De applicatie verwijdert alle statistieken en genereert ze (langzaam) weer op " +"de achtergrond. Zorg er wel voor dat alle brongegevens intact zijn." #: ../../faq.rst:98 msgid "I'm not seeing any gas readings" msgstr "Ik zie geen gasverbruik" #: ../../faq.rst:99 -msgid "Please make sure that your meter supports reading gas consumption and that you've waited for a few hours for any graphs to render. The gas meter positions are only be updated once per hour (for DSMR v4). The Status page will give you insight in this as well." -msgstr "Wees er allereerst zeker van dat je slimme meter uberhaupt gasverbruik registreert, en dat je een paar uur hebt gewacht. De gasmeterstanden worden sowieso slechts een keer per uur bijgewerkt (voor DSMR v4). De Status-pagina geeft je hier overigens ook inzicht in." +msgid "" +"Please make sure that your meter supports reading gas consumption and that " +"you've waited for a few hours for any graphs to render. The gas meter " +"positions are only be updated once per hour (for DSMR v4). The Status page " +"will give you insight in this as well." +msgstr "" +"Wees er allereerst zeker van dat je slimme meter uberhaupt gasverbruik " +"registreert, en dat je een paar uur hebt gewacht. De gasmeterstanden worden " +"sowieso slechts een keer per uur bijgewerkt (voor DSMR v4). De Status-pagina " +"geeft je hier overigens ook inzicht in." #: ../../faq.rst:105 msgid "How do I restore a database backup?" msgstr "Hoe zet ik een databaseback-up terug?" #: ../../faq.rst:109 -msgid "Restoring a backup will replace any existing data stored in the database and is irreversible!" -msgstr "Het herstellen van een back-up vervangt de bestaande data in de database en is onomkeerbaar!" +msgid "" +"Restoring a backup will replace any existing data stored in the database and " +"is irreversible!" +msgstr "" +"Het herstellen van een back-up vervangt de bestaande data in de database en is " +"onomkeerbaar!" #: ../../faq.rst:113 -msgid "Do you need a complete reinstall of DSMR-reader as well? Then please :doc:`follow the install guide` and restore the database backup **using the notes at the end of chapter 1**." -msgstr "Heb je tevens een complete herinstallatie van DSMR-reader nodig? :doc:`Volg dan de installatiehandleiding` en herstel de databaseback-up volgens **de notities aan het einde van hoofdstuk 1**." +msgid "" +"Do you need a complete reinstall of DSMR-reader as well? Then please :doc:" +"`follow the install guide` and restore the database backup " +"**using the notes at the end of chapter 1**." +msgstr "" +"Heb je tevens een complete herinstallatie van DSMR-reader nodig? :doc:`Volg " +"dan de installatiehandleiding` en herstel de databaseback-up " +"volgens **de notities aan het einde van hoofdstuk 1**." #: ../../faq.rst:116 msgid "Only want to restore the database?" msgstr "Wil je alleen een databaseback-up terugzetten?" #: ../../faq.rst:118 -msgid "This asumes you are still running the same application version as the backup was created in." -msgstr "Dit gaat er overigens wel van uit dat je dezelfde applicatie-versie draait als waarmee de back-up is gemaakt." +msgid "" +"This asumes you are still running the same application version as the backup " +"was created in." +msgstr "" +"Dit gaat er overigens wel van uit dat je dezelfde applicatie-versie draait als " +"waarmee de back-up is gemaakt." #: ../../faq.rst:120 -msgid "Stop the application first with ``sudo supervisorctl stop all``. This will disconnect it from the database as well." -msgstr "Stop als eerste de applicatie met ``sudo supervisorctl stop all``. Dit zorgt er ook voor dat de databaseverbinding van de applicatie verdwijnt." +msgid "" +"Stop the application first with ``sudo supervisorctl stop all``. This will " +"disconnect it from the database as well." +msgstr "" +"Stop als eerste de applicatie met ``sudo supervisorctl stop all``. Dit zorgt " +"er ook voor dat de databaseverbinding van de applicatie verdwijnt." #: ../../faq.rst:122 -msgid "Importing the data could take a long time. It took MySQL 15 minutes to import nearly 3 million readings, from a compressed backup, on a RaspberryPi 3." -msgstr "Het importeren van de gegevens kan enige tijd in beslag nemen. Op MySQL duurt het ongeveer een kwartier om 3 miljoen metingen te importeren, vanuit een gecomprimeerde back-up op een RaspberryPi 3." +msgid "" +"Importing the data could take a long time. It took MySQL 15 minutes to import " +"nearly 3 million readings, from a compressed backup, on a RaspberryPi 3." +msgstr "" +"Het importeren van de gegevens kan enige tijd in beslag nemen. Op MySQL duurt " +"het ongeveer een kwartier om 3 miljoen metingen te importeren, vanuit een " +"gecomprimeerde back-up op een RaspberryPi 3." #: ../../faq.rst:124 msgid "For **PostgreSQL** restores::" @@ -204,17 +312,42 @@ msgid "Start the application again with ``sudo supervisorctl start all``." msgstr "Start de applicatie weer met ``sudo supervisorctl start all``." #: ../../faq.rst:156 -msgid "In case the version differs, you can try forcing a deployment reload by: ``sudo su - dsmr`` and then executing ``./post-deploy.sh``." -msgstr "Mocht de versie toch verschillen, dan kun je proberen om de applicatie te herladen. Log in met: ``sudo su - dsmr`` en voer vervolgens ``./post-deploy.sh`` uit." +msgid "" +"In case the version differs, you can try forcing a deployment reload by: " +"``sudo su - dsmr`` and then executing ``./post-deploy.sh``." +msgstr "" +"Mocht de versie toch verschillen, dan kun je proberen om de applicatie te " +"herladen. Log in met: ``sudo su - dsmr`` en voer vervolgens ``./post-deploy." +"sh`` uit." #: ../../faq.rst:160 +msgid "How do I enable timezone support for MySQL?" +msgstr "Hoe zet ik tijdzone-ondersteuning aan voor MySQL?" + +#: ../../faq.rst:162 +msgid "" +"`Check these docs `_ for more information about how to enable timezone support on MySQL. On " +"recent versions it should be as simple as executing the following command as " +"root/sudo user::" +msgstr "" +"`Zie deze documentatie `_ over hoe je tijdzone-ondersteuning inschakelt op MySQL. Op " +"recente versies is het een kwestie van onderstaand commando uitvoeren als root/" +"sudo-gebruiker::" + +#: ../../faq.rst:169 msgid "Feature/bug report" msgstr "Verzoek/fout melden" -#: ../../faq.rst:161 +#: ../../faq.rst:170 msgid "*How can I propose a feature or report a bug I've found?*" msgstr "*Hoe kan ik een verzoek indienen of een fout melden?*" -#: ../../faq.rst:165 -msgid "`Just create a ticket at Github `_." -msgstr "`Maak een ticket aan op Github `_." +#: ../../faq.rst:174 +msgid "" +"`Just create a ticket at Github `_." +msgstr "" +"`Maak een ticket aan op Github `_." diff --git a/docs/locale/nl/LC_MESSAGES/retention.mo b/docs/locale/nl/LC_MESSAGES/retention.mo new file mode 100644 index 0000000000000000000000000000000000000000..bd91a2cef004e77ea6a5614e501320b01609b36f GIT binary patch literal 3803 zcmZXWO^+l;5rz{m#tdLSB{(1y^1%zO?q09KVl@_*WmY>Y?c&vXY%rX%tFo%IyDGC( zAJf|-aX?&v3lah@zy)zYLi__bAbx-acXL7F!aqPl@I+Sk^vt+5JyBhinGx~6Z$#8T zKJ(l!44+T){UYDr@%=pC=?D17=SSFgu|LLs0{hMfM_Xb)$L|5F>wkj%5^H{o{UpEt z@*!jXi~So`_r3d^F(1ahhy5w`pV*ILJ8u3S`+e+yeffD~*4STTe};YGBgXs(`z!48 zod3%g#`Au|W{vp|SdHV)*e_uJj{Pj_{*6_?|2r~frm=sF`}}_WxJVzirjO=HxP}xAX{I<86a5gD z`4nG`0cetMj4}7NlDonVRWG)x(Rwrwx9>s{Nai@3SrghLk&S6OUxPI2e1-Qq5b zA)j))BQ%2HbcsBYuf8I+uPXI@8K<+^Qnt>vb8{^Lb7FfdwkTZIyL|k$c1?eK2$whS zS3GQe=KHODGlp)c8%@mIKPTgXfVbrAJDE&2xRuNfoddG6wHj^X+9I~K4VjxvG{zhF z+|G$$VcB9sE-Yn%?KSd_1h#P?nR407#*XkRv|AqcIM);t;&|6%=JKRspOX-KH=g5y zT~vxr3bAmuAK)VeI+?Ica^GdP%@enKxF(aS*iJlNHKWO-0cF>o>zPgp-*#w$Xe-Ob zZj(wNp}dSkJDJSQ15UUK*Qr+(_$);_m2Q9$mYlLY9d=^3@@9`_y5469fiMpw%;juJ z2huVP%w!e(m)-b&ZF%oi!C?NsU*`lUdjDs9ho14wgoimKU>=y2v+@Y9+1k#$2F zd-OX>qS~UK8{AJNgYKa04h_N7_L;ATTA6tDYoa`KvWcyRRE!y-m&B1K;2^Laxbe(o z17Ob0)4iw+V2jOb)Jl;Rz8u=ImX{Dl($s@WFGKr~@Y3bJ>#JXy%R9(7vtb9*R^cQ^ z@Zo+!^q^xjukA%;)j1jo5mdf#y|0~yufG#X3#a*x4P~AJ?MO6Bi}Zl84j%S!JOzV| zc8jSbl2xh6LDR;}bse!s$`UO`)w%{spV<`z4?A1XsOS!=gxwyTtJht@NxyAeQqv7h z+JL4!ZKZX1KyX2Bxo3TAX$~{w{>$%VwMfQrNb0f@ zpoaJ=cj%u4jvSGO4{&@?!!;*Uf@+Y10t>BINV-MIkCM%$Y~#?R^q;hGg#=~~^V!?< zY@~2JHuI+djK@3kXGc$6gYssNyVB>gdqdgH&f>8gJ%0H3{$bOd`71}X2yJDvGmt!% z9*}M~mG$9u$(FW73f~y|Vs`hiuC<{9*V+A$MGg5_?k;?P^uPs&N*&&|$8yguTqUp0 zUz^`KdPD)v&U9O4=|DvB$cA#TrJJ2OTVMHoETKC3&TMy-E`1VRjx_Gf@6Nx@QHBN; za;yE4!pi9lS^^{73^1bMRt!iq_a$Q5=u#$~yKr*hS3ycwaUCR&(DG$;9h(vz3 z^6n-*dOgljwA;~G#!2dQwIb#!zgo*hY)hR=y_{>LlS#+;T~dMW{i8G%8(6-E*uK^2 zLe`XpJL63WZdYF8BPMBXOPgJLTf-fB&D$1&b!(FG&Jvp``jU1s*>3goNwGfha(c4_^`IR!gaE`GHY(Yf{ zTdW*P9f7^9_0W(CB#C=Bbx9NTmdsr=PA@N#UUk;elW{>s>}fS`G_`BjsX)!1;ghSS zCKp!UbTrBfYip*hw%JRNy;?NSz}4Q5`Gr_n5a%#rJUYSA11BV`F<)p#;nR**35EX!*!~+1c#Hq z{%PUbr5&2cwQa29Lg!q9Y&1mc<+B{v*UT}4*qNz_9g04v}ubs>5 da, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: DSMR Reader 1.x\n" +"Report-Msgid-Bugs-To: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.5.1\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: nl\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../../retention.rst:2 +msgid "Retention" +msgstr "Retentie" + +#: ../../retention.rst:4 +msgid "" +"By default all DSMR-readings read by of sent to the application are " +"stored indefinitely. DSMR v5 smart meters allow DSMR-readings to be " +"recorded every second, resulting in over 30 million readings each year." +msgstr "" +"Standaard worden alle DSMR-metingen oneindig bewaard. Deze zijn gelezen " +"door (of opgestuurd naar) de applicatie. DSMR v5 slimme meters staan toe " +"dat er elke seconde een meting gedaan wordt, waardoor er tot meer dan 30 " +"miljoen metingen per jaar opgeslagen worden." + +#: ../../retention.rst:7 +msgid "" +"Eventually this **will cause degraded performance** in the application/" +"database and for that reason you might want to apply retention to this " +"data. Please note that enabling this feature will **not discard all " +"readings**, as it will **preserve the first and last reading of each " +"hour**." +msgstr "" +"Uiteindelijk zorgt dit voor **slechtere performance** in ofwel de " +"applicatie of database. Daarom zul je wellicht retentie willen " +"inschakelen. Let op: Het inschakelen van retentie **gooi niet alle " +"metingen weg**, want **van elk uur wordt de eerste en laatste meting " +"bewaard**." + +#: ../../retention.rst:14 +msgid "How to enable" +msgstr "Hoe in te schakelen" + +#: ../../retention.rst:16 +msgid "" +"The admin configuration has a section called \"Retention configuration" +"\". You can specify whether you want retention at all and set the " +"lifetime of the data being stored." +msgstr "" +"Het beheerder-paneel heeft een sectie genaamd \"Retentieconfiguratie\". " +"Daar kun je aangeven of je überhaupt retentie wilt inschakelen, en zo " +"ja, hoelang data bewaard blijft." + +#: ../../retention.rst:21 +msgid "Notes" +msgstr "Opmerkingen" + +#: ../../retention.rst:22 +msgid "" +"Please note that the application will **slowly** apply retention, " +"cleaning up a maximum of 24 hours worth of data on each backend run " +"executed." +msgstr "" +"Let op: De applicatie zal **langzaam** dataretentie toepassen, waarbij " +"er telkens maximaal 24 uur aan gegevens wordt opgeschoond." + +#: ../../retention.rst:27 +msgid "Data affected" +msgstr "Geraakte gegevens" + +#: ../../retention.rst:30 +msgid "DSMR-readings" +msgstr "DSMR-metingen" + +#: ../../retention.rst:31 +msgid "" +"The source of all data. It is, however, only read and processed once, so " +"it can be discarded safely after processing." +msgstr "" +"De bron van alle gegevens. Ze worden echter slechts eenmaal ingelezen en " +"kunnen, na verwerking, veilig worden verwijderd." + +#: ../../retention.rst:34 +msgid "Electricity Consumption" +msgstr "Elektriciteitsconsumptie" + +#: ../../retention.rst:35 +msgid "" +"This is aggregated data either created from a single DSMR-reader or a " +"minute worth of DSMR-readings, depending on whether you've enabled " +"grouping." +msgstr "" +"Geaggregeerde gegevens van ofwel een enkele DSMR-meting of een groep van " +"DSMR-metingen, afhankelijk van je groeperingsinstellingen." + +#: ../../retention.rst:38 +msgid "Gas Consumption" +msgstr "Gasconsumptie" + +#: ../../retention.rst:39 +msgid "" +"This data type is aggregated from any differences in 'extra device " +"timestamp' occurrences in DSMR-readings." +msgstr "" +"Dit data type is afkomstig van de gasmetergegevens uit de DSMR-metingen." + +#: ../../retention.rst:43 +msgid "Data kept/unaffected" +msgstr "Uitgesloten gegevens" + +#: ../../retention.rst:44 +msgid "" +"Historic data, such as Hour and Day Statistics are unaffected. These are " +"aggregated from the Electricity & Gas Consumption data above. This is " +"also the only data that should matter when you want to look back to a " +"specific day, month or year in the past." +msgstr "" +"Historische gegevens, zoals Dag- en Uurstatistieken worden buiten " +"beschouwing gelaten. Deze gegevens stammen af van bovenstaande " +"consumptie en zijn tevens de enige belangrijke data die er voor de lange " +"termijn toe doen. Bijvoorbeeld wanneer je terug wilt kijken naar een " +"specifieke dag, maand of jaar." diff --git a/docs/locale/nl/LC_MESSAGES/settings.mo b/docs/locale/nl/LC_MESSAGES/settings.mo index 36b72ebd98d1e684a659c91e454a864b90280087..4d0ba1299a4fbf60084b534319a2fceb253cc349 100644 GIT binary patch delta 2178 zcmZA1U2GIp6u|M*Ep6#a<-d5{(a-$V!Mtq7V~aRAP*PJm7;y4MuqY4Kc>}Khvcl-t^3G?%kRD zaqgXtJn`pKy(yH9#GQnn5V82_I4+c)dXdSv2^U}nm*aligJ0kzT+<-Zj6FCV zEk2B8oQ9{WUc{x;uj1|eEc3>T4AHO(r{X8L9lxp8Q;i}AsISAf@EqQOK~kg@hp`Sn zMs5EL%Xkr6aQiJH_hJEe;M;f{|G^=B^4J8CGc+t|5}AwF@hHx^Riqog#D&;AQDi=@ z!4ENuM{qjJZ^x6k60hPcY$a{1P#(t_=;CI40q5X%n9-SD=Vl2$GezVsd=-m$6#H@Z zZ6fD!KWfTd^30s%2c${dhB|@dPG0;cwt+Jd5S6Ok*E6^EujjsE(ng=oIS8&sXbLs`WZ%K^A2u zHsK1?E$Bi%2zj<@4ku9`LVf-<)UWG()PBz*pJiEo;f6n%OierLKs`L0P$!Z>gS%0; z=n!g0AE9=95o=JhMbhHV^}S9)3p*wo2>k-|YiTF6bQ1~v{xv;owS}UmS_jdUEF%n| zX(jt{Y2>O|;-6mp-z{$BqAS&NL6YK67~*Yfz;%S4f%}LXMGy5uL>J@BBH~85pBuI+ zF5|fB_p2vZSE^+rv7V?S9wBOpB#|bx=%LaquGGr^iXLn&{Nsx=NaAE$2bWcZmhq#+ zR}OT%4NGz1P3?NwY>&$=cGP1I-k!EyC5Q;fm_&0Y{U$4_M(eIs3IYB*He^5j?#nK0<}vZX@& zYvtYKf%>hk_4(O^zB|@o$~eqou+Pi%nY=A{p=-ik6L~pnihW^;C;OZMYpn0&i`Gq< zowk<=n7AhbAoKi$=VJR_{paiciX@+pRmwj zdP3`Zk!ee>NH0&fRR*SJYbKG8#a>X1tnbsc4Mr}sq`Rvrv1Y(w&7sXZ#i9-z=9vW7 ztS$PC5SX0RL~^s!3j*NRvGmw7-^hQ$Bn6=xwEh1}5pIqCzr+9`w*4qZ%kJtW7pr z1ks`(H%ZA&qFUG{+5}O7J%~zLv?%C-F530|-I=0;=YGz)-h1vj|MNdH))3zu`;g}A zHA*!#lUkKx)`a_gTqr-rnN7o=7)7t&tQ-sQI5y)9{D|o|inDP_AYlZT(67Xq*or5y z3ul?dEHK_|8#m@6H>@2m;YGZHxf9Ih;3F)?VPr1mpP0BG#2EbuF2p|Eg)eXr7f(uj z@C!brzb9yxhlP{P`t@c5jg8#!Ofg%8H5kD*9KdUM6YHj$mEtd4iP2Ohjm@Z)oxu#e zij6pk^Kc^JE5Sm{!kyTPr*N-k{)@(I+>w?DY3X#rNB=JJXG2_=w7o*cv`?sz|3po| zPe=dHLrq{wvR{XKemiPQ_M^7A6T^4|W18V(8rk?6^`MXC=*2KtNU;$2G zKXzgn=3+12#|PMhhq?J2{qvbU4x@6ViIi4E4xv_hHrcUedcR&ob5z#CLfd`C^d!_mpc5NazbP~&Vtje86|sNV!i z%som~v^du80J^(g7m7ls)#=0Ri2LEisDai|RWu1NHTipG1jLPG3i2(tDBD%EmDSXx z>bNDw`J|zlswnBSTJr5*8AnSiETnSc{uTXJtf8`S+d$>_#f>0XK2`gxqSccw?sit7 zj%p=UCt)7ncf$p4hWph>7A261GI^QXO6=VV+REy`WfhGaYARJ(okdkCO5k40xR(Cc z52(Gaz9!!2{~m7)6gy7>y`." +"There is a Dropbox integration available to safely transfer each daily backup " +"into your Dropbox account. :doc:`More information about this feature can be " +"found in the FAQ`." msgstr "" -"Er is een koppeling mogelijk met je eigen Dropbox-account om de back-ups " -"veilig te stellen. :doc:`Meer informatie over deze feature kun je " -"terugvinden in de FAQ`." +"Er is een koppeling mogelijk met je eigen Dropbox-account om de back-ups veilig " +"te stellen. :doc:`Meer informatie over deze feature kun je terugvinden in de " +"FAQ`." #: ../../settings.rst:62 msgid "``Dropbox access token``" @@ -147,11 +144,11 @@ msgstr "``Dropbox 'access token'``" #: ../../settings.rst:63 msgid "" -"Enter your Dropbox access token here. Leave blank or clear to disable " -"Dropbox integration." +"Enter your Dropbox access token here. Leave blank or clear to disable Dropbox " +"integration." msgstr "" -"Voer hier je Dropbox-access token in. Laat leeg om de Dropbox-koppeling " -"uit te schakelen." +"Voer hier je Dropbox-access token in. Laat leeg om de Dropbox-koppeling uit te " +"schakelen." #: ../../settings.rst:68 msgid "Consumption configuration" @@ -160,12 +157,11 @@ msgstr "Verbruiksconfiguratie" #: ../../settings.rst:69 msgid "" "The consumption settings determine how the application should handle the " -"separate readings. The default behaviour is to group all readings each " -"minute. This can be disabled." +"separate readings. The default behaviour is to group all readings each minute. " +"This can be disabled." msgstr "" -"De verbruiksinstellingen bepalen hoe de applicatie omgaat met de " -"individuele metingen. Standaard groepeert de applicatie de metingen per " -"minuut." +"De verbruiksinstellingen bepalen hoe de applicatie omgaat met de individuele " +"metingen. Standaard groepeert de applicatie de metingen per minuut." #: ../../settings.rst:73 msgid "``Compactor grouping type``" @@ -181,14 +177,13 @@ msgstr "Tarieven energieleverancier" #: ../../settings.rst:80 msgid "" -"You can enter all your energy contract prices here. The application will " -"use them (when available) to calculate the consumption of each day. " -":doc:`See the FAQ on how to retroactivily adjust prices (if " -"needed)`." +"You can enter all your energy contract prices here. The application will use " +"them (when available) to calculate the consumption of each day. :doc:`See the " +"FAQ on how to retroactivily adjust prices (if needed)`." msgstr "" -"Je kunt hier je energietarieven invoeren. De applicatie gebruikt deze dan" -" om je dagelijkse verbruik te berekenen. :doc:`Zie de FAQ hoe je dit " -"eventueel met terugwerkende kracht kan doen (indien nodig)`." +"Je kunt hier je energietarieven invoeren. De applicatie gebruikt deze dan om je " +"dagelijkse verbruik te berekenen. :doc:`Zie de FAQ hoe je dit eventueel met " +"terugwerkende kracht kan doen (indien nodig)`." #: ../../settings.rst:87 msgid "Datalogger configuration" @@ -212,12 +207,11 @@ msgstr "``Houd elektriciteitsfasen bij``" #: ../../settings.rst:96 msgid "" -"Whether you want to track phases. :doc:`More information about this " -"feature can be found in the FAQ`." +"Whether you want to track phases. :doc:`More information about this feature can " +"be found in the FAQ`." msgstr "" -"Geeft aan of de elektriciteitsfasen getraceerd worden (indien " -"aanwezig). :doc:`Meer informatie over deze feature kun je terugvinden in " -"de FAQ`." +"Geeft aan of de elektriciteitsfasen getraceerd worden (indien aanwezig). :doc:" +"`Meer informatie over deze feature kun je terugvinden in de FAQ`." #: ../../settings.rst:100 msgid "``Verify telegram CRC``" @@ -225,8 +219,8 @@ msgstr "``Controleer de CRC van telegrammen``" #: ../../settings.rst:101 msgid "" -"Whether the application should verify the incoming data. Only available " -"for DSMR 4+." +"Whether the application should verify the incoming data. Only available for DSMR " +"4+." msgstr "" "Geeft aan of we de CRC (checksum) van binnenkomende telegrammen moeten " "verifiëren. Alleen beschikbaar voor DSMR 4+." @@ -240,8 +234,8 @@ msgid "" "The DSMR version your smart meter has. Used to determine how the serial " "connection should work." msgstr "" -"De DSMR-versie die je slimme meter ondersteunt. Wordt gebruikt om te " -"bepalen hoe de seriele verbinding werkt." +"De DSMR-versie die je slimme meter ondersteunt. Wordt gebruikt om te bepalen hoe " +"de seriele verbinding werkt." #: ../../settings.rst:108 msgid "``COM-port``" @@ -252,142 +246,160 @@ msgid "The COM port your cable can be read from." msgstr "COM-poort die verbonden is met je slimme meter." #: ../../settings.rst:114 +msgid "Retention configuration" +msgstr "Retentieconfiguratie" + +#: ../../settings.rst:115 +msgid "Data retention applied to the readings stored in the application." +msgstr "" +"Dataretentie van toepassing op de opgeslagen metingen binnen de applicatie." + +#: ../../settings.rst:118 +msgid "``Data retention``" +msgstr "``Dataretentie``" + +#: ../../settings.rst:119 +msgid "" +"Whether to delete old readings, and which period of time should have elapsed, " +"before deleting them." +msgstr "" +"Geeft aan of oude metingen verwijderd mogen worden, en welke tijdsduur daar " +"minimaal overgeen gegaan moet zijn." + +#: ../../settings.rst:124 msgid "Frontend configuration" msgstr "Interfaceconfiguratie" -#: ../../settings.rst:115 +#: ../../settings.rst:125 msgid "This applies to the visualisation in the application." msgstr "Dit heeft betrekking op de visuele weergave in de applicatie." -#: ../../settings.rst:118 +#: ../../settings.rst:128 msgid "``Merge electricity tariffs``" msgstr "``Voeg tarieven samen``" -#: ../../settings.rst:119 +#: ../../settings.rst:129 msgid "" -"Whether to merge the high and low tariffs. :doc:`More information about " -"this feature can be found in the FAQ`." +"Whether to merge the high and low tariffs. :doc:`More information about this " +"feature can be found in the FAQ`." msgstr "" -"Bepaalt of de elektriciteitstarieven samengevoegd moeten worden (wanneer " -"je voor een enkel tarief betaalt). :doc:`Meer informatie over deze " -"feature kun je terugvinden in de FAQ`." +"Bepaalt of de elektriciteitstarieven samengevoegd moeten worden (wanneer je voor " +"een enkel tarief betaalt). :doc:`Meer informatie over deze feature kun je " +"terugvinden in de FAQ`." -#: ../../settings.rst:123 +#: ../../settings.rst:133 msgid "``**** color``" msgstr "``Kleur ****``" -#: ../../settings.rst:124 +#: ../../settings.rst:134 msgid "Multiple colors can be set here for the graphs." msgstr "Je kunt hier diverse kleuren instellen voor de grafieken." -#: ../../settings.rst:129 +#: ../../settings.rst:139 msgid "MinderGas.nl configuration" msgstr "MinderGas.nl-configuratie" -#: ../../settings.rst:130 +#: ../../settings.rst:140 msgid "" -"Optional connection with your account at MinderGas.nl. :doc:`More " -"information about this feature can be found in the FAQ`." +"Optional connection with your account at MinderGas.nl. :doc:`More information " +"about this feature can be found in the FAQ`." msgstr "" -"Optionele integratie met je MinderGas.nl-account. :doc:`Meer informatie " -"over deze feature kun je terugvinden in de FAQ`." +"Optionele integratie met je MinderGas.nl-account. :doc:`Meer informatie over " +"deze feature kun je terugvinden in de FAQ`." -#: ../../settings.rst:135 +#: ../../settings.rst:145 msgid "``Export data to MinderGas``" msgstr "``Exporteer gegevens naar MinderGas``" -#: ../../settings.rst:136 +#: ../../settings.rst:146 msgid "Whether to enable the connecting with MinderGas." msgstr "" -"Bepaalt of we je meterstanden dagelijks moeten uploaden naar je eigen " -"account op MinderGas.nl." +"Bepaalt of we je meterstanden dagelijks moeten uploaden naar je eigen account op " +"MinderGas.nl." -#: ../../settings.rst:139 +#: ../../settings.rst:149 msgid "``MinderGas authentication token``" msgstr "``MinderGas.nl Authenticatietoken (API)``" -#: ../../settings.rst:140 +#: ../../settings.rst:150 msgid "API token for your MinderGas.nl account." msgstr "" -"Authenticatietoken voor de API-toegang van je persoonlijk account bij " -"MinderGas." +"Authenticatietoken voor de API-toegang van je persoonlijk account bij MinderGas." -#: ../../settings.rst:145 +#: ../../settings.rst:155 msgid "Notes" msgstr "Notities" -#: ../../settings.rst:146 +#: ../../settings.rst:156 msgid "" -"You can leave personal notes for yourself here. Such as when you were on " -"holiday or experimented with the heater settings." +"You can leave personal notes for yourself here. Such as when you were on holiday " +"or experimented with the heater settings." msgstr "" -"Je kunt hier persoonlijke notities voor jezelf achterlaten. Zoals wanneer" -" je op vakantie bent of hebt geëxperimenteerd met de verwarming." +"Je kunt hier persoonlijke notities voor jezelf achterlaten. Zoals wanneer je op " +"vakantie bent of hebt geëxperimenteerd met de verwarming." -#: ../../settings.rst:152 +#: ../../settings.rst:162 msgid "Notification configuration" msgstr "Notificatieconfiguratie" -#: ../../settings.rst:153 +#: ../../settings.rst:163 msgid "" -"Allows sending daily notifications to your phone. :doc:`More information " -"about this feature can be found in the FAQ`." +"Allows sending daily notifications to your phone. :doc:`More information about " +"this feature can be found in the FAQ`." msgstr "" -"Bepaalt of je een dagelijkse notificatie wilt ontvangen op je smartphone " -"over je energieverbruik. :doc:`Meer informatie over deze feature kun je " -"terugvinden in de FAQ`." +"Bepaalt of je een dagelijkse notificatie wilt ontvangen op je smartphone over je " +"energieverbruik. :doc:`Meer informatie over deze feature kun je terugvinden in " +"de FAQ`." -#: ../../settings.rst:157 +#: ../../settings.rst:167 msgid "``Send notification``" msgstr "``Stuur notificatie``" -#: ../../settings.rst:158 ../../settings.rst:176 +#: ../../settings.rst:168 ../../settings.rst:186 msgid "Whether to enable this feature." msgstr "Geeft aan of deze feature aanstaat." -#: ../../settings.rst:161 +#: ../../settings.rst:171 msgid "``Notification service``" msgstr "``Notificatieservice``" -#: ../../settings.rst:162 +#: ../../settings.rst:172 msgid "The notification service you are using." msgstr "De notificatieservice die je gebruikt." -#: ../../settings.rst:165 +#: ../../settings.rst:175 msgid "``Notification service API key``" msgstr "``API sleutel voor notificatie service``" -#: ../../settings.rst:166 +#: ../../settings.rst:176 msgid "API token for your account of the notification service." msgstr "" -"De API sleutel die gebruikt wordt om notificaties naar je smartphone te " -"sturen. " +"De API sleutel die gebruikt wordt om notificaties naar je smartphone te sturen. " -#: ../../settings.rst:170 +#: ../../settings.rst:180 msgid "Weather configuration" msgstr "Weergegevensconfiguratie" -#: ../../settings.rst:171 +#: ../../settings.rst:181 msgid "" -"There is support for tracking outside temperatures for a fixed number of " -"weather stations. :doc:`More information about this feature can be found " -"in the FAQ`." +"There is support for tracking outside temperatures for a fixed number of weather " +"stations. :doc:`More information about this feature can be found in the " +"FAQ`." msgstr "" -"Er is ondersteuning voor het uitlezen van de temperatuur :doc:`Meer " -"informatie over deze feature kun je terugvinden in de FAQ`." +"Er is ondersteuning voor het uitlezen van de temperatuur :doc:`Meer informatie " +"over deze feature kun je terugvinden in de FAQ`." -#: ../../settings.rst:175 +#: ../../settings.rst:185 msgid "``Track weather``" msgstr "``Houd weergegevens bij``" -#: ../../settings.rst:179 +#: ../../settings.rst:189 msgid "``Buienradar weather station``" msgstr "``Buienradar weerstation``" -#: ../../settings.rst:180 +#: ../../settings.rst:190 msgid "The fixed weather station you wish to use." msgstr "Het weerstation die je wilt gebruiken." #~ msgid "Settings" #~ msgstr "Instellingen" - diff --git a/docs/retention.rst b/docs/retention.rst new file mode 100644 index 000000000..c96829e36 --- /dev/null +++ b/docs/retention.rst @@ -0,0 +1,46 @@ +Retention +========= + +By default all DSMR-readings read by of sent to the application are stored indefinitely. +DSMR v5 smart meters allow DSMR-readings to be recorded every second, resulting in over 30 million readings each year. + +Eventually this **will cause degraded performance** in the application/database and for that reason you might want to apply retention to this data. +Please note that enabling this feature will **not discard all readings**, as it will **preserve the first and last reading of each hour**. + +.. contents:: + + +How to enable +------------- + +The admin configuration has a section called "Retention configuration". +You can specify whether you want retention at all and set the lifetime of the data being stored. + + +Notes +----- +Please note that the application will **slowly** apply retention, cleaning up a maximum of 24 hours worth of data on each backend run executed. + + + +Data affected +------------- + +DSMR-readings +~~~~~~~~~~~~~ +The source of all data. It is, however, only read and processed once, so it can be discarded safely after processing. + +Electricity Consumption +~~~~~~~~~~~~~~~~~~~~~~~ +This is aggregated data either created from a single DSMR-reader or a minute worth of DSMR-readings, depending on whether you've enabled grouping. + +Gas Consumption +~~~~~~~~~~~~~~~ +This data type is aggregated from any differences in 'extra device timestamp' occurrences in DSMR-readings. + + +Data kept/unaffected +-------------------- +Historic data, such as Hour and Day Statistics are unaffected. +These are aggregated from the Electricity & Gas Consumption data above. +This is also the only data that should matter when you want to look back to a specific day, month or year in the past. \ No newline at end of file diff --git a/docs/settings.rst b/docs/settings.rst index ff24096e0..518bc1923 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -110,6 +110,16 @@ The COM port your cable can be read from. +Retention configuration +----------------------- +Data retention applied to the readings stored in the application. + +``Data retention`` +~~~~~~~~~~~~~~~~~~ +Whether to delete old readings, and which period of time should have elapsed, before deleting them. + + + Frontend configuration ---------------------- This applies to the visualisation in the application. diff --git a/dsmr_backend/management/commands/dsmr_backend.py b/dsmr_backend/management/commands/dsmr_backend.py index f090a6503..4d78df292 100644 --- a/dsmr_backend/management/commands/dsmr_backend.py +++ b/dsmr_backend/management/commands/dsmr_backend.py @@ -28,7 +28,7 @@ def run(self, **options): try: # Raven should capture each exception encountered (below). raise current_response - except: + except Exception: raven_client.captureException() # Add and print traceback to help debugging any issues raised. diff --git a/dsmr_datalogger/admin.py b/dsmr_datalogger/admin.py index c2bd95aed..62472443c 100644 --- a/dsmr_datalogger/admin.py +++ b/dsmr_datalogger/admin.py @@ -1,11 +1,12 @@ from django.contrib.admin.filters import DateFieldListFilter from django.contrib import admin +from django.utils.translation import ugettext_lazy as _ from solo.admin import SingletonModelAdmin from dsmr_backend.mixins import ReadOnlyAdminModel -from .models.settings import DataloggerSettings +from .models.settings import DataloggerSettings, RetentionSettings from .models.reading import DsmrReading -from dsmr_datalogger.models.statistics import MeterStatistics +from .models.statistics import MeterStatistics @admin.register(DataloggerSettings) @@ -13,6 +14,22 @@ class DataloggerSettingsAdmin(SingletonModelAdmin): list_display = ('com_port', ) +@admin.register(RetentionSettings) +class RetentionSettingsAdmin(SingletonModelAdmin): + list_display = ('data_retention_in_hours', ) + fieldsets = ( + ( + None, { + 'fields': ['data_retention_in_hours'], + 'description': _( + 'Detailed instructions for configuring data retention can be found here: ' + 'Retention documentation' + ) + } + ), + ) + + @admin.register(DsmrReading) class DsmrReadingAdmin(ReadOnlyAdminModel): """ Read only model. """ diff --git a/dsmr_datalogger/apps.py b/dsmr_datalogger/apps.py index ec255ad22..e558661f7 100644 --- a/dsmr_datalogger/apps.py +++ b/dsmr_datalogger/apps.py @@ -1,7 +1,20 @@ from django.apps import AppConfig from django.utils.translation import ugettext_lazy as _ +import dsmr_backend.signals + class AppConfig(AppConfig): name = 'dsmr_datalogger' verbose_name = _('Datalogger') + + def ready(self): + dsmr_backend.signals.backend_called.connect( + receiver=self._on_backend_called_signal, + dispatch_uid=self.__class__ + ) + + def _on_backend_called_signal(self, sender, **kwargs): + # Import below prevents an AppRegistryNotReady error on Django init. + import dsmr_datalogger.services + dsmr_datalogger.services.apply_data_retention() diff --git a/dsmr_datalogger/fixtures/dsmr_datalogger/dsmrreading.json b/dsmr_datalogger/fixtures/dsmr_datalogger/dsmrreading.json new file mode 100644 index 000000000..13c923681 --- /dev/null +++ b/dsmr_datalogger/fixtures/dsmr_datalogger/dsmrreading.json @@ -0,0 +1,990 @@ +[ +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629376, + "fields": { + "timestamp": "2016-10-02T18:17:44Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.887", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.177", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.161", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629377, + "fields": { + "timestamp": "2016-10-02T18:17:54Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.887", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.175", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.158", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629378, + "fields": { + "timestamp": "2016-10-02T18:18:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.888", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.175", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.159", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629379, + "fields": { + "timestamp": "2016-10-02T18:18:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.888", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.173", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.156", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629380, + "fields": { + "timestamp": "2016-10-02T18:18:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.889", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.175", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.158", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629381, + "fields": { + "timestamp": "2016-10-02T18:18:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.889", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.189", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.173", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629382, + "fields": { + "timestamp": "2016-10-02T18:18:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.890", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.174", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.158", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629383, + "fields": { + "timestamp": "2016-10-02T18:18:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.890", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.183", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.167", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629384, + "fields": { + "timestamp": "2016-10-02T18:19:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.891", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.165", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.149", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629385, + "fields": { + "timestamp": "2016-10-02T18:19:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.891", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.170", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.154", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629386, + "fields": { + "timestamp": "2016-10-02T18:19:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.891", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.192", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.176", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629387, + "fields": { + "timestamp": "2016-10-02T18:19:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.892", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.177", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.161", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629388, + "fields": { + "timestamp": "2016-10-02T18:19:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.892", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.175", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.159", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629389, + "fields": { + "timestamp": "2016-10-02T18:19:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.893", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.190", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.174", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629390, + "fields": { + "timestamp": "2016-10-02T18:20:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.893", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.176", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.160", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629391, + "fields": { + "timestamp": "2016-10-02T18:20:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.894", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.177", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.161", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629392, + "fields": { + "timestamp": "2016-10-02T18:20:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.894", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.174", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.158", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629393, + "fields": { + "timestamp": "2016-10-02T18:20:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.895", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.185", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.169", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629394, + "fields": { + "timestamp": "2016-10-02T18:20:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.895", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.180", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.164", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629395, + "fields": { + "timestamp": "2016-10-02T18:20:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.896", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.177", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.160", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629396, + "fields": { + "timestamp": "2016-10-02T18:21:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.896", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.173", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.157", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629397, + "fields": { + "timestamp": "2016-10-02T18:21:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.897", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.573", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.557", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629398, + "fields": { + "timestamp": "2016-10-02T18:21:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.900", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.852", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.835", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629399, + "fields": { + "timestamp": "2016-10-02T18:21:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.903", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.966", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.950", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629400, + "fields": { + "timestamp": "2016-10-02T18:21:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.905", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.914", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.898", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629401, + "fields": { + "timestamp": "2016-10-02T18:21:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.907", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.908", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.892", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629402, + "fields": { + "timestamp": "2016-10-02T18:22:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.910", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.879", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.863", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629403, + "fields": { + "timestamp": "2016-10-02T18:22:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.912", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.902", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.885", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629404, + "fields": { + "timestamp": "2016-10-02T18:22:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.915", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.888", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.871", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629405, + "fields": { + "timestamp": "2016-10-02T18:22:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.918", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.882", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.017", + "phase_currently_delivered_l2": "0.866", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629406, + "fields": { + "timestamp": "2016-10-02T18:22:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.920", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.883", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.867", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629407, + "fields": { + "timestamp": "2016-10-02T18:22:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.922", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.877", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.017", + "phase_currently_delivered_l2": "0.860", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629408, + "fields": { + "timestamp": "2016-10-02T18:23:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.925", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.875", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.859", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629409, + "fields": { + "timestamp": "2016-10-02T18:23:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.927", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.873", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.857", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629410, + "fields": { + "timestamp": "2016-10-02T18:23:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.930", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.896", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.880", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629411, + "fields": { + "timestamp": "2016-10-02T18:23:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.933", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.888", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.872", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629412, + "fields": { + "timestamp": "2016-10-02T18:23:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.934", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.883", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.867", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629413, + "fields": { + "timestamp": "2016-10-02T18:23:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.937", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.874", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.858", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629414, + "fields": { + "timestamp": "2016-10-02T18:24:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.939", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.880", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.864", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629415, + "fields": { + "timestamp": "2016-10-02T18:24:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.942", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.875", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.858", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629416, + "fields": { + "timestamp": "2016-10-02T18:24:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.944", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.879", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.862", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629417, + "fields": { + "timestamp": "2016-10-02T18:24:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.947", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.882", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.865", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629418, + "fields": { + "timestamp": "2016-10-02T18:24:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.949", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.882", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.866", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629419, + "fields": { + "timestamp": "2016-10-02T18:24:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.952", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.888", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.017", + "phase_currently_delivered_l2": "0.871", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629420, + "fields": { + "timestamp": "2016-10-02T18:25:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.954", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.892", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.875", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629421, + "fields": { + "timestamp": "2016-10-02T18:25:15Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.957", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.897", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.880", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629422, + "fields": { + "timestamp": "2016-10-02T18:25:25Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.959", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.895", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.879", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629423, + "fields": { + "timestamp": "2016-10-02T18:25:35Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.962", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.877", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.861", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629424, + "fields": { + "timestamp": "2016-10-02T18:25:45Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.964", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.878", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.862", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629425, + "fields": { + "timestamp": "2016-10-02T18:25:55Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.967", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.883", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.867", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629426, + "fields": { + "timestamp": "2016-10-02T18:26:05Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.969", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.881", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.864", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +}, +{ + "model": "dsmr_datalogger.dsmrreading", + "pk": 5629427, + "fields": { + "timestamp": "2016-10-02T18:26:16Z", + "electricity_delivered_1": "2242.770", + "electricity_returned_1": "0.000", + "electricity_delivered_2": "2148.971", + "electricity_returned_2": "0.000", + "electricity_currently_delivered": "0.878", + "electricity_currently_returned": "0.000", + "phase_currently_delivered_l1": "0.016", + "phase_currently_delivered_l2": "0.861", + "phase_currently_delivered_l3": "0.000", + "extra_device_timestamp": "2016-10-02T18:00:00Z", + "extra_device_delivered": "2002.418", + "processed": true + } +} +] \ No newline at end of file diff --git a/dsmr_datalogger/fixtures/dsmr_datalogger/electricity-consumption.json b/dsmr_datalogger/fixtures/dsmr_datalogger/electricity-consumption.json new file mode 100644 index 000000000..7813d0e8e --- /dev/null +++ b/dsmr_datalogger/fixtures/dsmr_datalogger/electricity-consumption.json @@ -0,0 +1,875 @@ +[ +{ + "pk": 95, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.158", + "delivered_1": "595.187", + "read_at": "2016-12-11T23:00:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 96, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.157", + "delivered_1": "595.190", + "read_at": "2016-12-11T23:01:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 97, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.159", + "delivered_1": "595.193", + "read_at": "2016-12-11T23:02:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 98, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.158", + "delivered_1": "595.196", + "read_at": "2016-12-11T23:03:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 99, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.083", + "delivered_1": "595.197", + "read_at": "2016-12-11T23:04:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 100, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.069", + "delivered_1": "595.198", + "read_at": "2016-12-11T23:05:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 101, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.064", + "delivered_1": "595.200", + "read_at": "2016-12-11T23:06:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 102, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.201", + "read_at": "2016-12-11T23:07:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 103, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.123", + "delivered_1": "595.203", + "read_at": "2016-12-11T23:08:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 104, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.120", + "delivered_1": "595.205", + "read_at": "2016-12-11T23:09:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 105, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.122", + "delivered_1": "595.207", + "read_at": "2016-12-11T23:10:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 106, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.123", + "delivered_1": "595.210", + "read_at": "2016-12-11T23:11:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 107, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.122", + "delivered_1": "595.212", + "read_at": "2016-12-11T23:12:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 108, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.121", + "delivered_1": "595.213", + "read_at": "2016-12-11T23:13:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 109, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.078", + "delivered_1": "595.215", + "read_at": "2016-12-11T23:14:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 110, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.074", + "delivered_1": "595.216", + "read_at": "2016-12-11T23:15:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 111, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.074", + "delivered_1": "595.217", + "read_at": "2016-12-11T23:16:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 112, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.074", + "delivered_1": "595.219", + "read_at": "2016-12-11T23:17:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 113, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.072", + "delivered_1": "595.220", + "read_at": "2016-12-11T23:18:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 114, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.053", + "delivered_1": "595.221", + "read_at": "2016-12-11T23:19:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 115, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.050", + "delivered_1": "595.222", + "read_at": "2016-12-11T23:20:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 116, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.048", + "delivered_1": "595.223", + "read_at": "2016-12-11T23:21:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 117, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.048", + "delivered_1": "595.223", + "read_at": "2016-12-11T23:22:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 118, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.049", + "delivered_1": "595.224", + "read_at": "2016-12-11T23:23:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 119, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.049", + "delivered_1": "595.225", + "read_at": "2016-12-11T23:24:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 120, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.049", + "delivered_1": "595.226", + "read_at": "2016-12-11T23:25:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 121, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.048", + "delivered_1": "595.227", + "read_at": "2016-12-11T23:26:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 122, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.048", + "delivered_1": "595.227", + "read_at": "2016-12-11T23:27:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 123, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.049", + "delivered_1": "595.228", + "read_at": "2016-12-11T23:28:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 124, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.121", + "delivered_1": "595.231", + "read_at": "2016-12-11T23:29:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 125, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.138", + "delivered_1": "595.233", + "read_at": "2016-12-11T23:30:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 126, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.133", + "delivered_1": "595.235", + "read_at": "2016-12-11T23:31:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 127, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.131", + "delivered_1": "595.237", + "read_at": "2016-12-11T23:32:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 128, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.130", + "delivered_1": "595.239", + "read_at": "2016-12-11T23:33:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 129, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.130", + "delivered_1": "595.241", + "read_at": "2016-12-11T23:34:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 130, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.130", + "delivered_1": "595.244", + "read_at": "2016-12-11T23:35:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 131, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.130", + "delivered_1": "595.246", + "read_at": "2016-12-11T23:36:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 132, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.128", + "delivered_1": "595.248", + "read_at": "2016-12-11T23:37:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 133, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.149", + "delivered_1": "595.250", + "read_at": "2016-12-11T23:38:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 134, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.193", + "delivered_1": "595.254", + "read_at": "2016-12-11T23:39:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 135, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.192", + "delivered_1": "595.257", + "read_at": "2016-12-11T23:40:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 136, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.191", + "delivered_1": "595.260", + "read_at": "2016-12-11T23:41:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 137, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.190", + "delivered_1": "595.263", + "read_at": "2016-12-11T23:42:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 138, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.129", + "delivered_1": "595.266", + "read_at": "2016-12-11T23:43:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 139, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.113", + "delivered_1": "595.268", + "read_at": "2016-12-11T23:44:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 140, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.269", + "read_at": "2016-12-11T23:45:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 141, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.271", + "read_at": "2016-12-11T23:46:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 142, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.113", + "delivered_1": "595.273", + "read_at": "2016-12-11T23:47:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 143, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.275", + "read_at": "2016-12-11T23:48:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 144, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.277", + "read_at": "2016-12-11T23:49:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 145, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.110", + "delivered_1": "595.279", + "read_at": "2016-12-11T23:50:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 146, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.111", + "delivered_1": "595.281", + "read_at": "2016-12-11T23:51:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 147, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.111", + "delivered_1": "595.283", + "read_at": "2016-12-11T23:52:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 148, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.285", + "read_at": "2016-12-11T23:53:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 149, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.110", + "delivered_1": "595.286", + "read_at": "2016-12-11T23:54:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 150, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.111", + "delivered_1": "595.288", + "read_at": "2016-12-11T23:55:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 151, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.112", + "delivered_1": "595.290", + "read_at": "2016-12-11T23:56:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 152, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.111", + "delivered_1": "595.292", + "read_at": "2016-12-11T23:57:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 153, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.110", + "delivered_1": "595.294", + "read_at": "2016-12-11T23:58:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 154, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.110", + "delivered_1": "595.296", + "read_at": "2016-12-11T23:59:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 155, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.111", + "delivered_1": "595.298", + "read_at": "2016-12-12T00:00:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 156, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.111", + "delivered_1": "595.300", + "read_at": "2016-12-12T00:01:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 214, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.108", + "delivered_1": "595.427", + "read_at": "2016-12-12T00:59:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 215, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.109", + "delivered_1": "595.428", + "read_at": "2016-12-12T01:00:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 216, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.110", + "delivered_1": "595.430", + "read_at": "2016-12-12T01:01:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 217, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.109", + "delivered_1": "595.428", + "read_at": "2016-12-15T01:00:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +}, +{ + "pk": 218, + "fields": { + "returned_1": "0.000", + "delivered_2": "593.558", + "currently_returned": "0.000", + "returned_2": "0.000", + "currently_delivered": "0.110", + "delivered_1": "595.430", + "read_at": "2016-12-15T01:01:00Z" + }, + "model": "dsmr_consumption.electricityconsumption" +} + + +] diff --git a/dsmr_datalogger/fixtures/dsmr_datalogger/gas-consumption.json b/dsmr_datalogger/fixtures/dsmr_datalogger/gas-consumption.json new file mode 100644 index 000000000..e819c55e6 --- /dev/null +++ b/dsmr_datalogger/fixtures/dsmr_datalogger/gas-consumption.json @@ -0,0 +1,299 @@ +[ +{ + "pk": 1, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-11T20:00:00Z", + "delivered": "956.212", + "currently_delivered": "0.000" + } +}, +{ + "pk": 2, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-11T21:00:00Z", + "delivered": "956.221", + "currently_delivered": "0.009" + } +}, +{ + "pk": 3, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-11T22:00:00Z", + "delivered": "956.230", + "currently_delivered": "0.009" + } +}, +{ + "pk": 4, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-11T23:00:00Z", + "delivered": "956.739", + "currently_delivered": "0.509" + } +}, +{ + "pk": 5, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T00:00:00Z", + "delivered": "957.893", + "currently_delivered": "1.154" + } +}, +{ + "pk": 6, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T01:00:00Z", + "delivered": "958.559", + "currently_delivered": "0.666" + } +}, +{ + "pk": 7, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T02:00:00Z", + "delivered": "958.568", + "currently_delivered": "0.009" + } +}, +{ + "pk": 8, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T03:00:00Z", + "delivered": "958.577", + "currently_delivered": "0.009" + } +}, +{ + "pk": 9, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T04:00:00Z", + "delivered": "958.586", + "currently_delivered": "0.009" + } +}, +{ + "pk": 10, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T05:00:00Z", + "delivered": "958.595", + "currently_delivered": "0.009" + } +}, +{ + "pk": 11, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T06:00:00Z", + "delivered": "958.595", + "currently_delivered": "0.000" + } +}, +{ + "pk": 12, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T07:00:00Z", + "delivered": "959.336", + "currently_delivered": "0.741" + } +}, +{ + "pk": 13, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T08:00:00Z", + "delivered": "960.444", + "currently_delivered": "1.108" + } +}, +{ + "pk": 14, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T09:00:00Z", + "delivered": "960.509", + "currently_delivered": "0.065" + } +}, +{ + "pk": 15, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T10:00:00Z", + "delivered": "960.509", + "currently_delivered": "0.000" + } +}, +{ + "pk": 16, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T11:00:00Z", + "delivered": "960.518", + "currently_delivered": "0.009" + } +}, +{ + "pk": 17, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T12:00:00Z", + "delivered": "960.527", + "currently_delivered": "0.009" + } +}, +{ + "pk": 18, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T13:00:00Z", + "delivered": "960.536", + "currently_delivered": "0.009" + } +}, +{ + "pk": 19, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T14:00:00Z", + "delivered": "960.545", + "currently_delivered": "0.009" + } +}, +{ + "pk": 20, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T15:00:00Z", + "delivered": "960.554", + "currently_delivered": "0.009" + } +}, +{ + "pk": 21, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T16:00:00Z", + "delivered": "960.564", + "currently_delivered": "0.010" + } +}, +{ + "pk": 22, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T17:00:00Z", + "delivered": "961.651", + "currently_delivered": "1.087" + } +}, +{ + "pk": 23, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T18:00:00Z", + "delivered": "962.309", + "currently_delivered": "0.658" + } +}, +{ + "pk": 24, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T19:00:00Z", + "delivered": "962.319", + "currently_delivered": "0.010" + } +}, +{ + "pk": 25, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T20:00:00Z", + "delivered": "962.328", + "currently_delivered": "0.009" + } +}, +{ + "pk": 26, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T21:00:00Z", + "delivered": "962.337", + "currently_delivered": "0.009" + } +}, +{ + "pk": 27, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T22:00:00Z", + "delivered": "962.346", + "currently_delivered": "0.009" + } +}, +{ + "pk": 28, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-12T23:00:00Z", + "delivered": "962.365", + "currently_delivered": "0.019" + } +}, +{ + "pk": 29, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-13T00:00:00Z", + "delivered": "962.540", + "currently_delivered": "0.175" + } +}, +{ + "pk": 30, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-13T01:00:00Z", + "delivered": "962.549", + "currently_delivered": "0.009" + } +}, +{ + "pk": 31, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-13T02:00:00Z", + "delivered": "962.558", + "currently_delivered": "0.009" + } +}, +{ + "pk": 32, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-13T02:20:00Z", + "delivered": "956.761", + "currently_delivered": "0.022" + } +}, +{ + "pk": 33, + "model": "dsmr_consumption.gasconsumption", + "fields": { + "read_at": "2016-12-13T02:40:00Z", + "delivered": "956.864", + "currently_delivered": "0.103" + } +} +] \ No newline at end of file diff --git a/dsmr_datalogger/migrations/0009_retention_settings.py b/dsmr_datalogger/migrations/0009_retention_settings.py new file mode 100644 index 000000000..8c201df68 --- /dev/null +++ b/dsmr_datalogger/migrations/0009_retention_settings.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-19 18:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dsmr_datalogger', '0008_dsmrreading_help_text'), + ] + + operations = [ + migrations.CreateModel( + name='RetentionSettings', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('data_retention_in_hours', models.IntegerField(blank=True, choices=[(None, 'None (keep all readings)'), (168, 'Discard most readings after one week'), (672, 'Discard most readings after one month'), (4032, 'Discard most readings after six months'), (8064, 'Discard most readings after one year')], default=None, help_text='The lifetime of readings, before discarding them.', null=True, verbose_name='Data retention')), + ], + options={ + 'verbose_name': 'Retention configuration', + 'default_permissions': (), + }, + ), + ] diff --git a/dsmr_datalogger/models/settings.py b/dsmr_datalogger/models/settings.py index d5ec74a40..83f73b8cd 100644 --- a/dsmr_datalogger/models/settings.py +++ b/dsmr_datalogger/models/settings.py @@ -55,3 +55,34 @@ def __str__(self): class Meta: default_permissions = tuple() verbose_name = _('Datalogger configuration') + + +class RetentionSettings(SingletonModel): + RETENTION_NONE = None + RETENTION_WEEK = 7 * 24 + RETENTION_MONTH = 4 * RETENTION_WEEK + RETENTION_HALF_YEAR = 6 * RETENTION_MONTH + RETENTION_YEAR = 12 * RETENTION_MONTH + RETENTION_CHOICES = ( + (RETENTION_NONE, _('None (keep all readings)')), + (RETENTION_WEEK, _('Discard most readings after one week')), + (RETENTION_MONTH, _('Discard most readings after one month')), + (RETENTION_HALF_YEAR, _('Discard most readings after six months')), + (RETENTION_YEAR, _('Discard most readings after one year')), + ) + + data_retention_in_hours = models.IntegerField( + blank=True, + null=True, + default=RETENTION_NONE, + choices=RETENTION_CHOICES, + verbose_name=_('Data retention'), + help_text=_('The lifetime of readings, before discarding them.') + ) + + def __str__(self): + return self._meta.verbose_name.title() + + class Meta: + default_permissions = tuple() + verbose_name = _('Retention configuration') diff --git a/dsmr_datalogger/services.py b/dsmr_datalogger/services.py index de90b2476..9d6d6ad76 100644 --- a/dsmr_datalogger/services.py +++ b/dsmr_datalogger/services.py @@ -3,6 +3,8 @@ import re from serial.serialutil import SerialException +from django.db.models.functions.datetime import TruncHour +from django.db.models.aggregates import Count from django.db.models.expressions import F from django.utils import timezone from django.conf import settings @@ -12,7 +14,8 @@ from dsmr_datalogger.models.reading import DsmrReading from dsmr_datalogger.models.statistics import MeterStatistics -from dsmr_datalogger.models.settings import DataloggerSettings +from dsmr_datalogger.models.settings import DataloggerSettings, RetentionSettings +from dsmr_consumption.models.consumption import ElectricityConsumption, GasConsumption from dsmr_datalogger.exceptions import InvalidTelegramError from dsmr_datalogger.dsmr import DSMR_MAPPING import dsmr_datalogger.signals @@ -286,3 +289,71 @@ def reading_timestamp_to_datetime(string): is_dst = timestamp.group(7) == 'S' local_timezone = pytz.timezone(settings.TIME_ZONE) return local_timezone.localize(meter_timestamp, is_dst=is_dst).astimezone(pytz.utc) + + +def apply_data_retention(): + """ + When data retention is enabled, this discards all data applicable for retention. Keeps at least one data point per + hour available. + """ + settings = RetentionSettings.get_solo() + + if settings.data_retention_in_hours is None: + # No retention enabled at all (default behaviour). + return + + # Each run should be capped, for obvious performance reasons. + MAX_HOURS_CLEANUP = 24 + + # These models should be rotated with retention. Dict value is the datetime field used. + MODELS_TO_CLEANUP = { + DsmrReading.objects.processed(): 'timestamp', + ElectricityConsumption.objects.all(): 'read_at', + GasConsumption.objects.all(): 'read_at', + } + + retention_date = timezone.now() - timezone.timedelta(hours=settings.data_retention_in_hours) + + # We need to force UTC here, to avoid AmbiguousTimeError's on DST changes. + timezone.activate(pytz.UTC) + + for base_queryset, datetime_field in MODELS_TO_CLEANUP.items(): + hours_to_cleanup = base_queryset.filter( + **{'{}__lt'.format(datetime_field): retention_date} + ).annotate( + item_hour=TruncHour(datetime_field) + ).values('item_hour').annotate( + item_count=Count('id') + ).order_by().filter( + item_count__gt=2 + ).order_by('item_hour').values_list( + 'item_hour', flat=True + )[:MAX_HOURS_CLEANUP] + + hours_to_cleanup = list(hours_to_cleanup) # Force evaluation. + + if not hours_to_cleanup: + continue + + for current_hour in hours_to_cleanup: + + # Fetch all data per hour. + data_set = base_queryset.filter( + **{ + '{}__gte'.format(datetime_field): current_hour, + '{}__lt'.format(datetime_field): current_hour + timezone.timedelta(hours=1), + } + ) + + # Extract the first/last item, so we can exclude it. + # NOTE: Want to alter this? Please update "item_count__gt=2" above as well! + keeper_pks = [ + data_set.order_by(datetime_field)[0].pk, + data_set.order_by('-{}'.format(datetime_field))[0].pk + ] + + # Now drop all others. + print('Retention | Cleaning up: {} ({})'.format(current_hour, data_set[0].__class__.__name__)) + data_set.exclude(pk__in=keeper_pks).delete() + + timezone.deactivate() diff --git a/dsmr_datalogger/tests/models/test_settings.py b/dsmr_datalogger/tests/models/test_settings.py index 2beab3c93..cec36ef87 100644 --- a/dsmr_datalogger/tests/models/test_settings.py +++ b/dsmr_datalogger/tests/models/test_settings.py @@ -1,10 +1,10 @@ from django.test import TestCase from django.contrib.admin.sites import site -from dsmr_datalogger.models.settings import DataloggerSettings +from dsmr_datalogger.models.settings import DataloggerSettings, RetentionSettings -class TestSettings(TestCase): +class TestDataloggerSettings(TestCase): """ Tests for settings defaults. """ def setUp(self): self.instance = DataloggerSettings().get_solo() @@ -30,3 +30,19 @@ def test_dsmr_version(self): def test_com_port(self): self.assertEqual(self.instance.com_port, '/dev/ttyUSB0') + + +class TestRetentionSettings(TestCase): + """ Tests for settings defaults. """ + def setUp(self): + self.instance = RetentionSettings().get_solo() + + def test_admin(self): + """ Model should be registered in Django Admin. """ + self.assertTrue(site.is_registered(RetentionSettings)) + + def test_to_string(self): + self.assertNotEqual(str(self.instance), '{} object'.format(self.instance.__class__.__name__)) + + def test_data_retention_in_hours(self): + self.assertIsNone(self.instance.data_retention_in_hours) diff --git a/dsmr_datalogger/tests/retention/__init__.py b/dsmr_datalogger/tests/retention/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/dsmr_datalogger/tests/retention/test_retention.py b/dsmr_datalogger/tests/retention/test_retention.py new file mode 100644 index 000000000..e06ecfcf5 --- /dev/null +++ b/dsmr_datalogger/tests/retention/test_retention.py @@ -0,0 +1,68 @@ +from unittest import mock + +from django.test import TestCase +from django.utils import timezone + +from dsmr_datalogger.models.reading import DsmrReading +from dsmr_consumption.models.consumption import ElectricityConsumption, GasConsumption +from dsmr_datalogger.models.settings import RetentionSettings +import dsmr_datalogger.services + + +class TestRetention(TestCase): + fixtures = [ + 'dsmr_datalogger/dsmrreading.json', + 'dsmr_datalogger/electricity-consumption.json', + 'dsmr_datalogger/gas-consumption.json', + ] + + @mock.patch('django.utils.timezone.now') + def test_apply_data_retention(self, now_mock): + now_mock.return_value = timezone.make_aware(timezone.datetime(2016, 12, 25)) + + self.assertEqual(DsmrReading.objects.count(), 52) + self.assertEqual(ElectricityConsumption.objects.count(), 67) + self.assertEqual(GasConsumption.objects.count(), 33) + + # Default inactive. + dsmr_datalogger.services.apply_data_retention() + + self.assertEqual(DsmrReading.objects.count(), 52) + self.assertEqual(ElectricityConsumption.objects.count(), 67) + self.assertEqual(GasConsumption.objects.count(), 33) + + # Retention active, but point of retention not yet passed. + RetentionSettings.get_solo() + RetentionSettings.objects.update(data_retention_in_hours=RetentionSettings.RETENTION_YEAR) + + dsmr_datalogger.services.apply_data_retention() + + self.assertEqual(DsmrReading.objects.count(), 52) + self.assertEqual(ElectricityConsumption.objects.count(), 67) + self.assertEqual(GasConsumption.objects.count(), 33) + + # Allow point of retention to pass. + RetentionSettings.objects.update(data_retention_in_hours=RetentionSettings.RETENTION_WEEK) + + # Should affect data now. + dsmr_datalogger.services.apply_data_retention() + + self.assertEqual(DsmrReading.objects.count(), 2) + self.assertEqual(ElectricityConsumption.objects.count(), 8) + self.assertEqual(GasConsumption.objects.count(), 32) + + # Make sure that specific data is kept. + for x in [5629376, 5629427]: + self.assertTrue(DsmrReading.objects.filter(pk=x).exists()) + + for x in [95, 154, 155, 214, 215, 216, 217, 218]: + self.assertTrue(ElectricityConsumption.objects.filter(pk=x).exists()) + + self.assertFalse(GasConsumption.objects.filter(pk=32).exists()) + + # No effect calling multiple times. + dsmr_datalogger.services.apply_data_retention() + + self.assertEqual(DsmrReading.objects.count(), 2) + self.assertEqual(ElectricityConsumption.objects.count(), 8) + self.assertEqual(GasConsumption.objects.count(), 32) diff --git a/dsmr_stats/management/commands/dsmr_stats_regenerate_statistics.py b/dsmr_stats/management/commands/dsmr_stats_regenerate_statistics.py new file mode 100644 index 000000000..a34c17b89 --- /dev/null +++ b/dsmr_stats/management/commands/dsmr_stats_regenerate_statistics.py @@ -0,0 +1,23 @@ +from django.core.management.base import BaseCommand +from django.utils.translation import ugettext as _ +from django.utils import timezone + +from dsmr_datalogger.models.reading import DsmrReading +from dsmr_stats.models.statistics import DayStatistics +import dsmr_stats.services + + +class Command(BaseCommand): + help = _('Regenerates missing statistics, if any.') + + def handle(self, **options): + """ InfiniteManagementCommandMixin listens to handle() and calls run() in a loop. """ + first_day = DsmrReading.objects.all()[0].timestamp + days_diff = (timezone.now() - first_day).days + + analyzed_days = DayStatistics.objects.all().count() + days_todo = days_diff - analyzed_days + + for __ in range(1, days_todo + 1): + # Just call analyze for each day. If we missed a day or so, the backend will regenerate it. + dsmr_stats.services.analyze() diff --git a/dsmrreader/__init__.py b/dsmrreader/__init__.py index 1e4cf4645..d42059945 100644 --- a/dsmrreader/__init__.py +++ b/dsmrreader/__init__.py @@ -17,6 +17,6 @@ from django.utils.version import get_version -VERSION = (1, 12, 0, 'beta', 6) +VERSION = (1, 12, 0, 'beta', 8) __version__ = get_version(VERSION) diff --git a/dsmrreader/locales/nl/LC_MESSAGES/django.mo b/dsmrreader/locales/nl/LC_MESSAGES/django.mo index c638f35e130a050c0ef52ec48e5882c19d3ccf94..3ac6d9fc870f3cf3136faf0cc10b96b896ff1968 100644 GIT binary patch delta 10700 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 diff --git a/dsmrreader/locales/nl/LC_MESSAGES/django.po b/dsmrreader/locales/nl/LC_MESSAGES/django.po index 4ec228296..98b475e1c 100644 --- a/dsmrreader/locales/nl/LC_MESSAGES/django.po +++ b/dsmrreader/locales/nl/LC_MESSAGES/django.po @@ -208,6 +208,9 @@ msgstr "Elektriciteitsmetingen vinden elke X seconden plaats. We kunnen ze voor msgid "Consumption configuration" msgstr "Verbruiksconfiguratie" +msgid "Detailed instructions for configuring data retention can be found here: Retention documentation" +msgstr "Gedetailleerde instructies voor het configureren van dataretentie kun je hier terugvinden: Retentie-documentatie" + msgid "Datalogger" msgstr "Datalogger" @@ -316,6 +319,30 @@ msgstr "COM-poort die verbonden is met je slimme meter." msgid "Datalogger configuration" msgstr "Dataloggerconfiguratie" +msgid "None (keep all readings)" +msgstr "Geen (behoud alle metingen)" + +msgid "Discard most readings after one week" +msgstr "Verwijder de meeste metingen na een week" + +msgid "Discard most readings after one month" +msgstr "Verwijder de meeste metingen na een maand" + +msgid "Discard most readings after six months" +msgstr "Verwijder de meeste metingen na een halfjaar" + +msgid "Discard most readings after one year" +msgstr "Verwijder de meeste metingen na een jaar" + +msgid "Data retention" +msgstr "Dataretentie" + +msgid "The lifetime of readings, before discarding them." +msgstr "De levensduur van metingen, voordat ze verwijderd worden." + +msgid "Retention configuration" +msgstr "Retentieconfiguratie" + msgid "Timestamp indicating when the reading was taken" msgstr "Moment waarop de meting is gedaan" @@ -1216,6 +1243,9 @@ msgstr "Trends & statistieken" msgid "Alters any stats generate to fake data. DO NOT USE in production! Used for integration checks." msgstr "Verandert alle bestaande statistieken. NIET GEBRUIKEN IN PRODUCTIE! Wordt gebruikt voor integratietests." +msgid "Regenerates missing statistics, if any." +msgstr "Hergenereert missende statistieken, wanneer van toepassing." + msgid "Note" msgstr "Notitie" @@ -1428,3 +1458,9 @@ msgstr "Nederlands" msgid "English" msgstr "Engels" + +#~ msgid "By default the application stores all readings taken. As there might be DSMR-readings about every second, this results in several millions of readings each year. This may cause degraded performance. For that reason you might want to apply retention to this data. Please note that enabling this feature will NOT discard ALL readings, as it will PRESERVE the first and last reading of each hour." +#~ msgstr "Standaard bewaart de applicatie alle metingen. Echter, gezien metingen elke seconde binnen kunnen komen, kan dat leiden tot miljoenen metingen per jaar. Dit kan op den duur verslechterde performance veroorzaken. Daarom is het mogelijk om retentie toe te passen op de gegevens. N.B.: Deze feature gooit NIET alle metingen weg en bewaart van elk uur de eerste en laatste." + +#~ msgid "Discard most readings after 24 hours" +#~ msgstr "Verwijder de meeste metingen na 24 uur"