Lecteur de compteur intelligent
Placé surDans cet article de blog, je décris comment vous pouvez facilement et pour peu d'argent fabriquer cet enregistreur DSMR (DSMR est l'acronyme de "Exigences néerlandaises relatives aux compteurs intelligents") peut faire. En développant l'enregistreur DSMR, nous voulons atteindre les objectifs suivants :
Avec ce document en main et un peu de recherche sur Google, vous trouverez bientôt plus d'informations. Nous ne sommes pas les premiers et certainement pas les seuls à ressentir le besoin de lire le Smart Meter.
Par exemple, Matthijs Kooijman a écrit un logiciel vraiment sublime pour analyser les télégrammes du compteur et les stocker dans des petites variables. Bien sûr, nous utiliserons cette bibliothèque. Tu peux lui ici Télécharger.
Si vous ne souhaitez pas utiliser le circuit imprimé de l'enregistreur DSMR, vous avez également besoin d'un morceau de carte expérimentale.
Le coût total est d'environ € 20,-
- Le matériel doit être simple et bon marché à fabriquer ;
- Le micrologiciel de l'enregistreur DSMR doit pouvoir être mis à jour "Over The Air" ;
- Un historique limité doit être stocké et conservé en interne ;
- Le logger DSMR doit être accessible via un terminal externe (telnet) ;
- Les données (historiques) doivent pouvoir être récupérées du logger DSMR via FTP pour un éventuel traitement externe ;
- L'enregistreur DSMR doit présenter les données du Smart Meter via un navigateur ;
- Les données doivent pouvoir être demandées via une API REST ;
- Les données lues doivent être faciles à traiter ultérieurement.
Technologie de compteur intelligent
Le Smart Meter envoie des données via le port P1 (RJ12) sous la forme d'un télégramme. Le fonctionnement du Smart Meter et la structure d'un télégramme sont décrits dans ce document. Le chapitre 5 est particulièrement intéressant car il décrit comment l'interface physique est construite. Cela montre, entre autres, que le Smart Meter doit être capable de fournir 5 volts à 250mA, avec une diminution du courant de crête à court terme de 300mA. Le chapitre 6 décrit le protocole et les différents champs.Avec ce document en main et un peu de recherche sur Google, vous trouverez bientôt plus d'informations. Nous ne sommes pas les premiers et certainement pas les seuls à ressentir le besoin de lire le Smart Meter.
Par exemple, Matthijs Kooijman a écrit un logiciel vraiment sublime pour analyser les télégrammes du compteur et les stocker dans des petites variables. Bien sûr, nous utiliserons cette bibliothèque. Tu peux lui ici Télécharger.
Fournitures
La partie la plus importante de l'enregistreur DSMR est le processeur. Nous utilisons pour cela un ESP8266 car, en plus d'être rapide et doté d'une mémoire suffisante, il peut également communiquer via WiFi. Pour réduire les coûts, nous supposons une carte ESP-01 (édition noire) avec 1 Mo de mémoire. De plus, à part six résistances et trois condensateurs (C4 n'est pas vraiment nécessaire mais vous pouvez l'ajouter si vous avez des problèmes de connexion à votre réseau WiFi), il nous faut un transistor NPN (BC547) et un régulateur de tension (MCP1700-3302E). Pour connecter l'enregistreur DSMR au Smart Meter, vous avez besoin d'une prise RJ12 avec un morceau de fil. J'ai acheté un câble RJ12 sur internet (avec deux connecteurs mâles RJ12) et je l'ai coupé en deux.Si vous ne souhaitez pas utiliser le circuit imprimé de l'enregistreur DSMR, vous avez également besoin d'un morceau de carte expérimentale.
Le coût total est d'environ € 20,-
Schéma de l'enregistreur DSMR
Ci-dessous, vous pouvez voir le schéma de l'enregistreur DSMR : Schéma DSMR Logger
En gros, le schéma se compose de quatre parties (la cinquième, contenant les 5 volts et GND PWR_FLAG, est techniquement requise par KiCAD mais ne fait pas réellement partie du schéma).
Tout d'abord, la connexion entre le Smart Meter et l'enregistreur DSMR. Il est plus simple de souder le câble directement sur l'enregistreur DSMR, mais vous pouvez également utiliser un connecteur mâle Molex. Vous ne pouvez pas connecter les connecteurs Molex "dans le mauvais sens" (ce serait ennuyeux car alors vous connectez respectivement les 5 volts et la masse du compteur intelligent à la masse et les 5 volts de l'enregistreur DSMR, auxquels l'ESP-01 ne survivra certainement pas ! ). Les connexions sur l'enregistreur DSMR sont les mêmes que sur la prise RJ12 (1 est connecté à 1, 2 à 2, etc.).
La deuxième partie est constituée du régulateur de tension qui convertit les 5 volts du Smart Meter en 3v3 pour l'ESP-01. Selon la fiche technique de l'ESP-01, il utilise normalement 80mA et culmine à 200-250mA. Le MCP1700 utilisé peut fournir un maximum de 250mA. Suffisant pour cette application.
L'ESP-01 lui-même n'a que 8 connexions. Deux pour l'alimentation (Vcc et GND), une pour la communication avec le Smart Meter (TxD) et trois broches qui doivent être "hautes" au démarrage (CH_PD, GPIO0 et GPIO2). Les deux dernières broches (RST et TxD) ne sont pas utilisées.
La dernière partie du circuit, autour du transistor BC547, a deux fonctions. Tout d'abord, il garantit que les données 5 volts du Smart Meter ne surchargent pas l'entrée 3,3 volts de l'ESP8266. C'est donc avant tout un Level-Shifter. Mais c'est aussi un onduleur qui convertit le signal inversé du Smart Meter en un signal non inversé pour l'ESP8266.
Tout d'abord, la connexion entre le Smart Meter et l'enregistreur DSMR. Il est plus simple de souder le câble directement sur l'enregistreur DSMR, mais vous pouvez également utiliser un connecteur mâle Molex. Vous ne pouvez pas connecter les connecteurs Molex "dans le mauvais sens" (ce serait ennuyeux car alors vous connectez respectivement les 5 volts et la masse du compteur intelligent à la masse et les 5 volts de l'enregistreur DSMR, auxquels l'ESP-01 ne survivra certainement pas ! ). Les connexions sur l'enregistreur DSMR sont les mêmes que sur la prise RJ12 (1 est connecté à 1, 2 à 2, etc.).
La deuxième partie est constituée du régulateur de tension qui convertit les 5 volts du Smart Meter en 3v3 pour l'ESP-01. Selon la fiche technique de l'ESP-01, il utilise normalement 80mA et culmine à 200-250mA. Le MCP1700 utilisé peut fournir un maximum de 250mA. Suffisant pour cette application.
L'ESP-01 lui-même n'a que 8 connexions. Deux pour l'alimentation (Vcc et GND), une pour la communication avec le Smart Meter (TxD) et trois broches qui doivent être "hautes" au démarrage (CH_PD, GPIO0 et GPIO2). Les deux dernières broches (RST et TxD) ne sont pas utilisées.
La dernière partie du circuit, autour du transistor BC547, a deux fonctions. Tout d'abord, il garantit que les données 5 volts du Smart Meter ne surchargent pas l'entrée 3,3 volts de l'ESP8266. C'est donc avant tout un Level-Shifter. Mais c'est aussi un onduleur qui convertit le signal inversé du Smart Meter en un signal non inversé pour l'ESP8266.
Le matériel
Comme preuve de concept, j'ai soudé une première version du logger DSMR sur une carte expérimentale. DSRM - Impression expérimentale
Ici vous pouvez voir le résultat final connecté au Smart Meter :
DSRM - Circuit imprimé d'expérience terminé
Lorsqu'il s'est avéré que tout fonctionnait comme prévu, j'ai conçu une carte de circuit imprimé avec KiCAD.
Concevoir un enregistreur DSRM
Installer le firmware sur l'ESP-01
L'un des objectifs de conception est que le micrologiciel "À propos de l'air» (par voie aérienne) devrait pouvoir être mis sur l'enregistreur DSMR. Cela a également été un succès, mais vous devrez toujours mettre un firmware sur l'ESP-01 qui offre cette fonctionnalité pour la première fois. Par conséquent, vous ne pouvez pas éviter d'envoyer au moins une fois le micrologiciel via une voie câblée à l'enregistreur DSMR. De plus, lors du développement du logiciel, il m'est arrivé plusieurs fois d'introduire un bug qui faisait que l'upload OTA ne fonctionnait plus. Même dans ce cas, le seul moyen est d'envoyer le micrologiciel, sans bogue, à l'enregistreur DSMR par fil.Vous avez besoin d'un programmateur pour programmer l'ESP-01. Une autre solution peu coûteuse consiste à charger un programme spécial dans un Arduino UNO, puis à établir un certain nombre de connexions entre l' Arduino et la carte ESP-01.
Le moyen le plus simple est d'acheter un "adaptateur ESP-01 vers USB " et de faire une petite modification (voir mon article de blog).
Les logiciels
Dans son principe, le logiciel est très simple (voir l'exemple fourni avec la librairie DMSR). Cependant, si vous voulez plus d'options, cela devient vite tout un projet !L'enregistreur DSMR utilise les bibliothèques suivantes :
Ceux-ci doivent donc être installés dans votre environnement Arduino -IDE.
Nous utilisons également le simple serveur FTP de David Païva. Ceci est inclus en tant que source directement dans l'esquisse DSMRlogger2HTTP (deux onglets) et vous utilisez donc des guillemets (") au lieu des signes inférieur et supérieur à pour l'inclusion.
Nous utilisons également le simple serveur FTP de David Païva. Ceci est inclus en tant que source directement dans l'esquisse DSMRlogger2HTTP (deux onglets) et vous utilisez donc des guillemets (") au lieu des signes inférieur et supérieur à pour l'inclusion.
Le traitement spécial était nécessaire car j'ai apporté des modifications mineures à la source et je ne veux pas qu'elles soient perdues lors d'une mise à jour de la bibliothèque.
L'esquisse se compose d'un total de huit onglets. Le programme principal, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff et menuStuff. Vous pouvez télécharger le logiciel sous forme de fichier ZIP à partir de GitHub puis décompressez dans votre dossier de projets Arduino . Si vous avez installé git sur votre ordinateur, vous pouvez également cloner le référentiel avec la commande :
Il va alors créer, dans le répertoire où vous lancez la commande (de préférence le dossier des projets Arduino ), un dossier nommé « DSMRlogger2HTTP » contenant tout le code, dont un répertoire « data » pour stocker le système de fichiers ESP-01 (ceci aussi contient le fichier « index.html »).
En pseudo code le programme ressemble à ceci :
L'esquisse se compose d'un total de huit onglets. Le programme principal, FTPserver.cpp, FTPserver.h, SPIFFSstuff, TimeStuff, UpdateHTML, WiFiStuff et menuStuff. Vous pouvez télécharger le logiciel sous forme de fichier ZIP à partir de GitHub puis décompressez dans votre dossier de projets Arduino . Si vous avez installé git sur votre ordinateur, vous pouvez également cloner le référentiel avec la commande :
git clone https://github.com/mrWheel/DSMRlogger2HTTP.git
Il va alors créer, dans le répertoire où vous lancez la commande (de préférence le dossier des projets Arduino ), un dossier nommé « DSMRlogger2HTTP » contenant tout le code, dont un répertoire « data » pour stocker le système de fichiers ESP-01 (ceci aussi contient le fichier « index.html »).
En pseudo code le programme ressemble à ceci :
Le programme principal est répété à l'infini et se compose des étapes suivantes :
Commencez à utiliser le DSMRlogger
Avant de pouvoir utiliser le DSMRlogger, vous devez télécharger non seulement le micrologiciel, mais également un système de fichiers avec du contenu sur le DSMRlogger. Par souci de commodité, je supposerai que vous savez comment télécharger le micrologiciel et me limiterai à expliquer comment obtenir le système de fichiers sur le DSMRlogger.Sinon, lisez mon autre blog à ce sujet rendre l'ArduinoIDE adapté à l'ESP8266.
Dans l'IDE Arduino , cliquez sur l'option de menu suivante :
Téléchargement de données IDE Arduino
Tous les fichiers qui se trouvent dans le répertoire "data" de ce projet sont maintenant placés dans une partie spéciale de la mémoire de l'ESP-01.
NB ! Le téléchargement du système de fichiers se passe mal si vous avez ouvert le "Serial Monitor" !
Vous pouvez maintenant connecter le DSMRlogger au Smart Meter, mais il ne connaît pas les données de votre réseau WiFi. Il crée donc lui-même un point d'accès (AP) auquel vous devez enregistrer votre ordinateur. Vous pouvez reconnaître le point d'accès par le nom « ESP01‑DSMR‑xx‑ ». Lorsque vous êtes connecté à l'AP, démarrez votre navigateur et accédez à comme indiqué dans le nom de l'AP. Vous entrerez alors dans le menu de configuration WiFi :
NB ! Le téléchargement du système de fichiers se passe mal si vous avez ouvert le "Serial Monitor" !
Vous pouvez maintenant connecter le DSMRlogger au Smart Meter, mais il ne connaît pas les données de votre réseau WiFi. Il crée donc lui-même un point d'accès (AP) auquel vous devez enregistrer votre ordinateur. Vous pouvez reconnaître le point d'accès par le nom « ESP01‑DSMR‑xx‑
Paramétrage Wi-Fi
Point d'accès de configuration Wi-Fi
Cliquez sur le bouton [Configurer WiFi], après quoi une page comme indiqué à droite apparaîtra.
Sur cette page, sélectionnez le réseau WiFi qui vous appartient et entrez le mot de passe. Appuyez ensuite sur le bouton [enregistrer].
Si tout s'est bien passé, vous verrez le texte suivant :
Sur cette page, sélectionnez le réseau WiFi qui vous appartient et entrez le mot de passe. Appuyez ensuite sur le bouton [enregistrer].
Si tout s'est bien passé, vous verrez le texte suivant :
Confirmation Wi-Fi enregistrée
Le DSMRlogger va maintenant redémarrer et se connecter à votre réseau WiFi. Pendant le démarrage, vous pouvez voir à partir de la LED bleue ce que fait le DSMRlogger
1. 3 clignotements lents - démarrage initial
2. 5 clignotements rapides - connecté au réseau WiFi
3. Après cela, la LED bleue clignote à chaque fois qu'un nouveau télégramme est traité
Si la LED reste allumée après les trois premiers clignotements lents, le DSMRlogger n'a pas pu se connecter à votre réseau WiFi et redémarrera son propre point d'accès. Cela peut être dû au fait que votre réseau était temporairement indisponible ou difficile à atteindre ou parce que vous n'avez pas saisi correctement les détails de votre réseau WiFi. Dans ce cas, le DSMRlogger redémarre automatiquement après quelques minutes et essaie de se reconnecter à votre réseau WiFi. Ce processus est répété jusqu'à ce qu'une connexion soit établie ou jusqu'à ce que vous ressaisissiez les détails de votre réseau WiFi comme décrit ci-dessus.
1. 3 clignotements lents - démarrage initial
2. 5 clignotements rapides - connecté au réseau WiFi
3. Après cela, la LED bleue clignote à chaque fois qu'un nouveau télégramme est traité
Si la LED reste allumée après les trois premiers clignotements lents, le DSMRlogger n'a pas pu se connecter à votre réseau WiFi et redémarrera son propre point d'accès. Cela peut être dû au fait que votre réseau était temporairement indisponible ou difficile à atteindre ou parce que vous n'avez pas saisi correctement les détails de votre réseau WiFi. Dans ce cas, le DSMRlogger redémarre automatiquement après quelques minutes et essaie de se reconnecter à votre réseau WiFi. Ce processus est répété jusqu'à ce qu'une connexion soit établie ou jusqu'à ce que vous ressaisissiez les détails de votre réseau WiFi comme décrit ci-dessus.
L'interface Web DSMRlogger
Lorsque le DSMRlogger est connecté à votre réseau WiFi vous pouvez vous rendre à l'adresse avec votre navigateur :http://ESP01-DSMR.local/La page ci-dessous apparaîtra alors dans votre navigateur. Les données que vous voyez sont automatiquement actualisées.
Interface graphique DSMR
En cliquant sur les onglets, vous pouvez afficher différents types de données.
Aperçu hebdomadaire du DSMR
session telnet :
Pour vous connecter au DSMRlogger via telnet, saisissez la commande suivante dans une fenêtre de terminal :telnet ESP01-DSMR.localAprès quoi, vous pouvez voir en direct ce que fait le DSMRlogger. En appuyant sur
Telnet DSMR
NB ! Le DSMRlogger ne peut gérer qu'une seule session Telnet active.
Dans un article de blog de suivi, je vous montrerai comment utiliser ces données dans Home-Assistant.
API REST
Si vous souhaitez utiliser les données du Smart Meter depuis un autre programme, vous pouvez les récupérer en demandant cette URL :http://ESP01-DSMR.local/getActual.jsonLe DSMRlogger renvoie ensuite une chaîne json qui ressemble à ceci :
>
Dans un article de blog de suivi, je vous montrerai comment utiliser ces données dans Home-Assistant.
Mise à jour du firmware
Il arrive un moment où vous souhaitez ajuster le micrologiciel du DSMRlogger à vos propres idées et besoins.Il est alors ennuyeux de devoir marcher jusqu'au placard des compteurs à chaque réglage pour déconnecter le DSMRlogger, retirer l'ESP-01 du logger et lui fournir un nouveau firmware avec un programmateur de votre choix. Heureusement, vous n'êtes pas obligé. Dans l'IDE Arduino , vous ne pouvez pas uniquement sélectionner les ports série auxquels le DSMRlogger est connecté. Le menu de sélection contient également "Ports réseau":
Sélection du port IDE Arduino
Dans mon cas, le port réseau "ESP01-DSMR à 192.168.12.142" est le port réseau de mon DSMRlogger. En sélectionnant ce port et en compilant et téléchargeant le nouveau firmware, il sera envoyé sans fil au DSMRlogger (vous remarquerez que c'est encore plus rapide qu'avec un câble USB !).
Assurez-vous simplement que le micrologiciel que vous téléchargez ne contient aucun bogue gênant. Il m'est arrivé plusieurs fois d'introduire un bogue qui fait que le téléchargement du micrologiciel par voie hertzienne cesse de fonctionner (généralement, l'ensemble du DSMRlogger cesse de fonctionner dans un tel cas) de sorte que je devais encore aller dans l'armoire des compteurs...
Assurez-vous simplement que le micrologiciel que vous téléchargez ne contient aucun bogue gênant. Il m'est arrivé plusieurs fois d'introduire un bogue qui fait que le téléchargement du micrologiciel par voie hertzienne cesse de fonctionner (généralement, l'ensemble du DSMRlogger cesse de fonctionner dans un tel cas) de sorte que je devais encore aller dans l'armoire des compteurs...
Le kit enregistreur DSRM
La version 3 a les mêmes fonctionnalités que la version 1, mais comporte également quelques mises à niveau qui facilitent la soudure.
Opencircuit en collaboration avec Willem Aandewiel, a mis en place un kit avec PCB et toutes les pièces nécessaires pour construire vous-même cet enregistreur DSMR.
Avec ce kit, vous pouvez construire vous-même l'enregistreur DSRM sur un circuit imprimé clairement structuré. Cela permet non seulement de gagner du temps, mais aussi d'avoir l'air beaucoup plus agréable !
Avec ce kit, vous pouvez construire vous-même l'enregistreur DSRM sur un circuit imprimé clairement structuré. Cela permet non seulement de gagner du temps, mais aussi d'avoir l'air beaucoup plus agréable !