DSMR-logger V4 (Slimme Meter uitlezer)

[ 1,943 views ]

In augustus 2018 publiceerde ik een project voor het uitlezen van de Slimme Meter.

Aan de hand van de vele reacties van de mensen die het project hebben nagebouwd en mijn eigen ervaring met versie 3 van de DSMR-logger vond ik het tijd worden om een nieuwe versie van de hardware en de firmware te ontwikkelen.

Een aantal gebruikers gaf aan gebruik te maken van externe diensten om de gelogde data in grafieken weer te geven. Ik heb ook de behoefte aan een grafische weergave van de gelogde data maar ik wil voorkomen dat ik daar externe diensten voor moet gebruiken.

De doelstellingen voor versie 4 van de DSMR-logger zijn ongeveer gelijk gebleven aan die van versie 3 met dien verstande dat ik méér data op de DSMR-logger wil opslaan én dat ik de gelogde data ook in grafieken wil kunnen bekijken.

Tot en met versie 3 van de DSMR-logger wordt iedere seconde een telegram van de Slimme Meter ontvangen. Daarvan wordt slechts een klein deel (iedere tien seconden) één telegram ook daadwerkelijk verwerkt. Op zich is dat geen probleem want de overige negen telegrammen vallen gewoon in een groot gat maar .. de ESP8266 UART moet wél op deze vloed aan data reageren (de UART is interrupt driven). Zowel de Slimme Meter als de DSMR library van Matthijs Kooijman hebben een mogelijkheid om telegrammen alleen op afroep te versturen (Slimme Meter) of te vragen (DSMR library).
Het werkt zo: De Slimme Meter verstuurd alléén een telegram als de Data Request pin “hoog” is. De DSMR library heeft een functie call “enable(true)” die een pin van de ESP8266 “hoog” maakt en deze “hoog” houdt tot er een volledig telegram is ontvangen (waarna de pin “laag” wordt gemaakt).
Omdat ik voor de eerdere versies van de DSMR-logger een ESP-01 bordje wilde gebruiken kon van deze functionaliteit geen gebruik worden gemaakt eenvoudigweg omdat de ESP-01 niet genoeg pinnen heeft om er één voor vrij te maken.

De ESP-12(E/F) heeft wel voldoende GPIO pinnen en aanzienlijk (4x) zoveel geheugen als de ESP-01(S). Het was daarom een logische keuze om deze variant van de ESP8266 te gebruiken voor versie 4 van de DSMR-logger.

Het prototype en Proof of Concept heb ik op een 1of!-ESP12 processor bordje met een 1of!-Proto bordje gemaakt.

Data Request Circuit

Voor het “hoog” en “laag” maken van de Data Request pin van de Slimme Meter heb ik verschillende varianten uitgeprobeerd. Met een combinatie van één of twee transistoren en/of MosFets kreeg ik het niet stabiel werkend. Uiteindelijk is het een opto-coupler geworden.

Hieronder staat het schema voor de Data Request functionaliteit:

Het circuit wordt gestuurd vanuit GPIO12 van de ESP8266 en zorgt ervoor dat bij een “hoog” signaal de led in de opto-coupler gaat branden.

Hierdoor zal de transistor “sluiten” (hij gaat geleiden) waardoor de 5Volt op de collector (pin5) direct op de emitter (pin4) terecht komt (hij wordt “hoog”). Hierdoor zal DTR_SM ook “hoog” worden en zal de Slimme Meter een telegram versturen.


Telegram ontvangen

Het telegram wordt door de Slimme Meter via pin 5 van de RJ12 connector met een geïnverteerde 5volt TTL logica verstuurd. Voor de ESP8266 moet dit signaal zowel (terug) geïnverteerd- als geschikt gemaakt worden voor 3v3 logica van de ESP8266.

In rust zal R6 de Base van Q1 “hoog” trekken, waardoor Q1 “gesloten” wordt en de Collector, en daarmee Rx_SM “laag” zal zijn. Als Tx_SM “laag” is zal de Base van Q1 óók “laag” worden en zal Q1 “open” gaan staan. De Collector en daarmee ook Rx_SM zal door R8 naar 3v3 getrokken worden. Rx_SM is dan dus “hoog”. Komt er bij Tx_SM een “hoog” signaal binnen, dan zal de Base van Q1 ook “hoog” worden. Hierdoor gaat Q1 geleiden en zal de Collector samen met Rx_SM “laag” worden.


