Lettore di contatori intelligente

Posto su
In questo post del blog descrivo come puoi facilmente e con pochi soldi realizzare questo logger DSMR (DSMR è l'acronimo di "Requisiti dei contatori intelligenti olandesi") può fare. Nello sviluppo del logger DSMR, vogliamo ottenere quanto segue:
  • L'hardware deve essere semplice ed economico da realizzare;
  • Il firmware del logger DSMR deve poter essere aggiornato “Over The Air”;
  • La cronologia limitata deve essere archiviata e conservata internamente;
  • Il logger DSMR deve essere accessibile tramite un terminale esterno (telnet);
  • I dati (storici) devono poter essere recuperati dal logger DSMR tramite FTP per eventuali elaborazioni esterne;
  • Il logger DSMR deve presentare i dati dallo Smart Meter tramite un browser;
  • I dati devono poter essere richiesti tramite un'API REST;
  • I dati letti devono essere facili da elaborare ulteriormente.
In un successivo post sul blog mostrerò come possiamo inviare i dati a un broker MQTT e come configurare Home-Assistant per presentare questi dati in Home-Assistant.


Tecnologia dei contatori intelligenti

Lo Smart Meter invia i dati tramite la porta P1 (RJ12) sotto forma di telegramma. Come lo Smart Meter fa questo e come è strutturato un telegramma è descritto in questo documento. Il capitolo 5 è particolarmente interessante perché descrive come è costruita l'interfaccia fisica. Ciò dimostra, tra l'altro, che lo Smart Meter deve essere in grado di fornire 5 volt a 250 mA, con una diminuzione della corrente di picco a breve termine di 300 mA. Il capitolo 6 descrive il protocollo ei vari campi.

Con questo documento in mano e un po' di googling troverai presto maggiori informazioni. Non siamo i primi e di certo non gli unici a sentire il bisogno di leggere lo Smart Meter.
Ad esempio, Matthijs Kooijman ha scritto un software davvero sublime per analizzare i telegrammi dal contatore e memorizzarli in variabili di piccole dimensioni. Ovviamente useremo questa libreria. Puoi lui qui scaricare.

Forniture

La parte più importante del logger DSMR è il processore. Utilizziamo per questo un ESP8266 perché, oltre ad essere veloce e dotato di memoria sufficiente, può anche comunicare via WiFi. Per mantenere bassi i costi, assumiamo una scheda ESP-01 (edizione nera) con 1 MB di memoria. Inoltre, oltre a sei resistori e tre condensatori (C4 non è realmente necessario ma puoi aggiungerlo se hai problemi di connessione alla tua rete WiFi), abbiamo bisogno di un transistor NPN (BC547) e di un regolatore di tensione (MCP1700-3302E). Per collegare il logger DSMR allo Smart Meter è necessaria una spina RJ12 con un pezzo di filo. Ho acquistato un cavo RJ12 su Internet (con due connettori maschio RJ12) e l'ho tagliato a metà.

Se non si desidera utilizzare il PCB del logger DSMR, è necessario anche un pezzo di scheda sperimentale.
Il costo totale è di circa € 20,-

Schema del registratore DSMR

Di seguito puoi vedere lo schema del logger DSMR:
Schema DSMR Logger Schema DSMR Logger
In parole povere, lo schema è composto da quattro parti (la quinta, contenente i PWR_FLAG da 5 volt e GND, è tecnicamente richiesta da KiCAD ma non fa effettivamente parte dello schema).

Prima di tutto, la connessione tra lo Smart Meter e il logger DSMR. È più semplice saldare il cavo direttamente al logger DSMR, ma è anche possibile utilizzare un connettore maschio Molex. Non è possibile collegare i connettori Molex "al contrario" (sarebbe fastidioso perché in tal caso si collegano rispettivamente i 5 volt e la terra dallo Smart Meter alla terra e i 5 volt del logger DSMR, a cui l'ESP-01 sicuramente non sopravviverà! ). Le connessioni sul data logger DSMR sono le stesse del connettore RJ12 (1 è collegato a 1, 2 a 2, ecc.).

La seconda parte è costituita dal regolatore di tensione che converte i 5 volt dello Smart Meter in 3v3 per l'ESP-01. Secondo la scheda tecnica dell'ESP-01 utilizza normalmente 80mA e nei picchi 200-250mA. L'MCP1700 utilizzato può fornire un massimo di 250mA. Sufficiente per questa applicazione.

L'ESP-01 stesso ha solo 8 connessioni. Due per l'alimentazione (Vcc e GND), uno per la comunicazione con lo Smart Meter (TxD) e tre pin che devono essere “alti” durante l'avvio (CH_PD, GPIO0 e GPIO2). Gli ultimi due pin (RST e TxD) non vengono utilizzati.

L'ultima parte circuitale, attorno al transistor BC547, ha due funzioni. Prima di tutto, assicura che i dati a 5 volt dello Smart Meter non sovraccarichino l'ingresso a 3,3 volt dell'ESP8266. Quindi è principalmente un Level-Shifter. Ma è anche un inverter che converte il segnale invertito dallo Smart Meter in un segnale non invertito per l'ESP8266.

L'Hardware

Come proof of concept, ho saldato una prima versione del logger DSMR su una scheda sperimentale.
DSRM - Stampa sperimentale DSRM - Stampa sperimentale
Qui puoi vedere il risultato finale connesso allo Smart Meter:
DSRM - Esperimento PCB completo DSRM - Esperimento PCB completo
Quando si è scoperto che tutto funzionava come previsto, ho progettato un circuito stampato con KiCAD.
Progetta il registratore DSRM Progetta il registratore DSRM

Installa il firmware sull'ESP-01

Uno degli obiettivi di progettazione è che il firmware "Sull'aria” (per via aerea) dovrebbe poter essere inserito nel logger DSMR. Anche questo ha avuto successo, ma dovrai sempre installare il firmware sull'ESP-01 che offre questa funzionalità per la prima volta. Pertanto, non è possibile evitare di inviare almeno una volta il firmware via cavo al logger DSMR. Inoltre, durante lo sviluppo del software, mi è capitato più volte di introdurre un bug che faceva non funzionare più l'upload OTA. Anche in questo caso, l'unico modo è inviare via cavo il firmware, senza bug, al logger DSMR.

Hai bisogno di un programmatore per programmare l'ESP-01. Un'altra soluzione economica è caricare un programma speciale in un Arduino UNO e quindi effettuare una serie di connessioni tra Arduino e la scheda ESP-01.
Il modo più semplice è acquistare un "adattatore da ESP-01 a USB " e apportare una piccola modifica (vedere il mio post sul blog).

Il software

In linea di principio, il software è molto semplice (vedi l'esempio incluso con la libreria DMSR). Tuttavia, se vuoi qualche altra opzione, diventa rapidamente un bel progetto!

Il logger DSMR utilizza le seguenti librerie:
Questi devono quindi essere installati nel tuo ambiente Arduino -IDE.

Utilizziamo anche il semplice server FTP di Davide Paiva. Questo è incluso come sorgente direttamente nello sketch DSMRlogger2HTTP (due schede) e quindi si utilizzano le virgolette (“) invece dei segni minore e maggiore per l'inclusione.
Il trattamento speciale era necessario perché ho apportato piccole modifiche alla fonte e non voglio che vadano perse durante l'aggiornamento della libreria.

Lo schizzo è composto da un totale di otto schede. Il programma principale, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff e menuStuff. È possibile scaricare il software come file ZIP da Git Hub e quindi scompattare nella cartella dei progetti Arduino . Se hai git installato sul tuo computer, puoi anche clonare il repository con il comando:

clone di git https://github.com/mrWheel/DSMRlogger2HTTP.git

Creerà quindi, nella directory in cui si esegue il comando (preferibilmente la cartella dei progetti Arduino ), una directory chiamata "DSMRlogger2HTTP" contenente tutto il codice, inclusa una directory "data" per memorizzare il file system ESP.-01 (anche questo contiene il file “index.html”).

In pseudo codice il programma si presenta così:
Il programma principale viene ripetuto all'infinito e si compone dei seguenti passi:

Inizia a utilizzare DSMRlogger

Prima di poter utilizzare il DSMRlogger è necessario caricare non solo il firmware ma anche un file system con il contenuto nel DSMRlogger. Per comodità presumo che tu sappia come caricare il firmware e mi limiterò a spiegare come ottenere il filesystem sul DSMRlogger.
In caso contrario, leggi il mio altro blog a riguardo rendendo l'ArduinoIDE adatto all'ESP8266.


Nell'IDE Arduino , fai clic sulla seguente opzione di menu:
Caricamento dati IDE Arduino Caricamento dati IDE Arduino
Tutti i file che si trovano nella directory "data" di questo progetto sono ora collocati in una parte speciale della memoria dell'ESP-01.

NB! Il caricamento del file system va storto se hai il "Serial Monitor" aperto!

Ora puoi connettere il DSMRlogger allo Smart Meter, ma non conosce i dati della tua rete WiFi. Crea quindi un punto di accesso (AP) stesso a cui è necessario registrare il computer. È possibile riconoscere l'AP dal nome "ESP01‑DSMR‑xx‑". Dopo esserti connesso all'AP, avvia il browser e vai su come indicato nel nome dell'AP. Entrerai quindi nel menu di configurazione WiFi:
Configurazione Wi-Fi Configurazione Wi-Fi
Punto di accesso per la configurazione WiFi Punto di accesso per la configurazione WiFi
Fare clic sul pulsante [Configura WiFi], dopodiché verrà visualizzata una pagina come quella mostrata a destra.

In questa pagina, seleziona la rete WiFi che ti appartiene e inserisci la password. Quindi premere il pulsante [salva].

Se tutto è andato bene, vedrai il seguente testo:
WiFi di conferma salvato WiFi di conferma salvato
Il DSMRlogger ora si riavvierà e si collegherà alla tua rete WiFi. Durante l'avvio puoi vedere dal LED blu cosa sta facendo il DSMRlogger

1. 3 lampeggi lenti - avvio iniziale
2. 5 lampeggi rapidi - connesso alla rete WiFi
3. Successivamente, il LED blu lampeggia ogni volta che viene elaborato un nuovo telegramma

Se il LED rimane acceso dopo i primi tre lampeggi lenti, il DSMRlogger non è stato in grado di connettersi alla rete WiFi e riavvierà il proprio AP. Ciò potrebbe essere dovuto al fatto che la tua rete era temporaneamente non disponibile o difficile da raggiungere o perché non hai inserito correttamente i dettagli della tua rete WiFi. In tal caso, DSMRlogger si riavvia automaticamente dopo alcuni minuti e tenta di riconnettersi alla rete WiFi. Questo processo viene ripetuto fino a quando non viene stabilita una connessione o fino a quando non inserisci nuovamente i dettagli della tua rete WiFi come descritto sopra.

L'interfaccia web di DSMRlogger

Quando il DSMRlogger è connesso alla tua rete WiFi puoi andare all'indirizzo con il tuo browser:
http://ESP01-DSMR.local/ 
La pagina sottostante apparirà quindi nel tuo browser. I dati visualizzati vengono aggiornati automaticamente.
GUI DSMR GUI DSMR
Cliccando sulle schede è possibile visualizzare diversi tipi di dati.
Panoramica settimanale DSMR Panoramica settimanale DSMR

sessione telnet:

Per connettersi a DSMRlogger tramite telnet, immettere il seguente comando in una finestra di terminale:
telnet ESP01-DSMR.local
Dopo di che puoi vedere dal vivo cosa sta facendo DSMRlogger. Premendo comparirà un menù con il quale potrai sistemare alcune faccende domestiche. Si chiude la sessione telnet con la combinazione di tasti ctrl+] q (tenere premuto control, premere “]”, rilasciare entrambi e premere “q”).
DSMR Telnet DSMR Telnet
NB! DSMRlogger può gestire solo una sessione telnet attiva.

API REST

Se desideri utilizzare i dati dello Smart Meter da un altro programma, puoi recuperarli richiedendo questo URL:
http://ESP01-DSMR.local/getActual.json
Il DSMRlogger restituisce quindi una stringa json simile a questa:
>

In un successivo post sul blog ti mostrerò come utilizzare questi dati in Home-Assistant.

Aggiorna firmware

Arriva un momento in cui si desidera adattare il firmware del DSMRlogger alle proprie intuizioni e necessità.
È quindi fastidioso dover andare all'armadio del contatore per ogni regolazione per scollegare il DSMRlogger, rimuovere l'ESP-01 dal logger e fornirgli un nuovo firmware con un programmatore di tua scelta. Fortunatamente, non devi. Nell'IDE Arduino non è possibile selezionare solo le porte seriali a cui è connesso il DSMRlogger. Il menu di selezione contiene anche "Porte di rete":
Selezionare la porta IDE Arduino Selezionare la porta IDE Arduino
Nel mio caso la porta di rete "ESP01‑DSMR at 192.168.12.142" è la porta di rete del mio DSMRlogger. Selezionando questa porta e compilando e caricando il nuovo firmware, questo verrà inviato in modalità wireless al DSMRlogger (noterai che è ancora più veloce che con un cavo USB !).

Assicurati solo che il firmware che carichi non contenga bug fastidiosi. Mi è capitato diverse volte di introdurre un bug che causa l'interruzione del caricamento via etere del firmware (di solito l'intero DSMRlogger smette di funzionare in tal caso), quindi dovevo ancora andare all'armadio del contatore...

