{"id":1070,"date":"2018-08-28T20:45:41","date_gmt":"2018-08-28T18:45:41","guid":{"rendered":"https:\/\/willem.aandewiel.nl\/?p=1070"},"modified":"2023-08-01T13:07:37","modified_gmt":"2023-08-01T11:07:37","slug":"slimme-meter-uitlezer","status":"publish","type":"post","link":"https:\/\/willem.aandewiel.nl\/index.php\/2018\/08\/28\/slimme-meter-uitlezer\/","title":{"rendered":"Slimme Meter uitlezer"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Slimme Meter uitlezer<\/h1>\n\n\n\n<p>[ 112,204 keer bekeken \/ views ]<\/p>\n\n\n\n<p>Zo langzamerhand zijn alle huizen in Nederland uitgerust met een \u201c<i>Slimme Meter<\/i>\u201d. Hoog tijd dus om een project te starten om deze Slimme Meter thuis uit te kunnen lezen en de gegevens op een door jouw gewenst formaat te presenteren.<br>In deze blog-post beschrijf ik hoe je, eenvoudig en voor weinig geld, zelf deze DSMR-logger (DSMR is een acroniem voor \u201c<i>Dutch Smart Meter Requirements<\/i>\u201c) kunt maken.<\/p>\n\n\n\n<p>Update: zie ook <a rel=\"noopener noreferrer\" href=\"index.php\/2019\/04\/09\/dsmr-logger-v4-slimme-meter-uitlezer\/\" target=\"_blank\">deze post<\/a>, <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/2020\/02\/28\/restapis-zijn-hip-nieuwe-firmware-voor-de-dsmr-logger\/\">deze post<\/a> en de offici\u00eble <a rel=\"noreferrer noopener\" aria-label=\"documentatie (opens in a new tab)\" href=\"https:\/\/mrwheel.github.io\/DSMRlogger2HTTP\/\" target=\"_blank\">documentatie<\/a>! <\/p>\n\n\n\n<p>Bij het ontwikkelen van de DSMR-logger willen we het volgende bereiken:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>De hardware moet eenvoudig en goedkoop gemaakt kunnen worden;<\/li>\n\n\n\n<li>De firmware van de DSMR-logger moet \u201cOver The Air\u201d ge-update kunnen worden;<\/li>\n\n\n\n<li>Een beperkte historie moet intern opgeslagen en bewaard worden;<\/li>\n\n\n\n<li>De DSMR-logger moet via een externe terminal benaderd kunnen worden (telnet);<\/li>\n\n\n\n<li>De (historische) gegevens moeten via FTP van de DSMR-logger afgehaald kunnen worden voor eventuele externe bewerking [<strong>update: zie aan het einde van deze post<\/strong>];<\/li>\n\n\n\n<li>De DSMR-logger moet via een browser de gegevens uit de Slimme Meter presenteren;<\/li>\n\n\n\n<li>De gegevens moeten via een REST API opgevraagd kunnen worden;<\/li>\n\n\n\n<li>De gelezen gegevens moeten eenvoudig verder verwerkt kunnen worden.<\/li>\n<\/ul>\n\n\n\n<p><a id=\"belofte\"><\/a>In een vervolg blog-post laat ik zien hoe we de gegevens naar een MQTT-broker kunnen sturen en hoe <a href=\"index.php\/2019\/02\/11\/home-assistant-integratie-met-de-dsmr-logger\/\">Home-Assistant moet worden geconfigureerd om deze gegevens in Home-Assistant te presenteren<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRlogger_Casing.jpg\"><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRlogger_Casing.jpg\" alt=\"\" class=\"wp-image-1107\"\/><\/a><\/figure>\n<\/div>\n\n\n<!--more Ga verder met lezen-->\n\n\n\n<h1 class=\"wp-block-heading\">De techniek van de Slimme Meter<\/h1>\n\n\n\n<p>De Slimme Meter stuurt gegevens via de P1 poort (RJ12) in de vorm van een telegram naar buiten. Hoe de Slimme Meter dit doet en hoe een telegram is opgebouwd staat beschreven in <a href=\"https:\/\/www.netbeheernederland.nl\/_upload\/Files\/Slimme_meter_15_a727fce1f1.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">dit document<\/a>. Met name hoofdstuk 5 is interessant omdat hier wordt beschreven hoe de fysieke interface is opgebouwd. Hieruit blijkt o.a. dat de Slimme Meter 5&nbsp;volt bij 250mA moet kunnen leveren, met kortstondig een piek stroom afname van 300mA. Hoofdstuk 6 beschrijft het protocol en de diverse velden.<br>Met dit document in de hand en een beetje Googlen vindt je al gouw meer informatie. Wij zijn niet de eerste en zeker niet de enige die de behoefte hebben om de Slimme Meter uit te lezen.<br>Zo heeft Matthijs Kooijman een werkelijk subliem stukje software geschreven om de telegrammen uit de meter te parsen en in hapklare variabelen op te slaan. Natuurlijk gaan we van deze bibliotheek gebruik maken. Je kunt hem <a href=\"https:\/\/github.com\/matthijskooijman\/arduino-dsmr\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> downloaden.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Benodigdheden<\/h1>\n\n\n\n<p>Het belangrijkste onderdeel van de DSMR-logger is de processor. We gebruiken hier een ESP8266 voor omdat deze, behalve snel en voorzien van voldoende geheugen, ook via WiFi kan communiceren. Om de kosten laag te houden gaan we uit van een ESP-01 bordje (black edition) met 1MB geheugen. Daarnaast hebben we, behalve zes weerstanden en drie condensatoren (C4 is niet echt nodig maar kun je aanbrengen als je problemen ondervind met het verbinden met je WiFi netwerk), een NPN transistor (BC547) en een voltage regulator (MCP1700-3302E) nodig. Om de DSMR-logger met de Slimme Meter te verbinden heb je een RJ12 stekker met een stukje draad nodig. Ik heb op internet een RJ12 kabel gekocht (met twee RJ12 male connectoren) en deze door midden geknipt (<em>update:<\/em> Versie <strong>v3<\/strong> maakt gebruik van een RJ12 connector).<br>Als je geen gebruik wilt maken van de DSMR-logger PCB dan heb je ook nog een stukje experimenteer board nodig.<br>De totale kosten komen uit op ongeveer \u20ac 20,-<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Schema DSMR-logger<\/h1>\n\n\n\n<p>Hieronder zie je het schema van de DSMR-logger:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/Schema_V20.png\"><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/Schema_V20.png\" alt=\"\" class=\"wp-image-1095\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Grofweg bestaat het schema uit vier onderdelen (de vijfde, met de 5 volt en GND PWR_FLAG\u2019s, is technisch nodig voor KiCAD maar is niet echt onderdeel van het schema).<br>Allereerst de verbinding tussen de Slimme Meter en de DSMR-logger. Het is het makkelijkst om de kabel direct op de DSMR-logger te solderen maar je kunt ook een Molex-male connector gebruiken (<em>update:<\/em> Versie <strong>v3<\/strong> maakt gebruik van een op de print gesoldeerde RJ12 connector). Molex-connectoren kun je niet \u201cverkeerd-om\u201d aansluiten (dat zou vervelend zijn omdat je dan de 5 volt en Ground uit de Slimme Meter aansluit op respectievelijk Ground en 5 volt van de DSMR-logger wat de ESP-01 beslist niet zal overleven!). De aansluitingen op de DSMR-logger zijn gelijk aan die op de RJ12 plug (1 is verbonden met 1, 2 met 2 enz.).<br>Het tweede deel bestaat uit de spanningsregelaar die de 5 volt uit de Slimme Meter omzet naar 3v3 voor de ESP-01. Volgens de data-sheet van de ESP-01 gebruikt deze normaal 80mA en in pieken 200-250mA. De gebruikte MCP1700 kan maximaal 250mA leveren. Voldoende dus voor deze toepassing.<br>De ESP-01 zelf heeft slechts 8 aansluitingen. Twee voor de voeding (Vcc en GND), \u00e9\u00e9n voor de communicatie met de Slimme Meter (TxD) en drie pinnen die tijdens het opstarten \u201choog\u201d moeten zijn (CH_PD, GPIO0 en GPIO2). De laatste twee pinnen (RST en TxD) worden niet gebruikt.<br>Het laatste schema onderdeel, rond de BC547 transistor, heeft twee functies. Allereerst zorgt het ervoor dat de 5 volt data van de Slimme Meter de 3.3 volt input van de ESP8266 niet overbelast. Het is dus in eerste instantie een Level-Shifter. Maar daarnaast is het \u00f3\u00f3k een invertor die het ge\u00efnverteerde signaal uit de Slimme Meter omzet in een non-inverted signaal voor de ESP8266.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">De Hardware<\/h1>\n\n\n\n<p class=\"has-text-align-left\">Ik heb, als proof of concept, een eerste versie van de DSMR-logger op een experimenteer bordje gesoldeerd.<br><br><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/BB_Top-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/BB_Top-1.jpg\" alt=\"\" class=\"wp-image-1096\" width=\"282\" height=\"225\"\/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/BB_Bottom-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/BB_Bottom-1.jpg\" alt=\"\" class=\"wp-image-1097\" width=\"291\" height=\"218\"\/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<br>\n<br>\n<br>\n<br>\n\n\n\n<p class=\"has-text-align-left\">Hieronder zie je het uiteindelijke resultaat aangesloten op de Slimme Meter:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/BB_Side-1.jpg\"><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/BB_Side-1.jpg\" alt=\"\" class=\"wp-image-1098\"\/><\/a><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/boardSide.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/boardSide.jpg\" alt=\"\" class=\"wp-image-1098\" width=\"286\" height=\"334\"\/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/3Dview3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/3Dview4-1024x757.png\" alt=\"\" class=\"wp-image-1701\" width=\"284\" height=\"209\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/3Dview4-1024x757.png 1024w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/3Dview4-300x222.png 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/3Dview4-768x568.png 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/3Dview4.png 1200w\" sizes=\"auto, (max-width: 284px) 100vw, 284px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Toen bleek dat alles werkt zoals bedacht, heb ik met KiCAD een printplaat ontworpen.<\/p>\n\n\n\n<p><small>Versie v3 (links) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Versie v1 (rechts)<\/small>&nbsp;<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Firmware op de ESP-01 installeren<\/h1>\n\n\n\n<p>E\u00e9n van de Design Goals is dat de firmware \u201cOver The Air\u201d (door de lucht) op de DSMR-logger gezet moet kunnen worden. Dat is ook gelukt maar je zult altijd een eerste keer firmware op de ESP-01 moeten zetten die deze functionaliteit biedt. Daarom ontkom je er niet aan om tenminste \u00e9\u00e9n keer de firmware via een bedrade manier naar de DSMR-logger te sturen. Daarnaast is het mij, tijdens het ontwikkelen van de software, meerdere keren gebeurd dat ik een bug introduceer waardoor het OTA uploaden niet meer werkt. Ook dan is de enige manier de firmware, zonder bug, bedraad naar de DSMR-logger te sturen.<br>Om de ESP-01 te kunnen programmeren heb je een programmer nodig. Een andere, goedkope oplossing is een speciaal programma in een Arduino-UNO te laden en dan een aantal aansluitingen te maken tussen de Arduino en het ESP-01 bordje.<br>De makkelijkste manier is het om een \u201cESP-01 to USB Adapter\u201d te kopen en hier een kleine modificatie aan te doen (zie mijn blog-post <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/eenvoudige-programmer-voor-de-esp-01-esp8266\/\"><i>Eenvoudige Programmer voor de ESP-01<\/i><\/a>).<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">De Software<\/h1>\n\n\n\n<p>De software is in beginsel heel simpel (zie het voorbeeld dat bij de DMSR bibliotheek zit). Wil je echter wat meer mogelijkheden dan wordt het toch al snel een behoorlijk project!<br>De DSMR-logger gebruikt de volgende bibliotheken:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;ESP8266WebServer.h&gt;            \/\/ Version 1.0.0 \n#include &lt;WiFiManager.h&gt;                 \/\/ version 0.14.0 \n#include &lt;ArduinoOTA.h&gt;                  \/\/ Version 1.0.0 \n#include &lt;TelnetStream.h&gt;                \/\/ Version 0.0.1 \n#include &lt;FS.h&gt; \n#include &lt;TimeLib.h&gt; \n#include &lt;dsmr.h&gt;   <\/code><\/pre>\n\n\n\n<p>Deze moeten dan ook in je Arduino-IDE omgeving ge\u00efnstalleerd zijn.<br>Mocht je helemaal fris en nieuw met de Arduino IDE begonnen zijn, dan is het verstandig eerst <a href=\"index.php\/aan-de-slag-met-de-esp8266\/\" target=\"_blank\" rel=\"noopener noreferrer\">deze post<\/a> even te lezen!<br><del datetime=\"2019-01-12T10:48:32+00:00\">Verder gebruiken we de simpele FTP server van <i>David Paiva<\/i>. Deze wordt als source direct in de DSMRlogger2HTTP sketch opgenomen (twee tab-bladen) en voor de include gebruik je daarom quotjes (\u201c) in plaats van kleiner- en groter-dan tekens.<\/del><\/p>\n\n\n\n<pre class=\"wp-block-preformatted toolbar:2 marking:false ranges:false nums:false nums-toggle:false wrap-toggle:false plain:false plain-toggle:false copy:false popup:false trim-whitespace:false trim-code-tag:false show_mixed:false tab-convert:true tab-size:2 lang:c++ decode:true\"><s>#include \"FTPserver.h\"          \/\/ Version \"FTP-2017-10-18\"<\/s>\n<\/pre>\n\n\n\n<p><del datetime=\"2019-01-12T10:48:32+00:00\">De speciale behandeling was nodig omdat ik kleine aanpassingen in de source heb gemaakt en niet wil dat deze, bij een library-update, verloren gaan.<\/del><br>De sketch bestaat in totaal uit <del datetime=\"2019-01-12T10:48:32+00:00\">acht<\/del> zeven tab-bladen. Het hoofdprogramma, <del datetime=\"2019-01-12T10:48:32+00:00\">FTPserver.cpp, FTPserver.h,<\/del> MenuStuff, OnderhoudStuff, SPIFFSstuff, TimeStuff, UpdateHTML en WiFiStuff. De software kun je als ZIP file downloaden van <a href=\"https:\/\/github.com\/mrWheel\/DSMRlogger2HTTP\" target=\"_blank\" rel=\"noopener noreferrer\">github<\/a> en dan in je Arduino projecten map uit-pakken. Als je <code>git<\/code> op je computer hebt ge\u00efnstalleerd kun de repository ook clonen met het commando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted toolbar:2 marking:false ranges:false nums:false nums-toggle:false wrap-toggle:false plain:false plain-toggle:false copy:false popup:falsetrim-whitespace:false trim-code-tag:false show_mixed:false tab-convert:true tab-size:2 lang:none decode:true\">         git clone https:\/\/github.com\/mrWheel\/DSMRlogger2HTTP.git\n<\/pre>\n\n\n\n<p>Er wordt dan, in de directory waar je het commando uitvoert, een map aangemaakt met de naam \u201cDSMRlogger2HTTP\u201d waar alle code in staat, inclusief een \u201cdata\u201d directory om het bestand-systeem van de ESP-01 mee te vullen (hier staat ook het bestand \u201cindex.html\u201d in).<br>In pseudo code ziet het programma er zo uit:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Setup() {\n\t\t\t\t\t\/\/ hierin worden de gebruikelijke zaken ingesteld.\n\t\t\t\t\t\/\/ Stel de snelheid van de Serial\n\t\t\t\t\t\/\/ poort in\n\u2022\tSerial.begin(115200, SERIAL_8N1)\n\t\t\t\t\t\/\/ Geef aan dat de LED aan een \n\t\t\t\t\t\/\/ Output-pin zit\n\u2022\tpinMode(BUILTIN_LED, OUTPUT)\n\u2022\tSPIFFS.begin()\t\t\/\/ Start het SPIFFS filesysteem\n\u2022\treadHourData()\t\t\/\/ Lees uur-data in het geheugen\n\u2022\treadWeekDayData()\t\/\/ Lees week-data in het geheugen\n\u2022\treadMonthData()\t        \/\/ Lees maand-data in het geheugen\n\u2022\tsetupWiFi(false)\t\/\/ start WiFi\n\u2022\tTelnetStream.begin()\t\/\/ start de Telnet Server\n\u2022\tArduinoOTA.begin()\t\/\/ configure Over The Air updates\n\u2022\treader.enable(true)\t\/\/ Start de DSMR reader\n\u2022\tConfigureer webserver\t\/\/ met \u201cServer.on()\u201d geef je aan welke functie moet worden\n\t\t\t\t\t\/\/ uitgevoerd als de browser een bepaald URL opvraagt.\n\t\t\t\t\t\/\/ Als de browser client bijvoorbeeld \u201c\/getActual.json\u201d opvraagt\n\t\t\t\t\t\/\/ zal de functie \u201csendDataActual()\u201d worden aangeroepen.\n\t\t\t\t\t\/\/ Deze functie zal vervolgens een JSON string opbouwen\n\t\t\t\t\t\/\/ met de actuele gegevens uit de Slimme Meter en deze terug\n\t\t\t\t\t\/\/ sturen naar de client.\n\t\tserver.on(\"\/getMeterInfo.json\",   sendDataMeterInfo);\n\t\tserver.on(\"\/getActual.json\",      sendDataActual);\n\t\tserver.on(\"\/getTableWeek.json\",   sendTableWeek);\n\t\tserver.on(\"\/getTableHours.json\",  sendTableHours);\n\t\tserver.on(\"\/getTableMonths.json\", sendTableMonths);\n\t\t\t\t\t\/\/ De \u201croot\u201d URL \u201c\/\u201d zal de file \u201c\/index.html\u201d uit het SPIFFS\n\t\t\t\t\t\/\/ file-systeem naar de client sturen.\n\t\tserver.serveStatic(\"\/\", SPIFFS, \"\/index.html\");\n\t\u2022\tserver.begin();\t\t\/\/ start webserver\n}\t\/\/ setup()\n<\/pre>\n\n\n\n<p>Het hoofdprogramma wordt eindeloos herhaalt en bestaat uit de volgende stappen:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void loop () {\n  ArduinoOTA.handle();\n  server.handleClient();\n  #ftpSrv.handleFTP();  \/\/ vervallen\n  handleKeyInput();\n  reader.loop();\t\/\/ hier wordt een compleet telegram opgebouwd\n  if (millis() > waitLoop) {\t\t\/\/ begin na 10 seconden met\n    waitLoop = millis() + 10000;\t\/\/ het inlezen van een nieuw\n\t\t\t\t\t\/\/ telegram\n    reader.enable(true);\n    digitalWrite(BUILTIN_LED, LED_ON);\n  }\n  if (!OTAinProgress) {\n    \t\t\/\/ reader.available() is true als er een compleet\n    \t\t\/\/ telegram is ingelezen.\n    if (reader.available()) {\n      \/\/-- declaration of DSMRdata and DSMRerror must be inside\n      \/\/-- the \u201cif\u201d-statement so it will be initialized\n      \/\/-- in every iteration (don't know how else)\n      MyData    DSMRdata;\n      String    DSMRerror;\n      TelnetStream.printf(\"read telegram [%d]\\n\", ++telegramCount);\n      if (reader.parse(&amp;DSMRdata, &amp;DSMRerror)) { \/\/ parse successfull\n        digitalWrite(BUILTIN_LED, LED_OFF);\n        processData(DSMRdata);\t\t\/\/ processData stopt de nieuwe\n\t\t\t\t\t\/\/ data in de interne tabellen\n        if (Verbose) {\n          DSMRdata.applyEach(showValues());\n          printData();\n        }\n      } else {\t\t\t\t\/\/ Parser error, print error\n        TelnetStream.printf(\"Parse error %s\\n\", DSMRerror.c_str());\n     }\n    } \/\/ if (reader.available())\n  } \/\/ if (!OTAinProgress)\n} \/\/ loop()\n<\/pre>\n\n\n\n<!--nextpage-->\n\n\n\n<h1 class=\"wp-block-heading\">De DSMR-logger in gebruik nemen<\/h1>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/dataUpload.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/dataUpload.png\" alt=\"\" class=\"wp-image-1154\" width=\"394\" height=\"280\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Voordat je de DSMR-logger kunt gebruiken moet je niet alleen de firmware maar ook een file-systeem met inhoud naar de DSMR-logger uploaden. Ik ga er, gemakshalve, van uit dat je weet hoe je de firmware moet uploaden en beperk mij tot het uitleggen hoe je het file-systeem op de DSMR-logger krijgt.<br>Allereerst moet je het Data-Uploader-tool installeren. Het tool kun je <a href=\"https:\/\/github.com\/esp8266\/arduino-esp8266fs-plugin\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> downloaden en vervolgens moet je de installatie-instructies nauwkeurig volgen.<br>In de Arduino IDE heb je nu een nieuwe menu-optie. Selecteer deze:<br>Alle bestanden die in de \u201cdata\u201d directory van dit project staan worden nu in een speciaal stukje van het geheugen van de ESP-01 geplaatst.<br><b>Let op!<\/b> Het uploaden van het file-systeem gaat fout als je de \u201cSerial Monitor\u201d open hebt staan!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/WiFi_config.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/WiFi_config.png\" alt=\"\" class=\"wp-image-500\" width=\"340\" height=\"214\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Nu kun je de DSMR-logger aansluiten op de Slimme Meter, alleen heeft hij geen weet van de gegevens van jouw WiFi netwerk. Hij cre\u00ebert daarom zelf een Acces Point (AP) waar je je computer op moet aanmelden. Je herkent het AP aan de naam \u201cESP01\u2011DSMR\u2011xx\u2011&lt;IPaddress&gt;\u201d. Als je verbinding met het AP hebt gemaakt start je je browser en ga je naar het &lt;IPaddress&gt; zoals in de naam van het AP staat (in het voorbeeld hieronder is dat 192.168.5.1). Je komt dan in het WiFi configuratie menu:<br><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/configWiFi_select.png\"><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/configWiFi_select.png\" alt=\"\" class=\"wp-image-300\"\/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/configWiFi_saved.png\"><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/configWiFi_saved.png\" alt=\"\" class=\"wp-image-1089\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Klik op de knop [Configure&nbsp;WiFi] waarna een pagina zoals hier onder staat verschijnt.<br><br>Selecteer op deze pagina het WiFi netwerk dat van jouw is en voer het wachtwoord in. Druk vervolgens op de knop [save].<br><\/p>\n\n\n\n<br>\n<br>\n<br>\n<br>\n<br>\n<br>\n<br>\n\n\n\n<p><\/p>\n\n\n\n<p><br>Als alles goed is gegaan krijg je de volgende tekst in beeld:<\/p>\n\n\n\n<br>\n<br>\n\n\n\n<p>De DSMR-logger zal nu opnieuw opstarten en verbinding zoeken met jouw WiFi netwerk. Tijdens het opstarten kun je aan de blauwe led zien wat de DSMR-logger aan het doen is:<br>1. 3 x langzaam knipperen &#8211; initi\u00eble start<br>2. 5 x snel knipperen &#8211; verbinding gemaakt met WiFi netwerk<br>3. Daarna knippert de blauwe led iedere keer als er een nieuw telegram verwerkt wordt<br>Als de led, na de eerste drie keer langzaam knipperen blijft branden, dan kon de DSMR-logger geen verbinding met jouw WiFi netwerk maken en start hij weer zijn eigen AP op. Dit k\u00e1n komen omdat je netwerk tijdelijk niet of slecht bereikbaar was of omdat je de gegevens voor jouw WiFi netwerk niet goed hebt ingevuld. In dat geval start de DSMR-logger na een paar minuten automatisch opnieuw op en probeert weer verbinding met jouw WiFi netwerk te krijgen. Dit proces herhaalt zich tot er een verbinding tot stand komt of totdat jij opnieuw de gegevens van je WiFi netwerk invoert zoals hier voor beschreven.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">De DSMR-logger Web Interface<\/h1>\n\n\n\n<p>Als de DSMR-logger verbonden is met je WiFi netwerk kun je met je browser naar het adres:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted toolbar:2 marking:false ranges:false nums:false nums-toggle:false wrap-toggle:false plain:false plain-toggle:false copy:false popup:falsetrim-whitespace:false trim-code-tag:false show_mixed:false tab-convert:true tab-size:2 lang:none decode:true\">          http:\/\/ESP01-DSMR.local\/\n<\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRactual.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRactual.png\" alt=\"\" class=\"wp-image-1094\" width=\"374\" height=\"283\"\/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRweek.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRweek.png\" alt=\"\" class=\"wp-image-1093\" width=\"387\" height=\"284\"\/><\/a><\/figure>\n<\/div>\n\n\n<br>\n<br>\n<br>\n\n\n\n<p>gaan. De volgende pagina verschijnt dan in je browser. De gegevens die je ziet worden automatisch ververst.<\/p>\n\n\n\n<br>\n<br>\n<br>\n<br>\n<br>\n<br>\n\n\n\n<p class=\"has-text-align-left\">Door op de tabbladen te klikken kun je verschillende soorten gegevens bekijken.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Telnet sessie:<\/h1>\n\n\n\n<p>Om via telnet verbinding met de DSMR-logger te maken toets je, in een terminal window, het volgende commando in:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted toolbar:2 marking:false ranges:false nums:false nums-toggle:false wrap-toggle:false plain:false plain-toggle:false copy:false popup:falsetrim-whitespace:false trim-code-tag:false show_mixed:false tab-convert:true tab-size:2 lang:none decode:true\">          telnet ESP01-DSMR.local\n<\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRtelnet.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRtelnet.png\" alt=\"\" class=\"wp-image-1092\" width=\"264\" height=\"343\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Waarna je life kunt zien waar de DSMR-logger mee bezig is. Door op &lt;enter&gt; te drukken zie je een menu verschijnen waarmee je wat huishoudelijk zaken kunt regelen. Je sluit de telnet sessie af met de toetscombinatie ctrl+] q (control ingedrukt houden, op \u201c]\u201d drukken, beide los laten en op de \u201cq\u201d drukken).<br><br><b>Let op!<\/b> De DSMR-logger kan maar \u00e9\u00e9n actieve telnet client tegelijkertijd aan!<\/p>\n\n\n\n<br>\n<br>\n\n\n\n<h1 class=\"wp-block-heading\">REST API<\/h1>\n\n\n\n<p>Als je, vanuit een ander programma, de gegevens uit de Slimme Meter wilt gebruiken kun deze ophalen door het opvragen van deze URL:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted toolbar:2 marking:false ranges:false nums:false nums-toggle:false wrap-toggle:false plain:false plain-toggle:false copy:false popup:falsetrim-whitespace:false trim-code-tag:false show_mixed:false tab-convert:true tab-size:2 lang:none decode:true\">          http:\/\/ESP01-DSMR.local\/getActual.json\n<\/pre>\n\n\n\n<p>De DSMR-logger geeft dan een json string terug die er zo uit ziet:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n\t\t\"Timestamp\": \"180828173739S\",\n\t\t\"EnergyDelivered\": \"1497.813\",\n\t\t\"EnergyReturned\": \"681.720\",\n\t\t\"GasDelivered\": \"1210.44\",\n\t\t\"Energy_Delivered_Tariff1\": \"724.717\",\n\t\t\"Energy_Delivered_Tariff2\": \"773.096\",\n\t\t\"Energy_Returned_Tariff1\": \"195.645\",\n\t\t\"Energy_Returned_Tariff2\": \"486.075\",\n\t\t\"Power_Delivered\": \"127.060\",\n\t\t\"Power_Returned\": \"44.151\",\n\t\t\"Voltage_l1\": \"232.0\",\n\t\t\"Current_l1\": \"0.0\",\n\t\t\"Voltage_l2\": \"237.0\",\n\t\t\"Current_l2\": \"0.0\",\n\t\t\"Voltage_l3\": \"235.0\",\n\t\t\"Current_l3\": \"0.0\",\n\t\t\"Power_Delivered_l1\": \"0.053\",\n\t\t\"Power_Returned_l1\": \"0.000\",\n\t\t\"Power_Delivered_l2\": \"0.070\",\n\t\t\"Power_Returned_l2\": \"0.000\",\n\t\t\"Power_Delivered_l3\": \"0.000\",\n\t\t\"Power_Returned_l3\": \"0.173\",\n\t\t\"StatusLong\": \"telegrams Processed: 9441\"\n}\n<\/pre>\n\n\n\n<p>In een vervolg blog-post zal ik laten zien hoe je deze gegevens in Home-Assistant kunt gebruiken.<br><\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<h1 class=\"wp-block-heading\">Firmware updaten<\/h1>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/ArduinoIDE_portSelect.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/ArduinoIDE_portSelect.png\" alt=\"\" class=\"wp-image-1088\" width=\"341\" height=\"245\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Er komt een moment dat je de firmware van de DSMR-logger naar eigen inzicht en behoefte wilt aanpassen.<br>Het is dan vervelend om voor iedere aanpassing naar de meterkast te moeten lopen om de DSMR-logger los te koppelen, de ESP-01 uit de logger te halen en hem met een programmer naar keuze van nieuwe firmware te voorzien. Gelukkig hoeft dat niet. Je kunt in de Arduino IDE niet alleen Seri\u00eble poorten selecteren waarop de DSMR-logger is aangesloten. In het keuze menu staan ook \u201cNetwerk poorten\u201d:<br><\/p>\n\n\n\n<p>In mijn geval is Network port \u201cESP01\u2011DSMR&nbsp;at&nbsp;192.168.12.142\u201d de netwerk port van mijn DSMR-logger. Door deze port te selecteren en de nieuwe firmware te compileren en te uploaden, wordt deze draadloos naar de DSMR-logger gestuurd (je zult merken dat dat zelfs een stuk sneller gaat dan met een USB kabel!).<br>Zorg er wel voor dat de firmware die je upload geen vervelende bugs bevat. Het is mij meerdere keren overkomen dat ik een bug introduceer die ervoor zorgt dat het <i>Over The Air uploaden<\/i> van firmware niet meer werkt (meestal werkt de hele DSMR-logger in zo\u2019n geval niet meer) waardoor ik alsnog naar de meterkast moest&#8230;<br><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/KiCAD-PCBnew.png\"><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/KiCAD-PCBnew.png\" alt=\"\" class=\"wp-image-1086\"\/><\/a><\/figure>\n<\/div>\n\n\n<h1 class=\"wp-block-heading\">UPDATE (read all about it)<\/h1>\n\n\n\n<p>Het project heeft alle doelstellingen gehaald. Alleen het up- en down-loaden van bestanden naar en van het SPIFFS bestand systeem via de FTPserver is onbetrouwbaar gebleken. vooral bij grotere bestanden zoals <code>index.html<\/code> en <code>index.js<\/code> gingen vaak (grote) delen van deze bestanden verloren.<br>Daarom heb ik het hele FTP gebeuren laten vallen. In plaats daarvan is er nu een &#8220;<em>onderhoud<\/em>&#8221; pagina waarmee bestanden w\u00e9l betrouwbaar van- en naar- de DSMR-logger kunnen worden verplaatst. De pagina kun je bereiken via de URL:<br><code>ESP01-DSMR.local\/onderhoud<\/code> of <code> &lt;IP-address&gt;\/onderhoud<\/code><br>Bijkomend voordeel van deze nieuwe aanpak is dat het nu mogelijk is om via de RestAPI (ge-automatiseerd) backups van de bestanden naar je PC of server te maken. Dit kan met het commando:<br><code>curl http:\/\/ESP01-DSMR.local\/PRDhours.csv?download= &nbsp; &gt; BACKUPhours.csv<\/code><br>Het bestand <code>PDRhours.csv<\/code> wordt hiermee van de DSMR-logger naar een bestand met de naam <code>BACKUPhours.csv<\/code> op je PC geschreven.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Interesse in dit project?<\/h1>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRlogger_Build2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRlogger_Build2.jpg\" alt=\"\" class=\"wp-image-1109\" width=\"346\" height=\"260\"\/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRlogger_Build1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2018\/08\/DSMRlogger_Build1.jpg\" alt=\"\" class=\"wp-image-1111\" width=\"442\" height=\"331\"\/><\/a><\/figure>\n<\/div>\n\n\n<p>Ik heb een aantal printplaten laten maken bij <a href=\"https:\/\/www.pcbway.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PCBway<\/a>. Mocht deze blog-post je interesse gewekt hebben en wil je deze DSMR-logger nabouwen dan kun je, <del datetime=\"2018-10-24T10:32:47+00:00\">zolang de voorraad strekt, een printplaat bij mij bestellen<\/del>.<br><br><\/p>\n\n\n\n<p><del datetime=\"2018-10-24T10:32:47+00:00\">Laat een reactie achter waarin je aangeeft dat je een printplaat wilt kopen. Ik neem dan contact met je op over je adres-gegevens en de betaling.<br>De kosten per printplaat bedragen \u20ac3,85 inclusief porto kosten<\/del>.<br>Je kunt complete setjes, inclusief PCB <a href=\"https:\/\/opencircuit.nl\/Product\/13611\/Slimme-meter-uitlezer-bouwpakket-met-ESP-01\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> kopen!<br>Een bouwbeschrijving kun je <a href=\"https:\/\/github.com\/mrWheel\/DSMRlogger2HTTP\/blob\/master\/Bouwbeschrijving.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> vinden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>Let op!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>Er blijkt, naast de &#8216;gewone&#8217; ESP-01 en de &#8216;<em>ESP-01 Black Edition<\/em>&#8216; nu ook een <em>ESP-01<strong>S<\/strong><\/em> te bestaan.<br>De Slimme Meter uitlezer werkt alleen met de &#8216;<em>ESP-01 Black Edition<\/em>&#8216;.<br>De ESP-01S mist de rode LED (Power) en het lijkt erop dat de blauwe LED is aangesloten op GPIO02 i.p.v. op GPIO01 (TxD).<br>Maar het belangrijkste: De ESP-01<strong>S<\/strong> heeft slechts <em>512kB<\/em> flash geheugen i.p.v. de <em>1MB<\/em> van de ESP-01 Black Edition!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ontwerp en bouw van een Slimme Meter uitlezer DSMRlogger. Zowel de hardware als ook de software wordt beschreven. <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/2018\/08\/28\/slimme-meter-uitlezer\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1099,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3,170,6,10,20],"tags":[25,111,45,161,46,47,51,55,61,80,92,106],"class_list":["post-1070","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-computer","category-dsmr-logger","category-esp8266","category-hardware","category-wifi","tag-arduino","tag-c","tag-energie","tag-energiemanager","tag-esp-01","tag-esp8266","tag-firmware","tag-hardware","tag-kicad","tag-pcb","tag-slimme-meter","tag-wifi"],"views":112204,"_links":{"self":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts\/1070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/comments?post=1070"}],"version-history":[{"count":42,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts\/1070\/revisions"}],"predecessor-version":[{"id":7859,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts\/1070\/revisions\/7859"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/media?parent=1070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/categories?post=1070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/tags?post=1070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}