Hiernaast zie je hoe dat deel van het schema er op het 1of!-Proto bordje uit ziet.



I2C Interface

Een aantal bouwers van versie 3 vroeg of het mogelijk is in een volgende versie een klein Oled scherm op te nemen. Er zijn twee mogelijkheden om een Oled scherm aan te sturen. Eén is via een SPI interface de andere maakt gebruik van de I2C interface. Ik heb ervoor gekozen de I2C interface te gebruiken.

In versie 4 is een uitbreiding poort met I2C interface opgenomen die ook voor andere modules gebruikt kan worden. In de firmware wordt een Oled scherm aangestuurd.

Er kan in de J4 poort direct een Oled-module worden gestoken. Omdat niet iedere verkrijgbare Oled-module dezelfde aansluitingen heeft moet via draad-bruggen de juiste aansluitingen van J2 naar J3 worden doorverbonden (met name GND en 3v3 zitten niet op alle Oled-modules op dezelfde plaats).


ADC Interface

Een groot nadeel van de Slimme Meter is dat deze de energie van de zonnepanelen sommeert met die van de verbruikers op dezelfde groep.

Zo krijg je nooit een inzicht in de werkelijk opgewekte energie en de werkelijk verbruikte energie. De opgewekte energie kun je ook (buiten de Slimme Meter om) meten met een AC Stroom Sensor (bijvoorbeeld een SCT013-030 of ECS1030-L59). Deze klem je om de, in de meterkast binnenkomende, fase draad van de zonnepanelen en ze geven een spanning af die afhankelijk is van de stroom die door de kabel loopt. Voor gebruik van dit soort sensoren is de ADC (Analoge to Digital Convertor) pin van de ESP8266 uitermate geschikt. In het schema van de DSMR-logger v4 heeft deze, via een weerstands-deler een bereik van 0-5volt. Door R12 en R13 (5% tolerantie, een kleinere tolerantie is beter) aan te passen kun je dit bereik veranderen.

Putting It All Together

Om het schema van de nieuwe DSMR-logger te complementeren moet het basis-circuit van de ESP8266 nog worden toegevoegd (zie mijn post over de 1of!-ESP12). Dit basis circuit bestaat uit de ESP-12, de 3v3 voeding, een Program Interface en de schakeling rond de Reset en Flash buttons.

Dit resulteert in het complete schema voor de DSMR-logger V4:

Uitgebreide (‘technische’) documentatie van dit project kun je hier vinden.


      Een complete kit met alle onderdelen kun je hier kopen.

En hieronder staat een plaatje van het prototype zoals ik dat op de 1of!-bordjes heb gemaakt en getest.

En een life versie van het prototype in de meterkast:

This entry was posted in Arduino, Computer, ESP8266, Hardware, Uncategorised, WiFi. Bookmark the permalink.

