Lector de contador inteligente
Colocado enEn esta publicación de blog, describo cómo puede hacer fácilmente y por poco dinero este registrador DSMR (DSMR es un acrónimo de "Requisitos del medidor inteligente holandés") poder hacer. Al desarrollar el registrador DSMR, queremos lograr lo siguiente:
Con este documento en la mano y un poco de Google, pronto encontrará más información. No somos los primeros y ciertamente no los únicos que sentimos la necesidad de leer el Smart Meter.
Por ejemplo, Matthijs Kooijman ha escrito una pieza de software verdaderamente sublime para analizar los telegramas del medidor y almacenarlos en variables del tamaño de un bocado. Por supuesto que usaremos esta biblioteca. puedes el aquí descargar.
Si no desea utilizar la PCB del registrador DSMR, también necesita una pieza de placa experimental.
Los costos totales son alrededor de € 20,-
- El hardware debe ser sencillo y económico de fabricar;
- El firmware del registrador DSMR debe poder actualizarse “Over The Air”;
- El historial limitado debe almacenarse y conservarse internamente;
- El registrador DSMR debe ser accesible a través de un terminal externo (telnet);
- Los datos (históricos) deben poder recuperarse del registrador DSMR a través de FTP para un posible procesamiento externo;
- El registrador DSMR debe presentar los datos del medidor inteligente a través de un navegador;
- Los datos deben poder solicitarse a través de una API REST;
- Los datos leídos deben ser fáciles de procesar más.
Tecnología de medidores inteligentes
El Smart Meter envía datos a través del puerto P1 (RJ12) en forma de telegrama. Cómo lo hace el Smart Meter y cómo se estructura un telegrama se describe en este documento. El capítulo 5 es particularmente interesante porque describe cómo se construye la interfaz física. Esto demuestra, entre otras cosas, que el Smart Meter debe poder suministrar 5 voltios a 250 mA, con una disminución de corriente máxima a corto plazo de 300 mA. El capítulo 6 describe el protocolo y los diversos campos.Con este documento en la mano y un poco de Google, pronto encontrará más información. No somos los primeros y ciertamente no los únicos que sentimos la necesidad de leer el Smart Meter.
Por ejemplo, Matthijs Kooijman ha escrito una pieza de software verdaderamente sublime para analizar los telegramas del medidor y almacenarlos en variables del tamaño de un bocado. Por supuesto que usaremos esta biblioteca. puedes el aquí descargar.
Suministros
La parte más importante del registrador DSMR es el procesador. Para ello utilizamos un ESP8266 porque, además de ser rápido y dotado de suficiente memoria, también puede comunicarse vía WiFi. Para mantener los costos bajos, asumimos una placa ESP-01 (edición negra) con 1 MB de memoria. Además, aparte de seis resistencias y tres condensadores (el C4 no es realmente necesario pero puedes añadirlo si tienes problemas para conectarte a tu red WiFi), necesitamos un transistor NPN (BC547) y un regulador de tensión (MCP1700-3302E). Para conectar el registrador DSMR al medidor inteligente, necesita un enchufe RJ12 con un trozo de cable. Compré un cable RJ12 en internet (con dos conectores macho RJ12) y lo corté por la mitad.Si no desea utilizar la PCB del registrador DSMR, también necesita una pieza de placa experimental.
Los costos totales son alrededor de € 20,-
esquema del registrador DSMR
A continuación puede ver el esquema del registrador DSMR: Registrador DSMR de esquema
En términos generales, el esquema consta de cuatro partes (la quinta, que contiene los 5 voltios y GND PWR_FLAG, es técnicamente requerida por KiCAD pero en realidad no es parte del esquema).
En primer lugar, la conexión entre el Smart Meter y el registrador DSMR. Es más fácil soldar el cable directamente al registrador DSMR, pero también puede usar un conector macho Molex. No puede conectar los conectores Molex "al revés" (eso sería molesto porque luego conecta los 5 voltios y tierra del medidor inteligente a tierra y 5 voltios del registrador DSMR respectivamente, que el ESP-01 definitivamente no sobrevivirá! ). Las conexiones en el registrador DSMR son las mismas que en el enchufe RJ12 (1 está conectado a 1, 2 a 2, etc.).
La segunda parte consiste en el regulador de voltaje que convierte los 5 voltios del Smart Meter a 3v3 para el ESP-01. Según la ficha técnica del ESP-01 normalmente usa 80mA y en picos 200-250mA. El MCP1700 utilizado puede suministrar un máximo de 250mA. Suficiente para esta aplicación.
El ESP-01 en sí tiene solo 8 conexiones. Dos para la fuente de alimentación (Vcc y GND), uno para la comunicación con el Smart Meter (TxD) y tres pines que deben estar en “high” durante el arranque (CH_PD, GPIO0 y GPIO2). Los dos últimos pines (RST y TxD) no se utilizan.
La última parte del circuito, alrededor del transistor BC547, tiene dos funciones. En primer lugar, garantiza que los datos de 5 voltios del medidor inteligente no sobrecarguen la entrada de 3,3 voltios del ESP8266. Por lo tanto, es principalmente un Level-Shifter. Pero también es un inversor que convierte la señal invertida del Smart Meter en una señal no invertida para el ESP8266.
En primer lugar, la conexión entre el Smart Meter y el registrador DSMR. Es más fácil soldar el cable directamente al registrador DSMR, pero también puede usar un conector macho Molex. No puede conectar los conectores Molex "al revés" (eso sería molesto porque luego conecta los 5 voltios y tierra del medidor inteligente a tierra y 5 voltios del registrador DSMR respectivamente, que el ESP-01 definitivamente no sobrevivirá! ). Las conexiones en el registrador DSMR son las mismas que en el enchufe RJ12 (1 está conectado a 1, 2 a 2, etc.).
La segunda parte consiste en el regulador de voltaje que convierte los 5 voltios del Smart Meter a 3v3 para el ESP-01. Según la ficha técnica del ESP-01 normalmente usa 80mA y en picos 200-250mA. El MCP1700 utilizado puede suministrar un máximo de 250mA. Suficiente para esta aplicación.
El ESP-01 en sí tiene solo 8 conexiones. Dos para la fuente de alimentación (Vcc y GND), uno para la comunicación con el Smart Meter (TxD) y tres pines que deben estar en “high” durante el arranque (CH_PD, GPIO0 y GPIO2). Los dos últimos pines (RST y TxD) no se utilizan.
La última parte del circuito, alrededor del transistor BC547, tiene dos funciones. En primer lugar, garantiza que los datos de 5 voltios del medidor inteligente no sobrecarguen la entrada de 3,3 voltios del ESP8266. Por lo tanto, es principalmente un Level-Shifter. Pero también es un inversor que convierte la señal invertida del Smart Meter en una señal no invertida para el ESP8266.
El hardware
Como prueba de concepto, soldé una primera versión del registrador DSMR en una placa experimental. DSRM - Impresión de experimentos
Aquí puedes ver el resultado final conectado al Smart Meter:
DSRM - Experimento PCB completo
Cuando resultó que todo funciona según lo planeado, diseñé una placa de circuito impreso con KiCAD.
Registrador DSRM de diseño
Instalar firmware en el ESP-01
Uno de los objetivos de diseño es que el firmware “sobre el aire” (por aire) debería poder colocarse en el registrador DSMR. Eso también fue un éxito, pero siempre habrá que poner firmware en el ESP-01 que ofrece esta funcionalidad por primera vez. Por lo tanto, no puede evitar enviar el firmware por cable al registrador DSMR al menos una vez. Además, durante el desarrollo del software, me pasó varias veces que introduje un error que hizo que la carga de OTA ya no funcionara. Incluso entonces, la única forma es enviar el firmware, sin errores, al registrador DSMR por cable.Necesitas un programador para programar el ESP-01. Otra solución económica es cargar un programa especial en un Arduino UNO y luego hacer una serie de conexiones entre el Arduino y la placa ESP-01.
La forma más fácil es comprar un “Adaptador ESP-01 a USB ” y hacer una pequeña modificación (ver mi publicación de blog).
El software
En principio, el software es muy simple (ver el ejemplo incluido con la biblioteca DMSR). Sin embargo, si desea más opciones, ¡rápidamente se convierte en todo un proyecto!El registrador DSMR utiliza las siguientes bibliotecas:
Por lo tanto, estos deben instalarse en su entorno Arduino -IDE.
También usamos el servidor FTP simple de david paiva. Esto se incluye como fuente directamente en el bosquejo DSMRlogger2HTTP (dos pestañas) y, por lo tanto, utiliza comillas (") en lugar de los signos menor y mayor que para la inclusión.
También usamos el servidor FTP simple de david paiva. Esto se incluye como fuente directamente en el bosquejo DSMRlogger2HTTP (dos pestañas) y, por lo tanto, utiliza comillas (") en lugar de los signos menor y mayor que para la inclusión.
El tratamiento especial fue necesario porque hice cambios menores en la fuente y no quiero que se pierdan en una actualización de la biblioteca.
El boceto consta de un total de ocho pestañas. El programa principal, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff y menuStuff. Puede descargar el software como un archivo ZIP desde GitHub y luego descomprima en su carpeta de proyectos Arduino . Si tiene git instalado en su computadora, también puede clonar el repositorio con el comando:
Luego creará, en el directorio donde ejecuta el comando (preferiblemente la carpeta de proyectos Arduino ), una carpeta llamada "DSMRlogger2HTTP" que contiene todo el código, incluido un directorio de "datos" para almacenar el sistema de archivos ESP. -01 (esto también contiene el archivo “index.html”).
En pseudocódigo, el programa se ve así:
El boceto consta de un total de ocho pestañas. El programa principal, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff y menuStuff. Puede descargar el software como un archivo ZIP desde GitHub y luego descomprima en su carpeta de proyectos Arduino . Si tiene git instalado en su computadora, también puede clonar el repositorio con el comando:
clon de git https://github.com/mrWheel/DSMRlogger2HTTP.git
Luego creará, en el directorio donde ejecuta el comando (preferiblemente la carpeta de proyectos Arduino ), una carpeta llamada "DSMRlogger2HTTP" que contiene todo el código, incluido un directorio de "datos" para almacenar el sistema de archivos ESP. -01 (esto también contiene el archivo “index.html”).
En pseudocódigo, el programa se ve así:
El programa principal se repite indefinidamente y consta de los siguientes pasos:
Comience a usar el DSMRlogger
Antes de poder utilizar el DSMRlogger, debe cargar no solo el firmware sino también un sistema de archivos con contenido en el DSMRlogger. Por comodidad, supondré que sabe cómo cargar el firmware y me limitaré a explicar cómo obtener el sistema de archivos en el DSMRlogger.Si no, lee mi otro blog sobre eso. hacer que el ArduinoIDE sea adecuado para el ESP8266.
En el IDE Arduino , haga clic en la siguiente opción de menú:
Carga de datos IDE Arduino
Todos los archivos que están en el directorio de “datos” de este proyecto ahora se colocan en una parte especial de la memoria del ESP-01.
¡NÓTESE BIEN! ¡La carga del sistema de archivos sale mal si tiene abierto el "Monitor en serie"!
Ahora puedes conectar el DSMRlogger al Smart Meter, pero no conoce los datos de tu red WiFi. Por lo tanto, crea un punto de acceso (AP) en el que debe registrar su computadora. Puede reconocer el AP por el nombre “ESP01‑DSMR‑xx‑”. Cuando se haya conectado al AP, inicie su navegador y vaya a como se indica en el nombre del AP. A continuación, entrará en el menú de configuración WiFi:
¡NÓTESE BIEN! ¡La carga del sistema de archivos sale mal si tiene abierto el "Monitor en serie"!
Ahora puedes conectar el DSMRlogger al Smart Meter, pero no conoce los datos de tu red WiFi. Por lo tanto, crea un punto de acceso (AP) en el que debe registrar su computadora. Puede reconocer el AP por el nombre “ESP01‑DSMR‑xx‑
configuración wifi
Punto de acceso de configuración WiFi
Haga clic en el botón [Configurar WiFi], después de lo cual aparecerá una página como la que se muestra a la derecha.
En esta página, seleccione la red WiFi que le pertenece e ingrese la contraseña. Luego presione el botón [guardar].
Si todo ha ido bien, verás el siguiente texto:
En esta página, seleccione la red WiFi que le pertenece e ingrese la contraseña. Luego presione el botón [guardar].
Si todo ha ido bien, verás el siguiente texto:
Confirmación WiFi guardado
El DSMRlogger ahora se reiniciará y se conectará a su red WiFi. Durante el inicio, puede ver desde el LED azul lo que está haciendo el DSMRlogger
1. 3 destellos lentos - inicio inicial
2. 5 parpadeos rápidos - conectado a la red WiFi
3. Después de eso, el LED azul parpadea cada vez que se procesa un nuevo telegrama
Si el LED permanece encendido después de los primeros tres destellos lentos, el DSMRlogger no pudo conectarse a su red WiFi y reiniciará su propio AP. Esto puede deberse a que su red no estuvo disponible temporalmente o fue difícil de alcanzar o porque no ingresó los detalles de su red WiFi correctamente. En ese caso, el DSMRlogger se reinicia automáticamente después de unos minutos e intenta volver a conectarse a su red WiFi. Este proceso se repite hasta que se establece una conexión o hasta que vuelva a ingresar los detalles de su red WiFi como se describe anteriormente.
1. 3 destellos lentos - inicio inicial
2. 5 parpadeos rápidos - conectado a la red WiFi
3. Después de eso, el LED azul parpadea cada vez que se procesa un nuevo telegrama
Si el LED permanece encendido después de los primeros tres destellos lentos, el DSMRlogger no pudo conectarse a su red WiFi y reiniciará su propio AP. Esto puede deberse a que su red no estuvo disponible temporalmente o fue difícil de alcanzar o porque no ingresó los detalles de su red WiFi correctamente. En ese caso, el DSMRlogger se reinicia automáticamente después de unos minutos e intenta volver a conectarse a su red WiFi. Este proceso se repite hasta que se establece una conexión o hasta que vuelva a ingresar los detalles de su red WiFi como se describe anteriormente.
La interfaz web de DSMRlogger
Cuando el DSMRlogger está conectado a su red WiFi, puede ir a la dirección con su navegador:http://ESP01-DSMR.local/La siguiente página aparecerá en su navegador. Los datos que ve se actualizan automáticamente.
Interfaz gráfica de usuario de DSMR
Al hacer clic en las pestañas, puede ver diferentes tipos de datos.
Resumen semanal de DSMR
sesión telnet:
Para conectarse al DSMRlogger a través de telnet, ingrese el siguiente comando en una ventana de terminal:telnet ESP01-DSMR.localDespués de lo cual puede ver en vivo lo que está haciendo el DSMRlogger. Al pulsar
DSMR Telnet
¡NÓTESE BIEN! El DSMRlogger solo puede manejar una sesión de telnet activa.
En una publicación de blog de seguimiento, le mostraré cómo usar estos datos en Home-Assistant.
API REST
Si desea utilizar los datos del Medidor Inteligente de otro programa, puede recuperarlos solicitando esta URL:http://ESP01-DSMR.local/getActual.jsonEl DSMRlogger luego devuelve una cadena json que se ve así:
>
En una publicación de blog de seguimiento, le mostraré cómo usar estos datos en Home-Assistant.
Actualice el firmware
Llega un momento en el que desea ajustar el firmware del DSMRlogger según sus propios conocimientos y necesidades.Entonces es molesto tener que caminar hasta el armario del medidor para cada ajuste para desconectar el DSMRlogger, quitar el ESP-01 del registrador y proporcionarle un nuevo firmware con un programador de su elección. Afortunadamente, no tienes que hacerlo. En el IDE Arduino , no solo puede seleccionar los puertos serie a los que está conectado el DSMRlogger. El menú de selección también contiene “Puertos de red”:
Selección de puerto IDE Arduino
En mi caso, el puerto de red “ESP01-DSMR en 192.168.12.142” es el puerto de red de mi DSMRlogger. Al seleccionar este puerto y compilar y cargar el nuevo firmware, se enviará de forma inalámbrica al DSMRlogger (¡notará que esto es incluso más rápido que con un cable USB !).
Solo asegúrese de que el firmware que cargue no contenga errores molestos. Me ha pasado varias veces que presento un error que hace que la carga de firmware Over The Air deje de funcionar (por lo general, todo el DSMRlogger deja de funcionar en tal caso), por lo que aún tenía que ir al armario del medidor...
Solo asegúrese de que el firmware que cargue no contenga errores molestos. Me ha pasado varias veces que presento un error que hace que la carga de firmware Over The Air deje de funcionar (por lo general, todo el DSMRlogger deja de funcionar en tal caso), por lo que aún tenía que ir al armario del medidor...
El kit de registrador DSRM
La versión 3 tiene la misma funcionalidad que la versión 1, pero también tiene algunas actualizaciones que facilitan la soldadura.
Opencircuit junto con Willem Aandewiel, ha creado un kit con PCB y todas las piezas necesarias para construir usted mismo este registrador DSMR.
Con este kit puede construir usted mismo el registrador DSRM en una placa de circuito impreso claramente estructurada. ¡Esto no solo ahorra tiempo, sino que también se ve mucho mejor!
Con este kit puede construir usted mismo el registrador DSRM en una placa de circuito impreso claramente estructurada. ¡Esto no solo ahorra tiempo, sino que también se ve mucho mejor!