Lettore di contatori intelligente
Posto suIn 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:
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.
Se non si desidera utilizzare il PCB del logger DSMR, è necessario anche un pezzo di scheda sperimentale.
Il costo totale è di circa € 20,-
- 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.
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
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.
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
Qui puoi vedere il risultato finale connesso allo Smart Meter:
DSRM - Esperimento PCB completo
Quando si è scoperto che tutto funzionava come previsto, ho progettato un circuito stampato con KiCAD.
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.
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:
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ì:
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
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:
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‑
Configurazione Wi-Fi
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:
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
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.
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
Cliccando sulle schede è possibile visualizzare diversi tipi di dati.
Panoramica settimanale DSMR
sessione telnet:
Per connettersi a DSMRlogger tramite telnet, immettere il seguente comando in una finestra di terminale:telnet ESP01-DSMR.localDopo di che puoi vedere dal vivo cosa sta facendo DSMRlogger. Premendo
DSMR Telnet
NB! DSMRlogger può gestire solo una sessione telnet attiva.
In un successivo post sul blog ti mostrerò come utilizzare questi dati in Home-Assistant.
API REST
Se desideri utilizzare i dati dello Smart Meter da un altro programma, puoi recuperarli richiedendo questo URL:http://ESP01-DSMR.local/getActual.jsonIl 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
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...
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
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!
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!