38 Responses to DSMR-logger V4 (Slimme Meter uitlezer)

  1. Pingback: Slimme Meter uitlezer | Willem's Website

  2. Eric says:

    Bedenken doe ik dit allemaal niet, MAAR soldeer het graag in elkaar als er een officiële versie beschikbaar komt 🙂

    Laat de upgrade van de huidige versie maar komen. Het ziet er veelbelovend uit!

    • Hoi Eric,

      De upgrade van de Firmware komt eraan. Nog even geduld 😉

      Vandaag ontvang ik de PCB’s en ga ik kijken of er geen fouten in zitten.
      Kitjes komen ook, maar dat zal nog wel een maand to zes weken duren.

  3. Klaas says:

    Beste Willem,

    Met veel interesse heb ik je artikel gelezen. Mijn complimenten hoe goed alles er uit zien.
    Ik ben zelf ook bezig met het maken van een schema in KiCAD om mijn meter te koppelen via een ESP-12F aan domoticz. De ESP-12F wordt dan gebuikt als P1 Wifi Gateway.

    Twee kleine opmerkingen:

    1. Data Request Circuit
    De weerstand R4 150 ohm, lijkt mij aan de lage kant. Een GPIO pin kan maximaal 12mA leveren. 3,3v – 0,6v = 2,7v -> 2,7v / 150 ohm = 18mA. Mijn tip is 270 ohm te gebruiken. Ik ga zelf deze optocoupler gebruiken: PC817.
    R5 is strikt genomen niet nodig denk ik.

    2. Level-Shift inverter
    Helaas wordt de Data_GND gedeeld door de twee optocouplers in de meter. Anders was het helemaal simpel geweest.
    Ik denk zelf dat R7 kan komen te vervallen en ik zou R6 verhogen naar 5K6.

    Ik ben erg benieuwd naar je reactie! Mogelijk zie ik met mijn opmerkingen hierboven iets over het hoofd. Ik heb nog geen proef opstelling gemaakt.

    Groet, Klaas

    • Willem Aandewiel says:

      Hoi Klaas,

      Dank voor het compliment!

      In de uiteindelijke versie zijn R1 en R4 220R
      R5 en R7 zijn een poging tot ‘current limiter’. R6 heb ik 4k7 gemaakt.

      Aanpassingen aangebracht in het totaal schema, nog niet in de sub-plaatjes.

  4. Sjors says:

    Beste Willem,

    Complimenten het ziet er allemaal netjes uit.
    Heb ook interesse in het artikel dus wacht toch maar even op versie 4.
    Hoop dat die gauw te leveren.

    Met vriendelijke groet
    Sjors

  5. Sjors says:

    Complimenten Willem, het ziet er allemaal perfect uit.
    Wacht met spanning op de upgrade en dan solderen maar.

    Groet
    Sjors

  6. Ed says:

    Ziet er erg goed uit

  7. Pim says:

    Hallo Willem,

    Ik ben echt razend enthousiast van de logger en heb hem zelf ook al een tijdje in gebruik. Ik gebruik de V3 hardware.

    Eerst met de originele V3 software en nu met de nieuwe WebSocket software heb ik succes op mijn ESP01.

    Echter heeft een collega een probleem met zijn ESP01. zodra we op zijn ESP01(geen ESP01S) de websocket binary installeren zoals ik die ook heb geïnstalleerd doet de logger het niet, instellingen in de IDE staan correct en het inloggen van de logger op het lokale wifi netwerk gaat ook goed. Echter daarna wil de logger niet meer goed werken. De logger heeft wel verbinding met de router en ik kan zien welk IP-adres de logger heeft gekregen maar hij weigert de verbinding als ik hem benader via een webbrowser. “de host heeft de verbinding geweigerd”. Als ik daarna weer de V3 software installeer doet alles het weer.
    Library versies zijn gelijk aan de gespecificeerde.
    Het enige verschil wat ik opmerk is dat mijn collega een PUYA flash chip heeft en de mijne niet.

    Herken jij dit probleem ook met de websocket software in combinatie met een PUYA ESP01?

    • Willem Aandewiel says:

      Pim,
      Ik heb nog niet zoveel ervaring met de DSMRloggerWS firmware in combinatie met de ESP-01. Je schrijft “geen ESP01S”, maar is het er wel een met 1MB flash?

      Heb je ook de Flash instelling goed staan [1MB (256KB SPIFFS)]???

      Misschien toch een keer de firmware flashen met de optie “All Flash Content” en dan de data er opnieuw opzetten.
      Ik raad je aan ook hier te kijken.

      • Pim says:

        Hallo Willem,

        Dank je wel voor je antwoorden.

        Als ik de oude V3 software installeer dan krijg ik via de “device info” pagina te zien dat het een 1 Mb flash chip is. Ik ga ervan uit dat deze info uit de chip zelf wordt gelezen en dus klopt :).

        Verder zijn de SIFFS instellingen zoals jij aangeeft op 256kb gezet(V3 weer terug naar 128kb).

        Ik zal vanavond ook nog even de “clear all flash” optie proberen.

        Ik zal jouw io pagina ook nog eens goed doornemen. Mocht ik de fout binnenkort vinden dan zal ik het je even melden zodat je hier rekening mee kunt houden.

        Nog even het gedrag van mijn fout wat duidelijker in kaart gebracht:
        -De blauwe led brand continu.
        -De ESP01 heeft verbinding met wifi maar weigert http verbinding
        -Ook browsen naar http://FSexplorer weigert de verbinding.

        En nogmaals, een klasse stukje techniek wat je hebt gemaakt.

        Groet,

        Pim

        • Willem Aandewiel says:

          Pim,
          Wat een obscure probleem.
          Test je beide loggers op dezelfde Slimme Meter? Met dezelfde kabel?
          Knippert de blauwe led zoals beschreven vóórdat hij continue gaat branden (dan ontvangt hij geen telegrammen)?
          Als je de “niet werkende” ESP-01 in het “wel werkende” bordje prikt, wat gebeurd er dan?
          Kun je de logger via telnet benaderen? Als je één of twee keer op “v” drukt krijg je meer/minder “Verbose” output. Wellicht dat er dan meldingen verschijnen die je verder helpen.
          Keep me Posted!

          [Ondertussen de PUYA chip oplossing in de documentatie opgenomen]

  8. Michel says:

    Sinds vandaag ook een slimme meter gekregen en jouw project al tijdje geleden gebouwd, versie V3. Aangesloten en vol spanning kijken of het werk en draait perfect.

    Nu zag ik dat je bezig bent met alweer V4. Kan ik de nieuwe software ook gebruiken op een V3? Volgens ESP-DSMR info heb ik 1Mb flash chip.

    Mij is dat niet geheel duidelijk welke ik dan kan gebruiken en kan dat ook OTA of moet ik hem daar weer voor verbinden en via Arduino flashen.

    Tevens de vraag of er info is hoe ik deze kan koppelen aan Domoticz. Via HA is een mooi stappenplan maar voor Domoticz niet. Misschien heb je daar ook iets over.

    Alvast dank voor je reactie en dank voor dit mooie project.

    • Willem Aandewiel says:

      Michel,

      Mooi dat de DSMR-logger meteen werkt!
      De DSMRloggerWS firmware kan, met een paar beperkingen, ook op een Versie 3 bordje gebruikt worden. Wat niet kan is de RTS hardware, de I2C poort en Data/Firmware Over The Air uploaden. Het flashen zul je dus weer bedraad met de ArduinoIDE moeten doen!
      Ik heb geen ervaring met Domoticz maar als je hebt uitgezocht hoe je de logger daaraan kunt koppelen dan hoor ik graag hoe je dat gedaan hebt zodat ik het in de documentatie kan opnemen!

      • Michel says:

        Willem,

        Dank voor je reactie. Kun je aangeven wat ik nodig heb om DSMRloggerWS erop te zetten. Ik raak een beetje de weg kwijt met alle bestanden.

        Ik had via https://github.com/mrWheel/DSMRloggerWS deze proberen te compileren maar dat ging niet en dacht dan zet ik alleen de DATA bestanden over. Maar dit eindige in een totale puinhoop en toen werkte niets meer. Daarna kon ik nergens meer bij en ook opnieuw de oude DATA bestanden overzetten deed hij wel maar werkte niet meer.

        Alles opnieuw geflasht en nu werkt hij weer als V3.
        Misschien een kleine handleiding om van V3 naar V4 een upgrade te kunnen doen.

        p.s met Domoticz ben ik een stapje verder en mocht dit een werkend script opleveren dan zal ik dit zeker delen met je zodat je ook dit op de site kunt plaatsen.

        Dus

        • Michel says:

          Als ik de nieuwe firmware ga compileren krijg ik foutmeldingen en waar kom ik helaas niet achter hoe deze op te lossen.

          • Willem Aandewiel says:

            Michel,
            Je gebruikt de esp8266 core versie 2.4.1. De firmware heeft 2.5.0 nodig.
            Via boards manager kun je dit updaten.

            Verder zijn de meeste meldingen zgn. “Note”s en dus onbelangrijk!

        • Willem Aandewiel says:

          Michel,
          Je kunt niet upgraden van DSMRlogger2HTTP naar DSMRloggerWS.
          Je moet de hele instructie volgen.

          Let er op dat SPIFFS 256kb moet zijn voor deze firmware.
          Als je een PUYA flash chip hebt moet je dit lezen!

          • Michel says:

            Willem,

            Dat deed het hem. Upgraden naar 2.5.0.
            Ik had dit ook gedaan maar omdat het niet lukte met V3 weer teruggegaan naar 2.4.1 en toen kon ik V3 weer flashen.

            Nu ging alles in 1x soepel en draait het weer.

            Ik mis nu alleen getActual.json en hierdoor kan ik de waardes niet meer uitlezen / testen in Domoticz.

          • Willem Aandewiel says:

            Hi Michel,

            Gegevens vraag je nu op met /restAPI

            Zal hier in de documentatie!

  9. Pim says:

    Hallo Willem,

    Ik heb ondertussen een aantal stappen gemaakt. Ik wil dit graag aan je uitleggen maar ik heb het idee dat dat hier niet de juiste plek is. Kan je mij een mail sturen waar ik op kan reageren met mijn bevonden punten.

    De logger start ondertussen op met de V4 software en de PUYA flash chip. alleen het schrijven naar de chip werkt nog niet goed.

    Hoor het graag!

    Pim

  10. Tony Seesing says:

    Hallo Willem,
    Dank voor de software. Ik ben erg tevreden met het resultaat van de V4 tot nu toe. Ik ben geen software man, dus blijf verdere ontwikkelingen gewoon volgen.
    Aansturen van de DTR heb ik opgelost met 2 transistoren: BC550 (npn) en BC557 (pnp).
    Helaas is hier geen plaatje mogelijk, maar BC550/b wordt aangestuurd uit Arduino middels 4k7/10k weerstands deling naar aarde. BC550/e ligt aan aarde. BC557/b wordt aangestuurd vanuit BC550/c via weerstandsdeling 4k7/10k naar +5V. BC557/e ligt aan +5V. BC557/c gaat naar pin2 van slimme meter.
    Werkt perfect! Doe er je voordeel mee.
    Verder heb ik twijfels of alles goed gaat werken met het voorgestelde circuit voor het meten van de stroom geleverd door panelen. Heb je daar al ervaringen mee?

    Groetjes,

    Tony Seesing

    • Willem Aandewiel says:

      Tony,

      Nog geen ervaring met de ADC, maar het is erg standaard. Met de goeie ring module moet het werken. Wel moet je zelf de firmware aanpassen zodat hij ook iets met de meting doet.

  11. Michel says:

    Willem,

    Ik heb een script gemaakt voor Domoticz die zowel voor firmware V3 als V4 zou moeten werken.

  12. Michel says:

    Beste Willem,

    Ik zag op Github dat er een updates zijn van bestanden. Moet ik nu voor de V3 hardware alles op dezelfde manier flashen zoals de eerste keer en mijn meterstand eerst veilig stellen of is het toch ook OTA mogelijk. Via de instelling is de knop namelijk grijs en niet klikbaar om de firmware bij te werken.

    Dit stuk is mij niet echt duidelijk.

    • Willem Aandewiel says:

      Hoi Michel,

      Heb je de documentatie gelezen?

      Je moet de nieuwe firmware inderdaad bedraad flashen en óók de data map moet je bedraad flashen (nadat je de aanwezige bestanden eerst handmatig veilig hebt gesteld).

      Als je de DSMRloggerWS firmware op de V3 hardware wilt gebruiken zijn er een paar zaken waar je op moet letten.

      1)
      OTA flashen kan niet omdat de nieuwe firmware te groot is voor de overgebleven ruimte.

      2)
      Voor SPIFFS moet je meer ruimte reserveren dan bij de DSMRlogger2HTTP firmware nodig was omdat de bestanden groter worden en er meer bestanden op SPIFFS worden opgeslagen.

      3)
      De lay-out van de bestanden is helemaal anders geworden. Je kunt de oude bestanden dus niet gebruiken. Het is wél mogelijk om de gegevens uit de oude bestanden in de “nieuwe” te stoppen (handmatig) maar dat is best wel veel werk omdat voorheen de meterstanden voor tarief 1 en 2 bij elkaar opgeteld werden terwijl ze nu apart worden opgeslagen. Je kunt de gegevens die je nu al hebt natuurlijk allemaal als tarief 1 opslaan en dan de huidige meterstand voor tarief 2 overnemen in de hele historie. Je kunt ook met de ingebouwde editor de gegevens in de maanden tabel (handmatig) invoeren.

      Eén van de bouwers (Pim) heeft intensief onderzoek gedaan naar de werking van de logger firmware in combinatie met een PUYA flash chip en de uitkomst daarvan is dat, hoewel de PUYA patch in combinatie met de DSMRlogger2HTTP firmware prima werkt, dit niet het geval is met de DSMRloggerWS firmware!

      Als je eenmaal de DSMRloggerWS firmware op je DSMR-logger hebt geflashed en er komt een update van deze firmware, dan hoef je de data niet opnieuw te flashen (behalve als dat in de documentatie expliciet gemeld wordt).

      Ik hoop dat je er met deze uitleg uitkomt!

  13. Mark says:

    Goedemorgen Willem,

    Waar kan ik de v4 printplaat of het bouwpakket bestellen?

    Mvg,

    Mark

  14. Hallo Willem,
    Ik heb al heel leuk de box 3d geprint(als beginnend printer al leuk gedaan).
    Maar ik heb eigenlijk Versie2 bordje gekocht.
    Mijn vraag is dan ook is daar ook een .stl bestandje van gemaakt?
    En mag ik dat dan? graag

    Met vriendelijke groet, Ruud

  15. Hans Scholten says:

    Hallo Willem,

    Wat een mooi ontwerp en wat een hoop functionaliteit op zo’n klein bordje. Ik overweeg er een te bestellen, maar ik heb toch nog een vraag. Ik heb een S0 (kWh puls)meter in mijn meterkast voor het opmeten van de opgewekte energie van mijn zonnepanelen. Dat doe ik dus niet met een AC Stroom Sensor zoals jij dat hierboven voorstelt. Is het toch mogelijk om de S0 pulsen ergens op jouw DSMR logger V4 in te lezen? En de pulsen van mijn watermeter?

    Vriendelijke groeten,

    Hans

    • Willem Aandewiel says:

      Hoi Hans,

      Ik denk wel dat dat mogelijk is. De ESP8266 heeft tijd (cycles) genoeg over om extra functionaliteit toe te voegen. Zo’n puls zou via een interrupt eenvoudig te realiseren zijn.
      Begrijp ik goed dat jouw zonnepannelen niet via de Slimme Meter hun energie doorgeven?
      Ik ben benieuwd naar hoe die SO pulsen “werken”.

  16. Hans Scholten says:

    Hoi Willem,

    Dank voor het vlotte antwoord. Jawel, de opwek van mijn zonnepanelen wordt doorgegeven aan mijn slimme meter, maar die trekt de opwek meteen af van het eigen gebruik en rapporteert alleen het netto resultaat. Om inzicht te krijgen in wat de zonnepanelen daadwerkelijk hebben opgewekt en wat daarvan meteen achter de meter is opgebruikt aan eigen verbruik heb ik een aparte kWh meter die alleen mijn zonnepanelen uitleest.
    Dit is een B+G e-tech drs155dc meter met een puls uitgang (S0) die 1000 pulsen afgeeft per gemeten kWh, zie https://bg-etech.de/download/manual/DRS155DCV3.pdf
    Volgens mij zijn die pulsen 5V en die lees ik nu in met mijn Arduino Mega. Omdat ik een nieuwe slimme meter heb gekregen (Sagemcom T210-D), kan mijn Arduino Mega die nu het programma Solarmeter van WijHebbenZon draait de baudrate van 115200 niet meer bijsloffen en moet ik dus naar een nieuwe oplossing zoeken.

Leave a Reply

Your email address will not be published. Required fields are marked *