Il kit registratore DSRM

Non più disponibile
La versione 3 ha le stesse funzionalità della versione 1, ma presenta anche alcuni aggiornamenti che semplificano la saldatura.
Opencircuit insieme a Willem Aandewiel, ha messo insieme un kit con PCB e tutte le parti necessarie per costruire da soli questo logger DSMR.

Con questo kit puoi costruire tu stesso il logger DSRM su un PCB chiaramente strutturato. Questo non solo fa risparmiare tempo, ma sembra anche molto più bello!
Pubblicato da Sito web Willem Aandewiel (1955) ha un background in elettronica e tecniche digitali. Tuttavia, la maggior parte della sua vita lavorativa ha lavorato nell'automazione, dove ha lavorato in quasi tutte le discipline, dal programmatore al project leader e al project manager. Willem è stato uno dei primi olandesi con un microcomputer (KIM-1, 1976) in un'epoca in cui il PC doveva ancora essere inventato. Attualmente si occupa principalmente della progettazione e produzione di piccoli circuiti elettronici a microprocessore. La sua "missione nella vita" è rendere le persone entusiaste di creare i propri circuiti elettronici, microcomputer e programmazione.

Commenti

The Netherlands Verkenner
Qui stesso problema che ha scritto Joahn Krabe il 12 ottobre 2019. La connessione dal telefono/PC DSMR (versione 4.5) funziona, ma i dati dallo smart meter rimangono segreti, qui anche un contatore Kamstrup 382, alimentatore 5 volt fornito, senza risultato. Che c'è? Il misuratore funziona con un monitor P1 con il TOON. Grazie per i suggerimenti.
Posto su 
The Netherlands Johan Krabbe
Bart: https://github.com/mrWheel/DSMRlogger2HTTP" rel="nofollow" target="_blank">https://github.com/mrWheel/DSMRlogger2HTTP Il file KiCad contiene i file necessari per le stampe, funziona perfettamente
Posto su 
Belgium Bart De Pauw
Ciao Willem, ho già cercato, anche sul tuo sito, ma non sono riuscito a trovare se questo può essere utilizzato anche per i telegrammi DSMR 5.0.2 P1 (nella versione attuale). A quanto pare i contatori digitali belgi Fluvius/Eandis sono leggermente diversi. quindi il DSMR 4 olandese 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 Forse è il momento di lanciare una v5? Sempre pronto ad aiutare con il test delle versioni (sono un ingegnere elettronico dal 1992) A proposito, ho visto che i kit fai da te non erano più disponibili? Esiste un modo per rilasciare i file del pannello di stampa in modo che possiamo realizzarli noi stessi? Grazie in anticipo per questo bellissimo progetto (e poi aspetterò un po' per iniziarne uno anch'io, sarebbe inutile dopo tutto il lavoro che ci avete già messo...)
Posto su 
1
The Netherlands Wim
La stampa non è più disponibile. C'è un altro modo per ottenere la stampa? E un'altra domanda: stai parlando di un ESP-01 ma non intendi un ESP-01S? Ha il doppio della memoria flash. Se vuole usare l'OTA, penso che tu ne abbia bisogno. O mi sbaglio adesso?
Posto su 
The Netherlands Wim Nijntjes
Domanda: Perché non usi il pin 2 del misuratore. Ora è collegato a 5 volt. Può essere facilmente collegato a GPIO-0/2 (accoppiatore ottico interno) e hai una stretta di mano. Forse allora l'FTP funzionerà.
Posto su 
Webwinkelkeur Kiyoh Trustpilot Opencircuit