Smart måleraflæser

Placeret på
I dette blogindlæg beskriver jeg, hvordan du nemt og for få penge selv kan lave denne DSMR logger (DSMR er et akronym for "Hollandske Smart Meter Krav") kan lave. Ved at udvikle DSMR-loggeren ønsker vi at opnå følgende:
  • Hardwaren skal være enkel og billig at lave;
  • DSMR-loggerens firmware skal kunne opdateres "Over The Air";
  • Begrænset historie skal opbevares og opbevares internt;
  • DSMR-loggeren skal være tilgængelig via en ekstern terminal (telnet);
  • De (historiske) data skal kunne hentes fra DSMR-loggeren via FTP til eventuel ekstern behandling;
  • DSMR-loggeren skal præsentere dataene fra Smart Meter via en browser;
  • Dataene skal kunne rekvireres via en REST API;
  • De aflæste data skal være nemme at behandle videre.
I et opfølgende blogindlæg vil jeg vise, hvordan man sender dataene til en MQTT-mægler, og hvordan man konfigurerer Home-Assistant til at præsentere disse data i Home-Assistant.


Smart målerteknologi

Smart Meter sender data via P1-porten (RJ12) i form af et telegram. Hvordan Smart Meter gør dette, og hvordan et telegram er opbygget, er beskrevet i dette dokument. Kapitel 5 er særligt interessant, fordi det beskriver, hvordan den fysiske grænseflade er opbygget. Dette viser blandt andet, at Smart Meter skal kunne levere 5 volt ved 250mA, med et kortvarigt spidsstrømsfald på 300mA. Kapitel 6 beskriver protokollen og de forskellige felter.

Med dette dokument i hånden og lidt google vil du snart finde mere information. Vi er ikke de første og bestemt ikke de eneste, der føler behov for at læse Smart Meter.
For eksempel har Matthijs Kooijman skrevet et virkelig sublimt stykke software til at analysere telegrammerne fra måleren og gemme dem i små variable. Selvfølgelig vil vi bruge dette bibliotek. Du kan ham her at downloade.

Forsyninger

Den vigtigste del af DSMR-loggeren er processoren. Vi bruger en ESP8266 til dette, fordi den udover at være hurtig og udstyret med tilstrækkelig hukommelse også kan kommunikere via WiFi. For at holde omkostningerne lave, antager vi et ESP-01-kort (sort udgave) med 1MB hukommelse. Derudover har vi, bortset fra seks modstande og tre kondensatorer (C4 er egentlig ikke nødvendigt, men du kan tilføje det, hvis du har problemer med at oprette forbindelse til dit WiFi-netværk), en NPN-transistor (BC547) og en spændingsregulator (MCP1700-3302E). For at forbinde DSMR loggeren til Smart Meter skal du bruge et RJ12 stik med et stykke ledning. Jeg købte et RJ12-kabel på internettet (med to RJ12-hanstik) og skar det i halve.

Hvis du ikke ønsker at bruge DSMR logger PCB, skal du også bruge et stykke forsøgstavle.
De samlede omkostninger er omkring € 20,-

Skematisk DSMR logger

Nedenfor kan du se skemaet af DSMR-loggeren:
Skema DSMR Logger Skema DSMR Logger
Groft sagt består skemaet af fire dele (den femte, der indeholder 5 volt og GND PWR_FLAGs, er teknisk påkrævet af KiCAD, men er faktisk ikke en del af skemaet).

Først og fremmest forbindelsen mellem Smart Meter og DSMR loggeren. Det er nemmest at lodde kablet direkte til DSMR loggeren, men du kan også bruge et Molex hanstik. Du kan ikke tilslutte Molex stik "den forkerte vej rundt" (det ville være irriterende, for så forbinder du henholdsvis 5 volt og jord fra Smart Meter til jord og 5 volt af DSMR loggeren, hvilket ESP-01 helt sikkert ikke vil overleve! ). Tilslutningerne på DSMR-loggeren er de samme som på RJ12-stikket (1 er tilsluttet 1, 2 til 2 osv.).

Den anden del består af spændingsregulatoren, der konverterer de 5 volt fra Smart Meter til 3v3 til ESP-01. Ifølge databladet for ESP-01 bruger den normalt 80mA og i peaks 200-250mA. Den anvendte MCP1700 kan maksimalt levere 250mA. Tilstrækkelig til denne applikation.

