PiggyMeter
Cet article vous montre comment construire un appareil pour lire à distance les données d'un compteur électrique (ou de tout appareil avec une interface compatible).
Il utilise des composants largement disponibles, des logiciels open source et est compatible avec les logiciels de domotique populaires, Home Assistant.
INFO
Un kit pour assembler un appareil fonctionnel est disponible à l'achat sur Tindie : PiggyMeter KIT.
Caractéristiques
- Prend en charge les protocoles basés sur IEC62056-21
- Prend en charge le protocole SML passif en utilisant le composant natif ESPHome
- Plusieurs compteurs : énergie, eau, thermique, et plus
- Utilise ESPHome open source
- Communication sans fil via Wi-Fi
- S'intègre avec Home Assistant
- Serveur web optionnel
- Matériel bon marché ESP32-C3 ou ESP32-S2
- Conception de boîtier disponible pour impression 3D
Il prend en charge les compteurs compatibles avec la norme IEC62056-21 qui fonctionne en modes A, B, C, D (mais pas E). Pour plus de détails, voir composant IEC 62056-21.
Notez qu'il existe de nombreuses variations du protocole. Bien que le compteur puisse utiliser la même interface optique, le format de la trame de données pourrait être différent.
De plus, il prend en charge les compteurs qui utilisent le protocole SML (Smart Message Language) en utilisant le composant SML d'ESPHome.
WARNING
Les normes DLMS, M-Bus et ANSI C12.18/19 ne sont pas prises en charge par le logiciel.
Comment vérifier si le compteur est pris en charge ?
Le terme IEC 62056-21 est utilisé pour plusieurs protocoles (avec la même couche matérielle mais un encodage de données différent). L'appareil prend en charge les compteurs qui fournissent des données encodées en ASCII, quelque chose comme ceci :
console
1-0:15.8.1(00000009999.567*kWh)
1-0:15.8.2(00000000000.000*kWh)
1-0:15.8.3(00000000000.000*kWh)
1-0:15.8.4(00000000000.000*kWh)
Le compteur doit être compatible avec la Norme Internationale IEC 62056-21:2002.
Pour le protocole SML, recherchez le logo SML sur le compteur ou consultez le manuel. Le composant ESPHome ne prend en charge que le mode passif, il n'envoie aucune requête au compteur. Dans ce mode, le compteur envoie des données toutes les quelques secondes.
Compteurs signalés comme fonctionnant avec PiggyMeter
La liste est créée sur la base des rapports des utilisateurs. Aucune garantie qu'elle soit exacte.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D via composant SML
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
INFO
N'hésitez pas à envoyer un email à info@aquaticus.info si vous connaissez un compteur qui fonctionne avec PiggyMeter mais qui n'est pas listé ci-dessus.
Logiciel alternatif
Le matériel PiggyMeter peut fonctionner avec de nombreux compteurs différents utilisant une interface optique. Cependant, le logiciel ne prend actuellement en charge qu'une seule norme, limitant pratiquement la gamme de compteurs pris en charge.
Vous pouvez essayer d'utiliser un logiciel alternatif qui pourrait ajouter la prise en charge de différents compteurs. Il est important de noter qu'il n'y a aucune garantie qu'il fonctionnera parfaitement avec PiggyMeter. Pour obtenir de l'aide, veuillez contacter l'auteur original.
- Module DLMS/COSEM Esphome https://github.com/viric/esphome-ziv
Liste des matériaux
Pièce | Description |
---|---|
CPU | Wemos C3 ou S2 Mini https://www.wemos.cc/en/latest/ |
Interface optique | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×broche 1×4 | Pas de 2,54 mm ; la partie en plastique doit avoir une hauteur de 8,5 mm |
Aimant annulaire | ⌀30/⌀15×2mm |
Boîtier | Boîtier imprimé en 3D https://github.com/aquaticus/piggymeter_case |
Rondelle | Rondelle imprimée en 3D https://github.com/aquaticus/piggymeter_case |
Couvercle | Couvercle arrière imprimé en 3D https://github.com/aquaticus/piggymeter_case |
Carte CPU
Vous avez besoin d'une carte avec une puce Espressif installée et un brochage compatible Wemos/Lolin. Le facteur clé est l'emplacement de 4 broches : GND
, VCC
, TX
et RX
.
La taille du circuit imprimé est également critique. Le boîtier imprimé en 3D correspond uniquement aux cartes (ou leurs clones) listées ci-dessous :
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
En théorie, vous pouvez utiliser n'importe quelle autre carte CPU avec un brochage compatible, notamment l'ESP32 et l'ESP8266 D1 mini. Mais dans ce cas, vous devez concevoir votre propre boîtier et modifier un peu les fichiers de configuration (type de carte et broches du port série).
Interface optique
Un compteur utilise une interface optique compatible avec la norme IEC62056-21, communiquant avec une sonde via une diode infrarouge et un phototransistor.
L'interface est connectée à l'un des ports série de la carte CPU. Bien sûr, vous avez également besoin de VCC et GND.
Soudez 2 broches d'en-tête. Vous devez utiliser une broche d'en-tête de 8,5 mm de hauteur. La conception du boîtier s'adapte à cette hauteur, garantissant un ajustement correct. Si la hauteur dépasse cette dimension, fermer le couvercle peut poser des problèmes.
Boîtier
Téléchargez les fichiers pour imprimante 3D depuis https://github.com/aquaticus/piggymeter_case. Utilisez la version V5 pour le dernier design.
Le boîtier se compose de trois composants :
- le boîtier principal,
- une rondelle,
- et un couvercle.
Il existe trois fichiers STL distincts disponibles pour chaque composant, ou alternativement, un seul fichier 3fm incorporant les trois éléments.
Le boîtier répond aux exigences de la norme IEC62056-21 pour la sonde optique.
INFO
Le boîtier a un petit loquet. Pour le fermer ou l'ouvrir, vous devez utiliser une certaine force.
Paramètres d'impression 3D recommandés
- Matériau : PLA
- Couche : 0,2 mm
- Pas de support
Assemblage
Disposez les composants dans le boîtier dans cet ordre :
- Aimant
- Rondelle
- Interface optique
- Carte CPU
- Couvercle
INFO
Regardez l'assemblage sur Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Programmation pour compteurs IEC62056-21
Commencez par installer ESPHome.
En fonction de votre carte CPU, sélectionnez le fichier de configuration approprié. De plus, effectuez des ajustements manuels de certains paramètres, tels que le mot de passe WiFi.
Obtenir les fichiers de configuration
Clonez le dépôt git avec les fichiers de configuration :
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Créer un fichier secrets.yaml
Créez un fichier secrets.yaml
dans le répertoire où se trouvent les fichiers de configuration. Ce fichier contiendra le nom du réseau WiFi et son mot de passe correspondant.
yaml
# Home Assistant API encryption key
api_key: my_home_assistant_encryption_key
# OTA password
ota_pass: my_ota_password
# WiFi network name
wifi_ssid: my_network
# WiFi network password
wifi_pass: my_password
Modifier la configuration du projet
La configuration est pré-configurée avec des points de données standard pour un compteur électrique.
N'hésitez pas à ajuster la liste, surtout si votre compteur diffère du type de compteur électrique. Consultez le composant IEC 62056-21 pour plus d'informations.
yaml
sensor:
- platform: iec62056
obis: 1-0:15.8.0
name: Absolute active energy total
unit_of_measurement: kWh
accuracy_decimals: 3
device_class: energy
state_class: total_increasing
Construire et flasher le firmware
bash
esphome run piggymeter-s2-iec62056-21.yaml
La commande ci-dessus flashe le firmware et affiche la sortie du moniteur. Par défaut, l'interface lit les données d'un compteur toutes les 1 minute.
TIP
Pour la carte ESP32-S2, vous devez appuyer sur le bouton BOOT puis sur le bouton RESET sur le PCB pour entrer en mode programmation. De plus, vous pouvez voir un message d'erreur après le flashage -- ignorez-le simplement.
log
[12:21:27][D][iec62056.component:232]: Connection start
[12:21:27][D][binary_sensor:036]: 'Meter Connection Status': Sending state ON
[12:21:28][D][switch:013]: 'Internal LED' Turning ON.
[12:21:28][D][switch:056]: 'Internal LED': Sending state ON
[12:21:28][D][iec62056.component:174]: Meter identification: '/XXX6\2YYYYY'
[12:21:28][D][iec62056.component:407]: Meter reported protocol: C
[12:21:28][D][iec62056.component:410]: Meter reported max baud rate: 19200 bps ('6')
[12:21:28][D][iec62056.component:438]: Using negotiated baud rate 9600 bps.
[12:21:29][D][iec62056.component:470]: Switching to new baud rate 9600 bps ('5')
[12:21:29][D][iec62056.component:482]: Meter started readout transmission
[12:21:29][D][iec62056.component:524]: Data: 0-0:C.1.0(12345678)
[12:21:29][D][iec62056.component:524]: Data: 0-0:1.0.0(2000-01-01 20:10:30)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.0(00000001000.657*kWh)
[12:21:29][D][iec62056.component:620]: Set sensor 'Absolute active energy total' for OBIS '1-0:15.8.0'. Value: 1000.656982
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.1(00000002000.657*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.2(00000003000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.3(00000004000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.4(00000005000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:01)
Programmation pour compteurs SML
Les premières étapes sont identiques à celles pour les compteurs IEC62056-21.
Après avoir cloné le dépôt et créé le fichier secrets.yaml
, utilisez les fichiers de configuration pour les compteurs SML.
bash
esphome run piggymeter-s2-sml.yaml
Il est probable que vous deviez ajuster le fichier de configuration pour correspondre aux points de données transmis par le compteur. Il est également utile de vérifier le débit en bauds et les bits de données du port série.
Home Assistant
L'appareil devrait être automatiquement détecté par Home Assistant. Sinon, vous pouvez l'ajouter manuellement en cliquant sur Ajouter une intégration et en sélectionnant l'intégration ESPHome.
PiggyMeter expose trois groupes d'éléments :
Déclencheur de Lecture
Ce déclencheur force PiggyMeter à lire les données d'un compteur en dehors du programme.
État de Connexion du Compteur
Le statut $1 indique que l'interface échange des données avec le compteur.
Capteurs
Voici une liste de capteurs définis dans le fichier de configuration.
Mode Autonome
PiggyMeter peut fonctionner indépendamment de Home Assistant, offrant la capacité d'activer un serveur web. Ce serveur affiche les lectures de données directement dans un navigateur web et offre une API REST simple.
Pour activer le serveur web, incluez les lignes suivantes dans le fichier de configuration :
yaml
web_server:
port: 80
Plus d'informations sur le serveur web peuvent être trouvées dans la documentation ESPHome.
Modifications
Par défaut, l'appareil récupère des données toutes les minutes, et la LED interne est allumée pendant la transmission.
Seul un nombre limité de codes OBIS est défini dans le fichier yaml de configuration. Il est fortement recommandé de modifier la liste des capteurs pour correspondre à un compteur.
Bien que les codes OBIS soient standardisés, les compteurs peuvent transmettre un nombre variable de codes. Pour vérifier les codes pris en charge par votre compteur, activez le journal DEBUG
pour le composant IEC62056-21 et analysez la sortie du journal.
Diagnostic et Problèmes IEC62056-21
Cette section est uniquement pour les compteurs IEC62056-21 (pas SML).
Après avoir flashé le firmware, l'appareil tentera de lire les données d'un compteur après environ 15 secondes. Si la transmission échoue, il réessaiera deux fois toutes les 15 secondes.
Vous pouvez ajuster ces paramètres en configurant les jetons appropriés. Consultez la documentation du composant IEC62056-21 pour plus de détails.
Il est conseillé de passer le niveau de journalisation par défaut de DEBUG
à INFO
une fois que le bon fonctionnement de l'appareil a été confirmé.
Voici les problèmes courants et leurs solutions respectives.
TIP
Assurez-vous que la sonde est solidement fixée au compteur, en alignant la flèche sur la sonde vers le haut.
Pas de transmission du compteur
log
[E][iec62056.component:268]: No transmission from meter.
Cela peut indiquer :
- Le plus souvent, l'interface n'est pas attachée à un compteur.
- L'interface n'est pas correctement alignée avec l'interface optique d'un compteur.
- Le compteur n'est pas compatible.
Assurez-vous que l'interface optique est positionnée parallèlement à la surface avant du boîtier. Si l'appareil fonctionne lorsqu'il est attaché au compteur sans le boîtier, mais ne fonctionne pas après avoir été inséré dans le boîtier, cela pourrait être le problème. Dans ce cas, vous pouvez également envisager d'agrandir les deux trous dans le boîtier.
Tous les capteurs n'ont pas reçu de données
log
[E][iec62056.component:644]: Not all sensors received data from the meter. The first one: OBIS '1-0:72.7.0'. Verify sensor is defined with valid OBIS code.
Cela peut indiquer deux problèmes :
- Le compteur ne prend pas en charge le code OBIS que vous avez configuré dans le fichier yaml. Supprimez simplement le capteur avec le code OBIS spécifique de la configuration.
- Il pourrait y avoir une faute de frappe ou une définition incorrecte du code OBIS pour le capteur dans le fichier de configuration. Vérifiez le code.
Le compteur transmet automatiquement des données mais l'appareil ne reçoit rien
Cela indique que le compteur prend en charge le mode D de l'IEC62056-21. Dans ce mode, le compteur transmet automatiquement des données toutes les quelques secondes sans nécessiter de demande spécifique. Assurez-vous que le port série est configuré pour s'aligner avec le format de transmission du compteur, généralement réglé sur 9600 7E1 ou 2400 7E1 dans la plupart des cas.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
En outre, le Mode D doit être activé manuellement en définissant mode_d=True
dans la configuration de la plateforme.
yaml
# Activer le mode D
iec62056:
mode_d: True
Erreurs de somme de contrôle
log
[E][iec62056.component:504]: Échec de la vérification BCC. Attendu 0x6b, obtenu 0x14
Cette erreur suggère des problèmes de transmission.
Généralement, la vitesse de transmission est excessivement élevée. Réduire le débit en bauds maximal devrait aider.
yaml
iec62056:
baud_rate_max : 4800
Identification du compteur reçue mais pas de transmission
log
[D][iec62056.component:174]: Identification du compteur : '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Le compteur indique le mode E, qui n'est pas pris en charge. Tentative du mode C. Cela fonctionnera pour les compteurs prenant en charge à la fois le mode E et C.
[E][iec62056.component:268]: Pas de transmission du compteur.
La chaîne d'identification du compteur est reçue avec succès, mais il n'y a pas de transmission de données. De plus, le journal affiche un message indiquant, "Le compteur indique le mode E."
Le compteur fonctionne exclusivement en mode E, ce que PiggyMeter ne prend pas en charge. Par conséquent, le logiciel tente de passer le compteur en mode C, mais cette tentative échoue.
Si un compteur prend en charge à la fois le mode E et C, le système devrait fonctionner correctement.