Remontée information Gaz via Lora (Gazpar + Adeunis Pulse + NodeRed)

Remontée information Gaz via Lora (Gazpar + Adeunis Pulse + NodeRed)

20 juin 2022 4 Par Jérôme Ferrari

Bonjour à 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

puis choisir Manage palette

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)

Voila une fois que tout cela est en place, vous pouvez cliquer sur Deploy
Si tout ce passe bien et que vous avez mis des debuggeurs, vous devriez voir apparaitre des messages au fur et à mesure de la remontée d’information

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

Cliquez dessus, verifiez maintenant qu’il est bien configuré (Activer, visible et objet parent renseignement)

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