Smart mätarläsare
Placerad påI det här blogginlägget beskriver jag hur du enkelt och för lite pengar kan göra denna DSMR-logger (DSMR är en akronym för "Nederländska Smart Meter-krav") kan göra. När vi utvecklar DSMR-loggern vill vi uppnå följande:
Med detta dokument i handen och lite googling kommer du snart att hitta mer information. Vi är inte de första och absolut inte de enda som känner behov av att läsa av Smart Meter.
Till exempel har Matthijs Kooijman skrivit en verkligt sublim mjukvara för att analysera telegrammen från mätaren och lagra dem i småstora variabler. Naturligtvis kommer vi att använda detta bibliotek. Du kan honom här att ladda ned.
Om du inte vill använda DSMR-loggerns PCB behöver du också en bit experimentbräda.
De totala kostnaderna är ca € 20,-
- Hårdvaran måste vara enkel och billig att tillverka;
- DSMR-loggerns fasta programvara måste kunna uppdateras "Over The Air";
- Begränsad historik måste lagras och bevaras internt;
- DSMR-loggern måste vara åtkomlig via en extern terminal (telnet);
- De (historiska) uppgifterna ska kunna hämtas från DSMR-loggern via FTP för eventuell extern bearbetning;
- DSMR-loggern måste presentera data från Smart Meter via en webbläsare;
- Data måste kunna begäras via ett REST API;
- Den avlästa datan ska vara lätt att bearbeta vidare.
Tekniken i Smart Meter
Smart Meter skickar data via P1-porten (RJ12) i form av ett telegram. Hur Smart Meter gör detta och hur ett telegram är uppbyggt beskrivs i det här dokumentet. Kapitel 5 är särskilt intressant eftersom det beskriver hur det fysiska gränssnittet är uppbyggt. Detta visar bland annat att Smart Meter måste kunna leverera 5 volt vid 250mA, med en kortvarig toppströmminskning på 300mA. Kapitel 6 beskriver protokollet och de olika fälten.Med detta dokument i handen och lite googling kommer du snart att hitta mer information. Vi är inte de första och absolut inte de enda som känner behov av att läsa av Smart Meter.
Till exempel har Matthijs Kooijman skrivit en verkligt sublim mjukvara för att analysera telegrammen från mätaren och lagra dem i småstora variabler. Naturligtvis kommer vi att använda detta bibliotek. Du kan honom här att ladda ned.
Tillbehör
Den viktigaste delen av DSMR-loggern är processorn. Vi använder en ESP8266 för detta eftersom den förutom att vara snabb och utrustad med tillräckligt med minne även kan kommunicera via WiFi. För att hålla kostnaderna nere antar vi ett ESP-01-kort (svart utgåva) med 1MB minne. Dessutom, förutom sex motstånd och tre kondensatorer (C4 är egentligen inte nödvändigt men du kan lägga till det om du har problem med att ansluta till ditt WiFi-nätverk), behöver vi en NPN-transistor (BC547) och en spänningsregulator (MCP1700-3302E). För att ansluta DSMR-loggern till Smart Meter behöver du en RJ12-kontakt med en bit tråd. Jag köpte en RJ12-kabel på internet (med två RJ12-hankontakter) och skar den på mitten.Om du inte vill använda DSMR-loggerns PCB behöver du också en bit experimentbräda.
De totala kostnaderna är ca € 20,-
Schematisk DSMR-logger
Nedan kan du se schemat för DSMR-loggern: Schema DSMR Logger
Grovt sett består schemat av fyra delar (den femte, som innehåller 5 volt och GND PWR_FLAGs, krävs tekniskt av KiCAD men är faktiskt inte en del av schemat).
Först och främst kopplingen mellan Smart Meter och DSMR-loggern. Det är enklast att löda kabeln direkt till DSMR-loggern, men du kan även använda en Molex hankontakt. Du kan inte ansluta Molex-kontakter "på fel sätt" (det skulle vara irriterande för då ansluter du 5 volt och jord från Smart Meter till jord respektive 5 volt på DSMR-loggern, vilket ESP-01 definitivt inte kommer att överleva! ). Anslutningarna på DSMR-loggern är desamma som på RJ12-kontakten (1 är ansluten till 1, 2 till 2, etc.).
Den andra delen består av spänningsregulatorn som omvandlar 5 volt från Smart Meter till 3v3 för ESP-01. Enligt databladet för ESP-01 använder den normalt 80mA och toppar vid 200-250mA. MCP1700 som används kan leverera maximalt 250mA. Tillräckligt för denna applikation.
Själva ESP-01 har bara 8 anslutningar. Två för strömförsörjningen (Vcc och GND), en för kommunikation med Smart Meter (TxD) och tre stift som måste vara "höga" under uppstart (CH_PD, GPIO0 och GPIO2). De två sista stiften (RST och TxD) används inte.
Den sista kretsdelen, runt transistorn BC547, har två funktioner. Först och främst säkerställer den att 5 voltsdata från Smart Meter inte överbelastas 3,3 volts ingången på ESP8266. Så det är i första hand en Level-Shifter. Men det är också en växelriktare som omvandlar den inverterade signalen från Smart Meter till en icke-inverterad signal för ESP8266.
Först och främst kopplingen mellan Smart Meter och DSMR-loggern. Det är enklast att löda kabeln direkt till DSMR-loggern, men du kan även använda en Molex hankontakt. Du kan inte ansluta Molex-kontakter "på fel sätt" (det skulle vara irriterande för då ansluter du 5 volt och jord från Smart Meter till jord respektive 5 volt på DSMR-loggern, vilket ESP-01 definitivt inte kommer att överleva! ). Anslutningarna på DSMR-loggern är desamma som på RJ12-kontakten (1 är ansluten till 1, 2 till 2, etc.).
Den andra delen består av spänningsregulatorn som omvandlar 5 volt från Smart Meter till 3v3 för ESP-01. Enligt databladet för ESP-01 använder den normalt 80mA och toppar vid 200-250mA. MCP1700 som används kan leverera maximalt 250mA. Tillräckligt för denna applikation.
Själva ESP-01 har bara 8 anslutningar. Två för strömförsörjningen (Vcc och GND), en för kommunikation med Smart Meter (TxD) och tre stift som måste vara "höga" under uppstart (CH_PD, GPIO0 och GPIO2). De två sista stiften (RST och TxD) används inte.
Den sista kretsdelen, runt transistorn BC547, har två funktioner. Först och främst säkerställer den att 5 voltsdata från Smart Meter inte överbelastas 3,3 volts ingången på ESP8266. Så det är i första hand en Level-Shifter. Men det är också en växelriktare som omvandlar den inverterade signalen från Smart Meter till en icke-inverterad signal för ESP8266.
Hårdvaran
Som ett bevis på konceptet lödde jag en första version av DSMR-loggern på ett experimentkort. DSRM - Experimentutskrift
Här kan du se det slutliga resultatet kopplat till Smart Meter:
DSRM - Experiment PCB slutfört
När det visade sig att allt fungerar som planerat designade jag ett kretskort med KiCAD.
Designa DSRM Logger
Installera firmware på ESP-01
Ett av designmålen är att firmware "Om The Air” (via flyg) ska kunna sättas på DSMR-loggern. Det var också framgångsrikt, men du kommer alltid att behöva sätta in firmware på ESP-01 som erbjuder denna funktion för första gången. Därför kan du inte undvika att skicka den fasta programvaran via ett trådbundet sätt till DSMR-loggern minst en gång. Dessutom, under utvecklingen av mjukvaran, hände det mig flera gånger att jag introducerade en bugg som gjorde att OTA-uppladdningen inte längre fungerade. Även då är det enda sättet att skicka den fasta programvaran, utan en bugg, till DSMR-loggern via tråd.Du behöver en programmerare för att programmera ESP-01. En annan billig lösning är att ladda ett specialprogram i en Arduino UNO och sedan göra ett antal anslutningar mellan Arduino och ESP-01-kortet.
Det enklaste sättet är att köpa en "ESP-01 till USB -adapter" och göra en liten modifiering (se mitt blogginlägg).
Mjukvaran
I princip är mjukvaran väldigt enkel (se exemplet som ingår i DMSR-biblioteket). Men om du vill ha några fler alternativ blir det snabbt ett riktigt projekt!DSMR-loggern använder följande bibliotek:
Dessa måste därför installeras i din Arduino -IDE-miljö.
Vi använder även den enkla FTP-servern från David Paiva. Detta ingår som källa direkt i DSMRlogger2HTTP-skissen (två flikar) och du använder därför citattecken (“) istället för mindre och större än-tecken för include.
Vi använder även den enkla FTP-servern från David Paiva. Detta ingår som källa direkt i DSMRlogger2HTTP-skissen (två flikar) och du använder därför citattecken (“) istället för mindre och större än-tecken för include.
Specialbehandlingen var nödvändig eftersom jag gjorde mindre ändringar i källan och inte vill att de ska gå förlorade vid en biblioteksuppdatering.
Skissen består av totalt åtta flikar. Huvudprogrammet, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff och menuStuff. Du kan ladda ner programvaran som en ZIP-fil från GitHub och packa sedan upp i din Arduino -projektmapp. Om du har git installerat på din maskin kan du också klona förvaret med kommandot:
Den kommer sedan att skapa, i katalogen där du kör kommandot (helst Arduino projektmappen), en mapp som heter "DSMRlogger2HTTP" som innehåller all kod, inklusive en "data"-katalog för att lagra ESP-filsystemet. -01 (detta också innehåller filen "index.html").
I pseudokod ser programmet ut så här:
Skissen består av totalt åtta flikar. Huvudprogrammet, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff och menuStuff. Du kan ladda ner programvaran som en ZIP-fil från GitHub och packa sedan upp i din Arduino -projektmapp. Om du har git installerat på din maskin kan du också klona förvaret med kommandot:
git-klon https://github.com/mrWheel/DSMRlogger2HTTP.git
Den kommer sedan att skapa, i katalogen där du kör kommandot (helst Arduino projektmappen), en mapp som heter "DSMRlogger2HTTP" som innehåller all kod, inklusive en "data"-katalog för att lagra ESP-filsystemet. -01 (detta också innehåller filen "index.html").
I pseudokod ser programmet ut så här:
Huvudprogrammet upprepas i det oändliga och består av följande steg:
Börja använda DSMRlogger
Innan du kan använda DSMRlogger måste du ladda upp inte bara firmware utan även ett filsystem med innehåll till DSMRlogger. För enkelhetens skull kommer jag att anta att du vet hur man laddar upp firmware och kommer att begränsa mig till att förklara hur man får filsystemet på DSMRlogger.Om inte, läs min andra blogg om det vilket gör ArduinoIDE lämplig för ESP8266.
I Arduino IDE, klicka på följande menyalternativ:
Uppladdning av Arduino IDE-data
Alla filer som finns i "data"-katalogen i detta projekt är nu placerade i en speciell del av ESP-01:s minne.
OBS! Att ladda upp filsystemet går fel om du har "Serial Monitor" öppen!
Nu kan du ansluta DSMRlogger till Smart Meter, men den känner inte till data för ditt WiFi-nätverk. Den skapar därför själv en åtkomstpunkt (AP) som du måste registrera din dator till. Du kan känna igen AP med namnet "ESP01-DSMR-xx-". När du har anslutit till AP, starta din webbläsare och gå till som står i AP:s namn. Du kommer sedan in i WiFi-konfigurationsmenyn:
OBS! Att ladda upp filsystemet går fel om du har "Serial Monitor" öppen!
Nu kan du ansluta DSMRlogger till Smart Meter, men den känner inte till data för ditt WiFi-nätverk. Den skapar därför själv en åtkomstpunkt (AP) som du måste registrera din dator till. Du kan känna igen AP med namnet "ESP01-DSMR-xx-
Wi-Fi-konfiguration
WiFi-konfiguration åtkomstpunkt
Klicka på knappen [Konfigurera WiFi], varefter en sida som visas till höger visas.
På den här sidan väljer du det WiFi-nätverk som tillhör dig och anger lösenordet. Tryck sedan på [spara]-knappen.
Om allt gick bra kommer du att se följande text:
På den här sidan väljer du det WiFi-nätverk som tillhör dig och anger lösenordet. Tryck sedan på [spara]-knappen.
Om allt gick bra kommer du att se följande text:
Bekräftelse WiFi sparat
DSMRloggern kommer nu att starta om och ansluta till ditt WiFi-nätverk. Under uppstart kan du se från den blå lysdioden vad DSMRloggern gör
1. 3 långsamma blinkningar - första start
2. 5 snabba blinkningar - ansluten till WiFi-nätverk
3. Därefter blinkar den blå lysdioden varje gång ett nytt telegram bearbetas
Om lysdioden förblir tänd efter de tre första långsamma blinkningarna, kunde DSMRloggern inte ansluta till ditt WiFi-nätverk och kommer att starta om sin egen AP. Det kan bero på att ditt nätverk tillfälligt var otillgängligt eller dåligt tillgängligt eller att du inte angav detaljerna för ditt WiFi-nätverk korrekt. I så fall startar DSMRloggern automatiskt om efter några minuter och försöker återansluta till ditt WiFi-nätverk. Denna process upprepas tills en anslutning upprättas eller tills du anger detaljerna för ditt WiFi-nätverk igen enligt beskrivningen ovan.
1. 3 långsamma blinkningar - första start
2. 5 snabba blinkningar - ansluten till WiFi-nätverk
3. Därefter blinkar den blå lysdioden varje gång ett nytt telegram bearbetas
Om lysdioden förblir tänd efter de tre första långsamma blinkningarna, kunde DSMRloggern inte ansluta till ditt WiFi-nätverk och kommer att starta om sin egen AP. Det kan bero på att ditt nätverk tillfälligt var otillgängligt eller dåligt tillgängligt eller att du inte angav detaljerna för ditt WiFi-nätverk korrekt. I så fall startar DSMRloggern automatiskt om efter några minuter och försöker återansluta till ditt WiFi-nätverk. Denna process upprepas tills en anslutning upprättas eller tills du anger detaljerna för ditt WiFi-nätverk igen enligt beskrivningen ovan.
DSMRloggers webbgränssnitt
När DSMRlogger är ansluten till ditt WiFi-nätverk kan du gå till adressen med din webbläsare:http://ESP01-DSMR.local/Sidan nedan kommer då att visas i din webbläsare. Datan du ser uppdateras automatiskt.
DSMR GUI
Genom att klicka på flikarna kan du se olika typer av data.
DSMR veckoöversikt
telnet-session:
För att ansluta till DSMRlogger via telnet, skriv in följande kommando i ett terminalfönster:telnet ESP01-DSMR.localDärefter kan du se live vad DSMRloggern gör. Genom att trycka på
DSMR Telnet
OBS! DSMRloggern kan endast hantera en aktiv telnet-session.
I ett uppföljande blogginlägg kommer jag att visa dig hur du använder denna data i Home-Assistant.
REST API
Om du vill använda data från Smart Meter från ett annat program kan du hämta den genom att begära denna URL:http://ESP01-DSMR.local/getActual.jsonDSMRloggern returnerar sedan en json-sträng som ser ut så här:
>
I ett uppföljande blogginlägg kommer jag att visa dig hur du använder denna data i Home-Assistant.
Uppdatera firmware
Det kommer en tid när du vill anpassa firmwaren för DSMRloggern efter dina egna insikter och behov.Det är då irriterande att behöva gå till mätarskåpet för varje justering för att koppla bort DSMRloggern, ta bort ESP-01 från loggern och förse den med ny firmware med valfri programmerare. Lyckligtvis behöver du inte. I Arduino IDE kan du inte bara välja seriella portar som DSMRloggern är ansluten till. Valmenyn innehåller också "Nätverksportar":
Välj Arduino IDE-port
I mitt fall är nätverksporten "ESP01-DSMR at 192.168.12.142" nätverksporten för min DSMRlogger. Genom att välja denna port och kompilera och ladda upp den nya firmware kommer den att skickas trådlöst till DSMRloggern (du kommer att märka att detta är ännu snabbare än med en USB kabel!).
Se bara till att den firmware du laddar upp inte innehåller några irriterande buggar. Det har hänt mig flera gånger att jag introducerar en bugg som gör att Over The Air-uppladdningen av firmware slutar fungera (vanligtvis slutar hela DSMRloggern att fungera i ett sådant fall) så att jag ändå var tvungen att gå till mätarskåpet...
Se bara till att den firmware du laddar upp inte innehåller några irriterande buggar. Det har hänt mig flera gånger att jag introducerar en bugg som gör att Over The Air-uppladdningen av firmware slutar fungera (vanligtvis slutar hela DSMRloggern att fungera i ett sådant fall) så att jag ändå var tvungen att gå till mätarskåpet...
DSRM-loggersatsen
Version 3 har samma funktionalitet som version 1, men har även några uppgraderingar som underlättar lödningen.
Opencircuit har tillsammans med Willem Aandewiel satt ihop ett kit med PCB och alla nödvändiga delar för att själv bygga denna DSMR-logger.
Med detta kit kan du själv bygga DSRM-loggern på ett tydligt strukturerat PCB. Detta sparar inte bara tid, utan ser också mycket snyggare ut!
Med detta kit kan du själv bygga DSRM-loggern på ett tydligt strukturerat PCB. Detta sparar inte bara tid, utan ser också mycket snyggare ut!