Table des matières
Après avoir réussi à mesurer la quantité de mazout présente dans mes deux cuves, j’ai tenté de continuer sur ma lancée avec un capteur infrarouge TRCT5000. L’idée est d’utiliser ce capteur infrarouge pour tenter de mesurer la consommation d’eau et la consommation/production d’électricité.
Ayant été content des technologies ESP88266 et du firmware ESP Easy, c’est tout naturellement vers ces dernières que je me suis tourné pour utiliser le TRCT5000. Pour quelques euros, on arrive avec ces technologies à se composer un capteur souvent très efficace. Si vous ne connaissez pas ces technologies, je vous conseille de lire tout d’abord cet article.
Le double objectif avec les TRCT5000
Les TRCT5000 sont, à la base, des capteurs infrarouges de proximité (maximum 2,5cm) que l’on utilise pour détecter des objets ou pour suivre une ligne. Le capteur renvoie, sur la broche numérique, la valeur de 0 ou 1 indiquant si un objet est détecté ou pas. Du point de vue pratique, il émet une lumière infrarouge et vérifie si elle est réfléchie.
Un potentiomètre permet de régler la sensibilité.
Sur internet, j’ai vu quelques personnes détourner son usage premier pour mesurer la consommation d’eau et d’électricité.
La consommation d’électricité sur un compteur électrique
La première idée de détournement du capteur TRCT5000 est de capter les impulsions infrarouges émises par certaines compteurs électriques.
J’ai, à la maison, deux compteurs électriques. Le premier, placé par la société ORES, est un compteur Landis+Gyr Dialog ZMD 310. Ce compteur est hélas enfermé dans un coffret scellé et placé à une distance supérieure à 25mm de la coque extérieure. Quoiqu’il puisse donc émettre, le TRCT5000 ne sera pas en mesure de le capter.
Le second capteur, qui a été placé avec mes panneaux photovoltaïques, est un capteur EDMI Mk10A. Lui est par contre totalement accessible.
On pourrait être tenté de penser que les deux lumières LED rouges, près desquelles est inscrit “1000 imp/kWh” et “1000 imp/kvarh” sont des émetteurs d’impulsion. Il faut toutefois être prudent. Ce n’est pas parce que l’on voit une lumière rouge clignoter qu’on est en présence d’émissions infrarouges. Les émissions infrarouges ne font en effet pas partie du spectre de la lumière visible. Mais certains vendeurs placent un émetteur infrarouge à côté de cette lumière. Et dans ce cas, on peut tenter de compter les impulsions émises .
Par acquis de conscience, j’ai donc placé le capteur infrarouge TRCT5000 devant la LED d’impulsions, prenant bien soin de masquer la diode émettrice du capteur (le but est de capter les impulsions émises par le compteur, pas celle du capteur lui-même). Hélas, comme craint, cela n’a pas fonctionné.
Sur mes deux compteurs, il y a une interface optique qui implémente la norme IEC 62056-21. Sur le langis+Gyr ZMD 310, elle se trouve en haut à droite mais est inaccessible à cause des scellés de la société distributrice d’électricité ORES.
Sur le EDMI Mk10a, un compteur qui est ma propriété, cette interface est par contre accessible. Mais il s’agit ici d’une véritable interface implémentant la norme IEC 62056-21. Ce n’est pas un simple émetteur d’impulsions infrarouges. On peut donc interroger son compteur au travers une sonde optique infrarouge comme celle-ci.
Mais communiquer avec le compteur nécessite d’implémenter un protocole. Cela convient donc mieux pour un usage à travers un PC connecté au compteur (et un logiciel ad hoc, parfois payant, pour récupérer les informations) ou pour une personne expérimentée qui développera sa solution à travers des protocoles comme Modbus ou RS485. A noter, la sonde optique permettant l’interaction avec le compteur est assez couteuse, souvent au moins 45 euros.
Sur internet, on trouve quelques personnes qui sont parvenues à utiliser un capteur infrarouge TRCT5000 avec un compteur électrique. Mais, quand on regarde bien les quelques photos postées, on constate qu’ils essaient en fait de compter le nombre de tour que fait le disque, en repérant probablement le passage de la partie noire/métallique du disque.
Aucun de mes deux compteurs ne dispose d’un tel disque. Les compteurs récents en sont en général d’ailleurs dépourvus.
La consommation d’eau sur le compteur DHV2000 de la société DH Metering (installé par la SWDE)
La seconde idée de détournement du TRCT5000 est de l’utiliser pour mesurer la consommation d’eau. Il existe une multitude de compteur d’eau. En Belgique, avec le fournisseur SWDE, le modèle DHV2000 a été installé chez moi. C’est dommage, vraiment, que la SWDE installe ce genre de compteurs. Elle aurait pu proposer, plutôt, un compteur sur lequel on peut venir facilement brancher un capteur à effet hall. Mais elle ne l’a pas fait et, en outre, ne permet pas non plus qu’on change de compteur pour un qui proposerait cette solution (même moyennant paiement).
Sur internet circule cette idée consistant à repérer le passage du demi-disque métallique en installant un capteur dont le signal serait réfléchi quand le disque métallique est présent et dont le signal ne serait pas réfléchi quand le disque est absent.
C’est cette option que je vais développer dans la suite de cet article.
L’installation du firmware ESP Easy
J’avais déjà expliqué, dans mon article précédent, comment installer le firmware ESP Easy sur l’ESP8266 et comment configurer l’ESP8266. Je vous renvoie donc vers cet article pour les premières étapes et je suppose ici qu’une version Mega a été installée et est opérationnelle.
Etape 5: Brancher le capteur TRCT5000
A cette étape, il convient de connecter physiquement le capteur infrarouge. Pour les branchements, j’utilise des câbles Elegoo.
On branche des PINs de l’ESP8266 avec des PINs du capteur TRCT5000 à l’aide de ces câbles. Le ESP8266 est un microcontrôleur dont certaines PINs ont une fonction prédéfinie qu’on ne peut pas changer (on songe à l’alimentation VIN, la masse GND, le reset,…). Mais, et c’est là toute la force, certaines PINs sont ce qu’on appelle GPIO c’est-à-dire “General Purpose Input/Output.” Ces PINs GPIO n’ont pas de fonctions spécifiques et peuvent être paramétrées. Il faut bien repérer quelles sont les PINs GPIO et les autres sur le schéma de son ESP8266. Le mien, fourni par le vendeur AZ Delivery, indiquait ceci:
Il y a trois câbles à connecter: les deux premiers sont des PINs prédéfinies pour l’alimentation. Etant en 3,3V, j’ai donc pris GND et 3.3V (en bas à droite sur l’image ci-dessus). L’autre PIN est à choisir parmi les PINs GPIO afin de récupérer les impulsions du capteur. J’ai choisi D5 (GPIO14).
Le câblage donne donc
ESP8266 3.3V -> TRCT5000 VCC
ESP8266 Gnd -> TRCT5000 Gnd
ESP8266 D5 -> TRCT5000 D0
Etape 6: Configurer le capteur TRCT5000 sur le ESP8266
1. Dans le navigateur internet à l’URL de l’ESP8266, cliquer sur “Devices” et appuyer sur “Add”
2. Toute une série de capteurs prédéfinis existe (c’est l’avantage du firmware ESP Easy). Il faut choisir le capteur “Generic – Pulse counter” et cliquer sur le bouton “Submit”.
3. Sur l’écran de configuration du capteur, introduire les paramètres suivants:
- Choisir un nom
- Cocher “Enabled”
- GPIO -> Pulse : choisir la pin D5 puisque c’est celle là qu’on a branché et donc prendre “GPIO-14 (D5)
- Debounce Time (mSec): indiquer la période de temps pendant laquelle le capteur ne doit pas envoyer d’impulsions après avoir détecté quelque chose. Cela permet de ne pas avoir d’impulsions multiples pour une même détection. La valeur généralement admise est de 100 msec. Mon disque métallique de compteur tournant peu rapidement, j’ai augmenté à 200 sec
- Counter Type : Choisir Delta/Total/Time pour avoir les impulsions détectées, le temps écoulé depuis l’impulsion précédente et le nombre total d’impulsion. Un message d’avertissement indique que le “Total Count” n’est pas persistant. Cela signifie qu’en cas de coupure de courant, le compteur se remet à zéro. Il faut donc stocker le total des impulsions autre part (dans Jeedom en ce qui me concerne).
- Mode Type: FALLING. Pour ce paramètre, les modes de détection possibles sont expliqués dans la documentation de ESP Easy:
LOW
= count when signal go from not low to low (0.8+V to 0.8-V)
CHANGE
= count on signal being changed, low to high (0.8-V to 2.4+V) or high to low (2.4+V to 0.8-V)
RISING
= count if signal is rising, from low to not low (0.8-V to 0.8+V)
FALLING
= count if signal is falling, from high to not high (2.4+V to 2.4-V)
- En bas à droite, je vous conseille de mettre 0 pour “Decimals” puisque des fractions d’impulsions n’ont aucun sens.
- Cliquer sur le bouton “Submit” en bas de l’écran pour sauver le tout.
Etape 7: C’est fini
Voilà, c’est terminé. On voit logiquement les pulsations détectées dans l’interface web à savoir ici 1865 (en vert à droite sur l’image)
Pour être sûr, il est prudent de faire un petit étalonnage afin de vérifier que les pulsations détectées correspondent à la consommation sur le compteur. Relevez donc régulièrement les chiffres de consommation du compteur et comparez les aux mesures de pulsation du compteur.
La remontée des mesures dans Jeedom
C’est le plugin Jeedom ESPeasy, gratuit, qui va gérer la remontée des mesures des capteurs dans Jeedom. Ce plugin se trouve sur le market officiel de Jeedom.
Après l’avoir installé, il faut l’activer et installer les dépendances. En bas de l’écran, dans la partie “configuration”, on voit les paramètres qu’il faut reporter dans le module ESP8266.
On se reconnecte donc, via un navigateur internet, au module ESP8266 pour le configurer (comme on l’a fait précédemment). On clique cette fois sur “Controllers” et puis sur “Add”.
Les valeurs à introduire sont:
- Generic HTTP
- Controlleur IP : l’adresse IP de Jeedom (qui est aussi celle que l’on peut lire dans “IP Controleur à saisir dans ESPeasy (onglet config)” sur la page de configuration du plugin Jeedom ESPEasy)
- Controlleur Port : 8121 (qui est aussi le numéro que l’on peut lire dans “Port Controleur à saisir dans ESPeasy (onglet config)” sur la page de configuration du plugin Jeedom ESPEasy)
- Controlleur Publish (plus bas dans l’écran): device=%sysname%&taskid=%id%&cmd=%valname%&value=%value% (qui est aussi ce qu’on voit sur la page du plugin)
- Cocher la case “Enabled”
Si vous vous arrêtez ici, vous ne verrez rien dans Jeedom. J’ai perdu pas mal de temps à comprendre pourquoi. Il faut encore remplir une dernière étape au niveau du capteur. Il faut cliquer sur “Devices”, cocher la case “Send to Controlleur” et cliquer sur le bouton “Submit” pour sauver les changements. Si vous avez plusieurs ESP8266 / capteurs, indiquez bien un IDX différent pour chacun.
Par mesure de précaution, je vous conseille de redémarrer votre ESP8266.
Vous pouvez maintenant retourner dans Jeedom : Plugins / Protocole Domotique / ESPeasy
Cliquer sur le bouton “+ Inclusion”. Un équipement, correspondant au capteur, devrait apparaitre (“Compteurs” ici).
Il faut configurer cet équipement en cliquant dessus, en lui donnant un nom, en cochant “Activer” et “Visible” et en lui attribuant une pièce (via Objet parent). On peut aussi choisir “Compteur” comme “Catégorie de l’espeasy”.
Au niveau des commandes, on voit les trois commandes configurées sur l’ESP8266 à savoir Count, Total et Time (les trois autres commandes visibles ici sont en fait celles d’un second capteur TRCT5000 qui est utilisé avec le même ESP8266 mais sur une GPIO différente) :
Si on se rend dans le Dashboard de Jeedom, on voit l’information du capteur de pulsation TRCT5000:
Hélas, tout ne fonctionne pas toujours comme on veut
Pour être honnête et complet, la mesure n’est pas stable. Tout d’abord, le Mode Type choisi (RISING, FALLING ou CHANGE) semble sans aucune incidence sur la détection des pulsations (Note : Le Mode Type LOW, par contre, ne détecte rien du tout). Quelque soit le Mode Type choisi, j’ai toujours environ trois pulsations par tour de disque métallique (par litre donc). C’est un problème rencontré par d’autre internaute et qui semble ouvert depuis des années : https://github.com/letscontrolit/ESPEasy/issues/2366
On pourrait être tenté de penser que ce n’est qu’un problème de double ou de triple comptage et qu’il suffit de diviser par deux ou par trois. Hélas non car il y a en plus des mesures erronées qui s’ajoutent. Parfois il y a un emballement non justifié dans le nombre de pulsations détectées.
Certains internautes supposent que cela se produit quand le disque s’arrête de tourner à une limite de détection-non détection du capteur. D’autres invoquent le fait que le capteur est très sensible et se trouve perturbé par des signaux infrarouges provenant du soleil par exemple. J’ai essayé de construire un cache en bois pour limiter les perturbations extérieures mais cela n’a pas amélioré la situation.
Conclusions
Je pense qu’il faut éviter le capteur TRCT5000 pour les mesures de consommation des compteurs d’eau ou d’électricité et qu’il ne faut l’utiliser que pour son usage initial.
Certes certains sont parvenus à l’utiliser quand même pour mesurer les consommations mais, pour ceux là, le système est très sensible et risque de se détraquer à la moindre petite secousse.
Guy Daelen
bonjour,il semble ne pas y avoir d’hystérésis sur ce module ,j’essayerais une résistance (1Mohms ou peut etre plus ? a tester) entre les bornes 1 et 3 du LM393d (entre les bornes des résistances de 10k qui ne sont pas au vcc , c’est pareil )
ObjetsConnectesAdmin
Merci pour le conseil
Ju Pio
Merci beaucoup pour ton article ! Je galérais depuis plusieurs jours sans trouver de solution avec Arduino IDE, puis j’ai adapté la solution ESPEasy que tu propose à mon montage et tout semble fonctionner. Pour information j’utilise un capteur CNY70 branché sur un inverseur trigger de schmitt que j’ai collé sur la roue métallique de mon compteur d’eau et la fiabilité semble très bonne, pourvu que ça dure !
ObjetsConnectesAdmin
Merci pour ce gentil commentaire. Je suis content de lire que cela a pu servir.
seretti
Bonjour,
J’ai une question concernant le compteur total.
Quel est la solution pour la stocker dans jeedom?
L’idee étant de ne pas perdre la valeur Total en cas de coupure de courant.
Merci
ObjetsConnectesAdmin
Bonjour. En général, on utilise un virtuel (plugin à installer) et on crée, dans le virtuel, une information virtuelle. On coche bien la case “historiser” est voir : la valeur est toujours sauvée. Mais, en cas de coupure de courant, vous aurez 0 et votre virtuel passera à 0. Vous pourrez toutefois retrouver l’ancien total dans l’historique. Ce que je fais, avec mes capteurs, c’est que je calcule tous les soirs, par un scénario, la consommation. Et c’est cette consommation par jour que je place dans le virtuel. Le jour où le courant se coupe, soit je corrige manuellement soit je me dis que ce n’est pas grave d’avoir perdu une consommation pour un seul jour. Vous pouvez lire mon article sur le suivi de la consommation d’eau, le principe y est décrit. Bonne journée
seretti
Merci pour ce retour