Selve ESP-01 har kun 8 forbindelser. To til strømforsyningen (Vcc og GND), en til kommunikation med Smart Meter (TxD) og tre ben, der skal være "høje" under opstart (CH_PD, GPIO0 og GPIO2). De sidste to stifter (RST og TxD) bruges ikke.

Den sidste kredsløbsdel, omkring BC547 transistoren, har to funktioner. Først og fremmest sikrer det, at 5 volts data fra Smart Meter ikke overbelaster 3,3 volts input på ESP8266. Så det er primært en Level-Shifter. Men det er også en inverter, der konverterer det inverterede signal fra Smart Meter til et ikke-inverteret signal til ESP8266.

Hardwaren

Som et bevis på konceptet loddede jeg en første version af DSMR-loggeren på et eksperimentkort.
DSRM - Eksperimentprint DSRM - Eksperimentprint
Her kan du se det endelige resultat forbundet med Smart Meter:
DSRM - Experiment PCB komplet DSRM - Experiment PCB komplet
Da det viste sig, at alt fungerer som planlagt, designede jeg et printkort med KiCAD.
Design DSRM Logger Design DSRM Logger

Installer firmware på ESP-01

Et af designmålene er, at firmwaren "Om luften” (med fly) skulle kunne sættes på DSMR loggeren. Det lykkedes også, men du vil altid skulle sætte firmware på ESP-01, der tilbyder denne funktionalitet for første gang. Derfor kan du ikke undgå at sende firmwaren via en kablet måde til DSMR-loggeren mindst én gang. Derudover skete det under udviklingen af softwaren for mig flere gange, at jeg introducerede en fejl, der gjorde, at OTA-uploaden ikke længere virkede. Selv da er den eneste måde at sende firmwaren, uden en fejl, til DSMR-loggeren via ledning.

Du skal bruge en programmør til at programmere ESP-01. En anden billig løsning er at indlæse et specielt program i en Arduino UNO og derefter lave en række forbindelser mellem Arduino og ESP-01-kortet.
Den nemmeste måde er at købe en "ESP-01 til USB Adapter" og lave en lille ændring (se mit blogindlæg).

Softwaren

I princippet er softwaren meget enkel (se eksemplet, der følger med DMSR-biblioteket). Men hvis du vil have nogle flere muligheder, bliver det hurtigt noget af et projekt!

DSMR-loggeren bruger følgende biblioteker:
Disse skal derfor installeres i dit Arduino -IDE miljø.

Vi bruger også den simple FTP-server fra David Paiva. Dette er inkluderet som kilde direkte i DSMRlogger2HTTP-skitsen (to faner), og du bruger derfor anførselstegn (“) i stedet for mindre og større end-tegn for include.
Den særlige behandling var nødvendig, fordi jeg lavede mindre ændringer i kilden og ikke ønsker, at de skal gå tabt ved en biblioteksopdatering.

Skitsen består af i alt otte faner. Hovedprogrammet, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff og menuStuff. Du kan downloade softwaren som en ZIP-fil fra GitHub og pak derefter ud i din Arduino projektmappe. Hvis du har git installeret på din computer, kan du også klone depotet med kommandoen:

git klon https://github.com/mrWheel/DSMRlogger2HTTP.git

Det vil derefter oprette, i det bibliotek, hvor du kører kommandoen (helst Arduino projektmappen), en mappe kaldet "DSMRlogger2HTTP", der indeholder al koden, inklusive en "data"-mappe til at gemme ESP-filsystemet. -01 (dette også indeholder filen "index.html").

I pseudokode ser programmet sådan ud:
Hovedprogrammet gentages i det uendelige og består af følgende trin:

Begynd at bruge DSMRloggeren

Før du kan bruge DSMRloggeren, skal du uploade ikke kun firmwaren, men også et filsystem med indhold til DSMRloggeren. For nemheds skyld vil jeg antage, at du ved, hvordan du uploader firmwaren, og vil begrænse mig til at forklare, hvordan du får filsystemet på DSMRloggeren.
Hvis ikke, så læs min anden blog om det gør ArduinoIDE velegnet til ESP8266.


I Arduino IDE skal du klikke på følgende menupunkt:
Arduino IDE-data upload Arduino IDE-data upload
Alle filer, der er i "data"-mappen i dette projekt, er nu placeret i en særlig del af ESP-01's hukommelse.

