Lecteur de compteur intelligent

Placé sur
Dans 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 :
  • 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.
Dans un article de blog de suivi, je montrerai comment nous pouvons envoyer les données à un courtier MQTT et comment configurer Home-Assistant pour présenter ces données dans Home-Assistant.


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 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.

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 DSRM - Impression expérimentale
Ici vous pouvez voir le résultat final connecté au Smart Meter :
DSRM - Circuit imprimé d'expérience terminé 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 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.
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 :

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 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 :
Paramétrage Wi-Fi Paramétrage Wi-Fi
Point d'accès de configuration 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 :
Confirmation Wi-Fi enregistrée 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.

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 Interface graphique DSMR
En cliquant sur les onglets, vous pouvez afficher différents types de données.
Aperçu hebdomadaire du DSMR 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.local
Après quoi, vous pouvez voir en direct ce que fait le DSMRlogger. En appuyant sur , vous verrez apparaître un menu avec lequel vous pourrez régler certaines affaires ménagères. Vous fermez la session telnet avec la combinaison de touches ctrl+] q (maintenez le contrôle enfoncé, appuyez sur "]", relâchez les deux et appuyez sur "q").
Telnet DSMR Telnet DSMR
NB ! Le DSMRlogger ne peut gérer qu'une seule session Telnet active.

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.json
Le 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 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...

Le kit enregistreur DSRM

N'est plus disponible
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 !
Posté par Site Internet Willem Aandewiel (1955) a une formation en électronique et en techniques numériques. Cependant, la majeure partie de sa vie professionnelle, il a travaillé dans l'automatisation où il a travaillé dans à peu près toutes les disciplines, du programmeur au chef de projet et au chef de projet. Willem a été l'un des premiers Néerlandais à posséder un micro-ordinateur (KIM-1, 1976) à une époque où le PC n'avait pas encore été inventé. Aujourd'hui, il s'occupe principalement de la conception et de la production de petits circuits électroniques à microprocesseurs. Sa «mission dans la vie» est de rendre les gens enthousiastes à l'idée de fabriquer leurs propres circuits électroniques, micro-ordinateurs et programmes.

Commentaires

The Netherlands Verkenner
Ici même problème que Joahn Krabe a écrit le 12 octobre 2019. La connexion depuis le téléphone/PC DSMR (version 4.5) fonctionne, mais les données du compteur intelligent restent secrètes, ici aussi un compteur Kamstrup 382, alimentation 5 volts fournie, sans résultat. Qu'est-ce qui ne va pas? Le compteur fonctionne avec un moniteur P1 avec le TOON. Merci pour les suggestions.
Placé sur 
The Netherlands Johan Krabbe
Bart : https://github.com/mrWheel/DSMRlogger2HTTP" rel="nofollow" target="_blank">https://github.com/mrWheel/DSMRlogger2HTTP Le fichier KiCad contient les fichiers nécessaires aux impressions, fonctionne parfaitement
Placé sur 
Belgium Bart De Pauw
Bonjour Willem, j'ai déjà cherché, également sur votre site, mais je n'ai pas trouvé si cela pouvait également être utilisé pour les télégrammes DSMR 5.0.2 P1 (dans la version actuelle). Apparemment, les compteurs numériques belges Fluvius/Eandis sont légèrement différents. alors le DSMR 4 néerlandais 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 Peut-être le moment de lancer une v5 ? Toujours prêt à aider pour les tests de versions (je suis moi-même ingénieur en électronique depuis 1992) Au fait, j'ai vu que les kits DIY n'étaient plus disponibles ? Existe-t-il un moyen de publier les fichiers du printboard afin que nous puissions les fabriquer nous-mêmes ? Merci d'avance pour ce magnifique projet (et puis j'attendrai un peu pour en démarrer un moi-même, cela ne servirait à rien après tout le travail que vous avez déjà fourni...)
Placé sur 
1
The Netherlands Wim
L'impression n'est plus disponible. Existe-t-il un autre moyen d'obtenir l'impression ? Et encore une question, vous parlez d'un ESP-01 mais vous ne parlez pas d'un ESP-01S ? Il dispose de deux fois plus de mémoire flash. S'il veut utiliser l'OTA, je pense que vous en avez besoin. Ou est-ce que je me trompe maintenant ?
Placé sur 
The Netherlands Wim Nijntjes
Question : Pourquoi n'utilisez-vous pas la broche 2 du compteur. Il est désormais connecté au 5 volts. Il peut facilement être connecté au GPIO-0/2 (optocoupleur interne) et vous avez une poignée de main. Peut-être que le FTP fonctionnera alors.
Placé sur 
Webwinkelkeur Kiyoh Trustpilot Opencircuit