Remontée information Gaz via Lora (Gazpar + Adeunis Pulse + NodeRed)
20 juin 2022Bonjour à tous,
Aujourd’hui, je vous propose un tutorial autour de la remontée d’information du compteur Gazpar de chez Engie via le réseau Lora.
Pour faire simple, le Gazpar est l’équivalent du compteur Linky de chez Enedis car il remonte les données quotidiennement afin de suivre sa consommation de la veille.
Cependant pour les futures expériences participatives de l’Observation de la Transition Energétique, nous voulions remonter les informations de ce type de compteur en temps réel afin de compléter les données remontées via l’API de Engie.
Je vous propose donc un tutorial concernant la remontée des impulsions sur les compteurs Gazpar via une liaison Lora au travers d’un Adeunis Pulse.
Nous commencerons par configurer une application TTN (The Things Network) puis nous continuerons par la configuration et l’installation du module Pulse et nous finirons par la partie décodage et historisation des données. Pour cette dernière étape, nous utiliserons NodeRed et Jeedom.
Comme d’habitude, vous pourrez retrouver les sources et la documentation en fin d’article.
0. Matériel
Un compteur Gazpar (mais cela peut aussi être fait avec les anciennes générations qui dispose d’une sortie impulsionnelle)
Un compteur PULSE de chez Adeunis (ici pour ce tutorial nous utilisons une des premières versions qui n’est pas Atex et dois donc être placé dans une zone ou dans un boitier prévu à cet effet.)
Un connecteur spécial Gazpar
Un aimant (type frigo par exemple)
1. Configuration de TTN
Une des premières choses à faire pour configurer TTN est de connaitre le DevEUI de votre PULSE. Pour cela il suffit de regarder au dos ou sur la batterie et de relever l’ID (entouré en rouge sur la photo)
Une fois cela fait, vous pouvez vous connecter à l’adresse suivante (je prends l’hypothèse que vous êtes déjà inscrit sur le site TTN):
https://eu1.cloud.thethings.network/console/
puis cliquez sur Go to applications
Cliquez sur +Add application
Maintenant donnez un nom à votre application (seules les minuscules, les chiffres et le tiret sont autorisés) puis cliquez sur Create application
Maintenant, il faut ajouter un End device, c’est à dire de créer les accès pour votre PULSE. Pour cela choisissez votre application puis cliquez sur la gauche sur End devices
Maintenant cliquez sur +Add end device
Pour la première partie on doit renseigner les caractéristiques de notre end device. Le truc pratique avec TTN c’est que pas mal de fabricant les ont déjà remplis pour leur appareils donc il suffit pour nous de rechercher le bon module.
Ci dessous la configuration qui nous intéresse.
Maintenant, dans la partie 2, il faut remplir 3 clés l’AppEUI, le DevEUI et l’AppKey
Pour cela, il y a 3 étapes:
- le DevEUI est le numéro que l’on a relevé plus haut sur le boitier de notre Pulse (attention, c’est le plus important à respecter car sinon votre compteur n’arrivera pas à se connecter)
- l’AppEUI pour ma part, j’ai pris le DevEUI est j’ai enlevé 1 sur le dernier chiffre
- l’AppKey, j’ai cliqué sur Generate
Une fois cela fait, il suffit de cliquez sur Register end device. Pensez à bien conserver toutes ces informations.
2. Programmation du module Pulse
Maintenant que TTN est opérationnel, nous pouvons passer à l’étape de programmation du module.
Pour cela il faut d’abord brancher le module en usb sur le pc (ici il s’agit d’un microusb entouré en rouge)
Lancez maintenant l’application IoT configurator
Puis cliquez sur connecter, vous devriez avoir votre PULSE qui apparait. Vous pouvez vérifier son ID sur la gauche sous la forme Identifiant réseau.
Maintenant allez dans l’onglet Configuration applicative et dans le sous-menu Global configuration, choisissez le Product Mode PRODUCTION, pour ma part j’ai choisis une Transmission period de 15 minutes afin d’être assez précis tout en conservant de l’autonomie. (10ans annoncé –> Rendez-vous pour le débrifing en 2032).
Petite astuce: afin de vérifier que tout fonctionne et que le compteur est couvert par le Lora, vous pouvez passer en mode Test et mettre 3 pour que l’information soit envoyée toutes les minutes et ainsi checker en mettant le Pulse dans le boitier du Gazpar que la transmission se fait bien)
Maintenant dans le sous-menu Channel A – configuration, mettez State a Enabled et Type sur Gas. Pour le reste vous pouvez laisser comme cela.
Pour le Channel A – leakage detection, je n’ai pas touché
J’ai désactivé le Channel B car pas utilisé
Cliquez sur Sauvegarder en bas et maintenant nous pouvons passer dans l’onglet Configuration réseau.
Dans le sous-menu General, vérifiez que l’on est en mode OTAA.
Dans le sous-menu Transmission, j’ai choisi le Spreading Factor SF7 afin d’économiser sur la batterie
Maintenant, on passe au sous-menu OTAA et renseignez l’AppEUI et l’AppKey que l’on avait généré sur TTN.
une fois cela fait, vous pouvez cliquer sur Sauvegarder et débrancher l’USB.
3. Installation du module
Maintenant que le module est configuré, nous pouvons l’installer.
La première étape est de mettre le connecteur poru le Gazpar dessus. Pour cela, il faut brancher le fil noir sur la borne 6 et le fil jaune sur la borne 7 (exemple sur la photo ci-dessous)
Une fois, cela fait, il faut passer l’aimant au niveau du dos de votre Pulse (Normalement, cela se fait quand l’electronique est dans son boitier mais l’aimant que j’avais sous la main n’était pas assez puissant).
Je vous conseille de faire cette étape 1min30 avant une heure avec un multiple de 15min (xxh00, xxh15, xxh30, xxh45) afin d’avoir des rélevés sympatiques à voir sur un graphe
Une fois que la lumière s’allume, c’est que le module est en train de se réveiller
Allez voir sur TTN si cela est bien le cas
Une fois que tout est ok, remontez le boitier de votre pulse et serrez bien le presse-étoupe puis allez au niveau de votre Gazpar. Je vous conseille de faire le branchement quand vous êtes sur qu’il n’y a pas de consommation de gaz afin de partir avec zéro impulsion.
La prise qui nous intéresse est sur le coté gauche du côté, enlevez le capuchon noir et insérez le connecteur
Vous pouvez maintenant placer le pulse dans votre boitier (ici il n’est pas encore fixé dans son boitier final hors de la zone Atex car les photos ont été prises pendant les essais)
Si tout est ok pensez à relever votre compteur, cela sera utile pour la suite.
Maintenant vous pouvez fermer le boitier et retourner sur TTN.
4. Decodage TTN
Maitenant, vérifiez que vous avez toujours les trames qui remontent toutes les 15 minutes. il va falloir les mettre en forme. Pour cela dans votre application, il faut cliquer sur Payload formatters et puis sur Uplink
Une fois cela fait, choissiez le formatter type « Custom Javascript formatter » et changer le contenu par le code suivant:
function Decoder(bytes, port) {
var payload = "";
for (var i = 0; i < bytes.length; i++) {
if (bytes[i] < 16) {
payload += "0" + bytes[i].toString(16);
} else {
payload+= bytes[i].toString(16);
}
}
return {
payload
}
}
Maintenant vous devriez avoir à chaque remonté une information Payload qui apparait
Pour checker que tout est ok, vous pouvez utiliser le site fourni par Adeunis.
Pour cela copier le payload puis allez sur https://codec-adeunis.com/decoder
Choisis Pulse dans le produit à décoder pour collez le payload et cliquez sur Décoder
Normalement vous aurez quelque chose dans ce style
Si tout est ok, on peut passer à l’étape suivante
5. Envoi via MQTT vers NodeRed
Afin de pouvoir rendre exploitable par Jeedom le payload fourni par TTN, il va falloir passer par NodeRed avant mais avant NodeRed, il faut activer le MQTT de TTN.
Pour cela, il faut cliquez dans votre application TTN sur le sous-menu Integration puis choissir MQTT
Maintenant, il suffit de cliquer sur Generate nwe API key et de la copier pour plus tard.
Copiez aussi les autres informations qui nous serons aussi utiles
6. Programmation NodeRed
Maintenant, il vous faut passer sur NodeRed (je fais l’hypothèse que vous l’avez déjà installé)
La première étape est d’installer les modules nécessaires.
Pour cela il faut cliquez en haut à gauche sur les 3 barres
Maintenant, il vous faut cliquer sur l’onglet Install et cherche adeunis
Cliquez sur le bouton install du module node-red-contrib-adeunis-codecs
Maintenant pour le debuggage, il faut que vous assembliez des blocs de la façon suivante:
Voici maintenant le détail de chaque bloc
Pour le bloc MQTT IN:
Dans le topic, remplissez de la façon suivante:
v3/iddel’applicationttn@ttn/devices/idduenddevice/up
Maintenant cliquez sur le crayon pour éditer le serveur
Dans Name donnez un nom à votre serveur (exemple « TTNGaz »)
Dans l’onglet Connection, remplissez de la façon suivante (ici on prend l’hypothèse de la version mqtt non sécurisé)
Maintenant cliquez sur l’onglet Security et mettez le username et le mot de passe généré précèdement puis
Pour le bloc function ToJson (cela sera la même pour le bloc function Encode payload qui sera supprimé au final):
Dans l’onglet On message, copier/coller le code suivant (dans productType pensez à bien mettre pulse ou le nom de l’équipement Adeunis que vous intégré)
msg.productType = "pulse"
msg.payload = msg.payload.uplink_message.decoded_payload.payload;
return msg;
Pour le bloc Adeunis-codecs, il n’y a rien à faire
Pour le bloc change node set msg.retain, vérifiez que vous avez les informations suivantes:
Pour le bloc MQTT OUT, renseignez les informations de votre serveur MQTT Jeedom (voir mes autres articles pour voir comment en installer un)
Maintenant, il ne nous reste plus qu’à s’occuper de la partie Jeedom
7. Programmation Jeedom
Je pars sur l’hypothèse que vous avez déjà installé un broker MQTT sur votre Jeedom. (vous pouvez aller voir un précédent article sur le sujet (https://miniprojets.net/index.php/2020/12/19/une-alternative-diy-au-linky-pzem004t-wemos-tasmota-mqtt/)
Dans jeedom, on va inclure dans jMQTT les informations reçues par NodeRed
Pour cela, on va dans jMQTT
Puis on choisi le broker de notre Jeedom et on appui sur le mode inclusion (cela est à faire 2/3 min avant la prochaine remontée)
A la remontée d’information, normalement vous devriez voir apparaitre un nouvel équipement
Puis Cliquez sur l’ongler Commandes, vous devriez avoir quelque chose de similaire.
Maintenant cliquez sur le bouton JSON en haut à droite et cherchez les informations qui vous intéresse mettez leur un nom et sauvegardez.
Maintenant que l’on récupère le nombre d’impulsions receuillis par le Pulse, on va pouvoir créé l’index du compteur afin de coller avec la réalité.
Pour cela, il faut aller dans le plugin Virtuel
Une fois dedans cliquez sur Ajouter
Donnez un nom à votre compteur
Activez le, rendez le visible et mettez le sous un objet parent.
Maintenant dans l’onglet commande ajoute une information virtuelle
Donnez lui un nom, puis dans valeur mettez la formule suivante:
index relevé sur le compteur + (le nombre d’impulsion du channel A *0.01)
exemple ici valeur: 3466.443+(#[Compteur Gaz][Adeunis_Pulse][Compteur_Impulsion_Channel_A]#*0.01)
Sauvegardez et vous pouvez maintenant voir votre compteur comme s’il était chez vous.
8. Sources
Présentation du pulse https://adeunis.freshdesk.com/fr/support/solutions/folders/22000173251
Décoder de trame Adeunishttps://codec-adeunis.com/decoder
Forum d’aide où j’ai trouvé pas mal de réponse https://www.thethingsnetwork.org/forum/t/adeunis-codec-decoder/26805/12
codec qui m’ont servi à retrouver les noms des équipements pour NodeRed
Voilà j’espère que ce tutoriel vous sera utile et je vous souhaite une bonne continuation,
Jérôme
Pourquoi ne pas avoir directement utilisé directement l’option « LoRa Node for TTN » proposé par la Jeedom ?
Bonjour,
Je n’ai pas choisi cette option car le détramage était plus simple via NodeRed et ne nécessite pas non plus d’acheter un plugin supplémentaire.
Bonne journée,
Jérôme
Très bon tutoriel toutefois vous êtes en zone atex zone 1. Il faut donc utiliser une électronique compatible gazpar en zone 1. Adeunis ou watteco propose ce type de produit pulse.
Bonjour, merci de l’avoir précisé. Je vais faire la modification de l’article car il s’agit bien là d’un ancien modèle qui n’est pas Atex.
Je l’avais placé proche du compteur pour les photos.
Ce pulse a été placé par la suite hors de la zone Atex dans un boitier externe prévu à cet effet.
Encore merci et bonne journée,
Jérôme