NB! Upload af filsystemet går galt, hvis du har "Serial Monitor" åben!

Nu kan du tilslutte DSMRloggeren til Smart Meter, men den kender ikke dataene for dit WiFi-netværk. Den opretter derfor selv et Access Point (AP), som du skal registrere din computer til. Du kan genkende AP'et under navnet "ESP01-DSMR-xx-". Når du har oprettet forbindelse til AP'en, skal du starte din browser og gå til som angivet i AP'ens navn. Du kommer derefter ind i WiFi-konfigurationsmenuen:
Wi-Fi konfiguration Wi-Fi konfiguration
WiFi-konfigurationsadgangspunkt WiFi-konfigurationsadgangspunkt
Klik på knappen [Konfigurer WiFi], hvorefter en side som vist til højre kommer frem.

På denne side skal du vælge det WiFi-netværk, der tilhører dig, og indtaste adgangskoden. Tryk derefter på knappen [gem].

Hvis alt gik godt, vil du se følgende tekst:
Bekræftelse WiFi gemt Bekræftelse WiFi gemt
DSMRloggeren vil nu genstarte og oprette forbindelse til dit WiFi-netværk. Under opstart kan du se fra den blå LED, hvad DSMRloggeren laver

1. 3 langsomme blink - indledende start
2. 5 hurtige blink - tilsluttet WiFi-netværk
3. Derefter blinker den blå LED, hver gang et nyt telegram behandles

Hvis LED'en forbliver tændt efter de første tre langsomme blink, kunne DSMRloggeren ikke oprette forbindelse til dit WiFi-netværk og vil genstarte sit eget AP. Dette kan skyldes, at dit netværk var midlertidigt utilgængeligt eller dårligt tilgængeligt, eller fordi du ikke har indtastet detaljerne for dit WiFi-netværk korrekt. I så fald genstarter DSMRloggeren automatisk efter et par minutter og forsøger at genoprette forbindelsen til dit WiFi-netværk. Denne proces gentages, indtil en forbindelse er etableret, eller indtil du genindtaster detaljerne for dit WiFi-netværk som beskrevet ovenfor.

DSMRlogger-webgrænsefladen

Når DSMRloggeren er tilsluttet dit WiFi-netværk, kan du gå til adressen med din browser:
http://ESP01-DSMR.local/ 
Siden nedenfor vises derefter i din browser. De data, du ser, opdateres automatisk.
DSMR GUI DSMR GUI
Ved at klikke på fanerne kan du se forskellige typer data.
DSMR ugeoversigt DSMR ugeoversigt

telnet session:

For at oprette forbindelse til DSMRlogger via telnet skal du indtaste følgende kommando i et terminalvindue:
telnet ESP01-DSMR.local
Hvorefter du kan se live, hvad DSMRloggeren laver. Ved at trykke på vil du se en menu, som du kan arrangere nogle husholdningssager med. Du lukker telnet-sessionen med tastekombinationen ctrl+] q (hold kontrollen nede, tryk på “]”, slip begge og tryk på “q”).
DSMR Telnet DSMR Telnet
NB! DSMRloggeren kan kun håndtere én aktiv telnet-session.

REST API

Hvis du vil bruge dataene fra Smart Meter fra et andet program, kan du hente dem ved at anmode om denne URL:
http://ESP01-DSMR.local/getActual.json
DSMRloggeren returnerer derefter en json-streng, der ser sådan ud:
>

I et opfølgende blogindlæg vil jeg vise dig, hvordan du bruger disse data i Home-Assistant.

Opdater firmware

Der kommer et tidspunkt, hvor du vil justere firmwaren på DSMRloggeren til din egen indsigt og behov.
Det er da irriterende at skulle gå hen til målerskabet for hver justering for at frakoble DSMRloggeren, fjerne ESP-01 fra loggeren og forsyne den med ny firmware med en programmør efter eget valg. Det behøver du heldigvis ikke. I Arduino IDE kan du ikke kun vælge serielle porte, som DSMRloggeren er tilsluttet. Valgmenuen indeholder også "Netværksporte":
Vælg Arduino IDE-port Vælg Arduino IDE-port
I mit tilfælde er netværksporten "ESP01-DSMR at 192.168.12.142" netværksporten på min DSMRlogger. Ved at vælge denne port og kompilere og uploade den nye firmware, sendes den trådløst til DSMRloggeren (du vil bemærke, at dette er endnu hurtigere end med et USB kabel!).

Bare sørg for, at den firmware, du uploader, ikke indeholder nogen irriterende fejl. Det er sket for mig flere gange, at jeg introducerer en fejl, der får Over The Air-upload af firmware til at holde op med at virke (normalt holder hele DSMRloggeren op med at virke i sådan et tilfælde), så jeg stadig skulle hen til målerskabet...

DSRM logger kit

Ikke længere tilgængelig
Version 3 har samme funktionalitet som version 1, men har også nogle opgraderinger, der gør lodning nemmere.
Opencircuit har sammen med Willem Aandewiel sammensat et sæt med PCB og alle de nødvendige dele til selv at bygge denne DSMR logger.

Med dette sæt kan du selv bygge DSRM-loggeren på et klart struktureret printkort. Dette sparer ikke kun tid, men ser også meget pænere ud!
Sendt af Internet side Willem Aandewiel (1955) har en baggrund i elektronik og digitale teknikker. Det meste af sit arbejdsliv har han dog arbejdet med automation, hvor han har arbejdet i stort set alle discipliner fra programmør til projektleder og projektleder. Willem var en af de første hollændere med en mikrocomputer (KIM-1, 1976) på et tidspunkt, hvor pc'en endnu ikke var opfundet. I dag beskæftiger han sig hovedsageligt med design og produktion af små elektroniske kredsløb med mikroprocessorer. Hans 'mission i livet' er at gøre folk begejstrede for at lave deres egne elektroniske kredsløb, mikrocomputere og programmering.

Kommentarer

The Netherlands Verkenner
Her samme problem som Joahn Krabe skrev 12. oktober 2019. Forbindelsen fra DSMR (version 4.5) telefon/PC virker, men dataene fra smartmåleren forbliver hemmelige, her en også en Kamstrup 382 meter, 5 volt strømforsyning, uden resultat. Hvad er der galt? Måleren fungerer med en P1-skærm med TOON. Tak for forslag.
Placeret på 
The Netherlands Johan Krabbe
Bart: https://github.com/mrWheel/DSMRlogger2HTTP" rel="nofollow" target="_blank">https://github.com/mrWheel/DSMRlogger2HTTP Filen KiCad indeholder de nødvendige filer til printene, fungerer perfekt
Placeret på 
Belgium Bart De Pauw
Hej Willem, jeg har allerede søgt, også på din side, men kunne ikke finde om dette også kan bruges til DSMR 5.0.2 P1 telegrammer (i den nuværende version). Tilsyneladende er de belgiske Fluvius/Eandis digitale målere lidt anderledes. den hollandske DSMR 4 https://www.feebel.be/data/content/file/201804-technische-specificaties-gebruikerspoorten-digitale-meters.pdf" rel="nofollow" target="_blank">https://www.feebel.be/data/content/file/201804-technische-specificaties-gebruikerspoorten-digitale-meters.pdf Måske tid til at lancere en v5? Altid villig til at hjælpe med versionstest (jeg er selv elektronikingeniør siden 1992) Forresten så jeg, at gør-det-selv-sættene ikke længere var tilgængelige? Er der en måde at frigive printboard-filerne, så vi kan få dem lavet selv? På forhånd tak for dette vidunderlige projekt (og så vil jeg vente lidt før jeg starter et helt selv, det ville være nytteløst efter alt det arbejde du allerede har lagt i det...)
Placeret på 
1
The Netherlands Wim
Udskriften er ikke længere tilgængelig. Er der en anden måde at få printet på? Og et spørgsmål mere: Du taler om en ESP-01, men mener du ikke en ESP-01S? Den har dobbelt så meget flashhukommelse. Hvis han vil bruge OTA, tror jeg, du har brug for det. Eller tager jeg fejl nu?
Placeret på 
The Netherlands Wim Nijntjes
Spørgsmål: Hvorfor bruger du ikke pin 2 på måleren. Den er nu tilsluttet 5 volt. Den kan nemt tilsluttes GPIO-0/2 (intern optokobler), og du har et håndtryk. Måske fungerer FTP'en så.
Placeret på 
Webwinkelkeur Kiyoh Trustpilot Opencircuit