Domotise le compteur d'eau Itron avec esp et cc1101 dans ha pour 10€

Nico Écris par Nico
  9 min de lecture

Cet Article a été vu ... fois

Domotise le compteur d'eau Itron avec esp et cc1101 dans ha pour 10€

Depuis peu la version 2022.11 de Homeassistant prend en charge le compteur d’énergie eau, il est possible de récupérer les données facilement à l’aide d’esp et ça pour 10€ environs. Dans mon cas le compteur est équipé d’un émetteur 433Mhz Itron Everblu Cyble 2.1. Ce qui permet de récupérer les données à l’aide d’un récepteur CC1101 accouplé à un esp8266/esp32 facilement. J’ai repris et modifié un référentiel complet sur github qui a été édité par psykokwak, et je félicite son travail. Ce référentiel permet de réceptionner les données et de les transférer par mqtt à homeassistant.

Prérequis

Module de développement esp8266 réputé wemos D1 mini pro avec antenne afin de capter au mieux les ondes wifi

Module esp wemos mini D1 pro avec antenne

Par Estardyn

Module de développement esp8266 réputé wemos D1 mini pro avec antenne afin de capter au mieux les ondes wifi

Carte émetteur-récepteur RF sans fil CC1101, Module d'antenne SMA 315MHZ 433MHZ 868MHZ 915MHZ, Modulation 30ma GFSK MSK

Module de carte émetteur-récepteur RF sans fil CC1101, 315/433/868/915MHZ

Par Texas Instrument

Carte émetteur-récepteur RF sans fil CC1101, Module d'antenne SMA 315MHZ 433MHZ 868MHZ 915MHZ, Modulation 30ma GFSK MSK

Préparation Arduino

Installer Arduino, étant sur linux je choisis l’appimage

Arduino Software

Installation librairies nécessaires

1. Librairie des cartes ESP8266 et ESP32

Commençons par installer la librairie de gestion des cartes esp8266 et esp32:

librairie carte esp8266 Librairie carte esp32

  • Fichier > Préférences et collez l’url ci-dessus dans URL de gestionnaire de carte supplémentaire

Installations des librairies de cartes

  • Outils > carte > gestionnaires de carte, cherchez esp8266 et esp32 et installez la dernière version Espressif
Installer librairies cartes esp8266

2. Installer la librairie espmqttclient

  • Outils > Gérer les bibliothèques, cherchez espmqttclient et installez la dernière version
Ajouter la librairie espmqttclient

Sélectionner la bonne carte dans mon cas un wemos d1 mini pro sur port usb

  1. Branchez votre controlleur esp sur USB
  2. Dans le menu déroulant ajout carte /dev/USB0, commencez par sélectionner la carte et cochez le port correspondant.
  3. Pour terminer, Donne les permissions au port usb
sudo usermod -a -G dialout #USER
sudo chmod a+rw /dev/ttyUSB0
Sélectionner la carte esp8266

Créer un nouveau sketch et importer le dossier

Methode 1: Téléchargez le git, l’extraire et le glisser dans le dossier du sketch sur l’interface Arduino, sinon déposez le dossier directement à la racine du dossier Arduino.

Methode2: En ligne de commande

cd /home/nicolas/Arduino  // placez-vous dans votre dossier arduino
git clone https://github.com/haade-administrator/watermeter2mqtt.git watermeter2mqtt
Ajouter le dossier watermeter2mqtt au sketch arduino

Connection esp866 au CC011 dans mon cas un Wemos D1 Mini

CC1101Wemos D1 miniNodeMCUESP32
VCC3v33v33v3
GOD0 (GDO0)D1, GPIO 5GPIO 5GPIO 22
CSN (SPI chip select CS or SS)D8, GPIO 15GPIO 15GPIO 5 ou GPIO 15
SCK (SPI clock)D5, GPIO 14GPIO 14GPIO 18 ou GPIO 14
MOSI (SPI MOSI)D7, GPIO 13GPIO 13GPIO 23 ou GPIO 13
GOD1 (SPI MISO)D6, GPIO 12GPIO 12GPIO 19 ou GPIO 12
GOD2 (GDO2)D2, GPIO 4GPIO 4GPIO 21
GND (ground)GGNDGND
GPIO Wemos d1 mini pin
  1. Lien image NodeMcu Esp8266 GPIO
  2. Lien image Gpio Esp32 - 30 pin
  3. Lien image Gpio Esp32 - 30 pin

Paramétrons les fichiers avant vérification

Fichier watermeter2mqtt.ino

1 Paramétrage wifi et mqtt

EspMQTTClient mqtt(
  "MyESSID",            // Your Wifi SSID
  "MyWiFiKey",          // Your WiFi key
  "mqtt.server.com",    // MQTT Broker server ip
  "MQTTUsername",       // Can be omitted if not needed
  "MQTTPassword",       // Can be omitted if not needed
  "watermetter2mqtt",      // Client name that uniquely identify your device
  1883                  // MQTT Broker server port
);

2 ligne 88-90 réglage du relevé programmé

Pour rappel ce code relève une fois par jour dans les heures ouvrés du releveur les données de consos. ci dessous j’ai réglé sur 14h UTC ce qui correspond à 15h France

// At 14:00 UTC
  if (ptm->tm_hour == 14 && ptm->tm_min == 0 && ptm->tm_sec == 0)

3 choix du relevé programmé ou à chaque mise à jour des données

Par défaut le script met à jour dès le changement de données modifier il suffit de décommenter onScheduled ligne 257 à 259 et de commenter onUpdateData

// Note: on scheduled allows you to read the information once a day, onUpdateData allows you to read each time information changes
 // onScheduled();
  onUpdateData();

4 trouver la bonne fréquence de votre emetteur CC1101

Il suffit de décommenter le code ligne 272-291

// Use this piece of code to find the right frequency.
  /*
  for (float i = 433.76f; i < 433.890f; i += 0.0005f) {
    Serial.printf("Test frequency : %f\n", i);
    cc1101_init(i);

    struct tmeter_data meter_data;
    meter_data = get_meter_data();

    if (meter_data.reads_counter != 0 || meter_data.liters != 0) {
      Serial.printf("\n------------------------------\nGot frequency : %f\n------------------------------\n", i);

      Serial.printf("Liters : %d\nBattery (in months) : %d\nCounter : %d\n\n", meter_data.liters, meter_data.battery_left, meter_data.reads_counter);

      digitalWrite(LED_BUILTIN, LOW); // turned on

      while (42);
    }
  }
  */



  cc1101_init(FREQUENCY);

  /*
  // Use this piece of code to test
  struct tmeter_data meter_data;
  meter_data = get_meter_data();
  Serial.printf("\nLiters : %d\nBattery (in months) : %d\nCounter : %d\nTime start : %d\nTime end : %d\n\n", meter_data.liters, meter_data.battery_left, meter_data.reads_counter, meter_data.time_start, meter_data.time_end);
  while (42);
  */
}

Trouver la bonne fréquence correspondant au module Everblu

Poussez le code sur votre module ensuite sélectionne Monitor série:

Sélectionne monitor serie sur arduino ide

le résultat doit être comme sur l’image ci-dessous:

Trouver la bonne fréquence de connection au module itron everblu cyble

Une fois le code récupéré pense à commenter ces codes sinon tu ne pourras faire remonter les données ultérieurement.

5 Paramétrer l’horloge sur sa région (Optionnel)

Aller à la ligne 188-190 si nécessaire

configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", "pool.ntp.org");

L’horloge est réglé sur paris, pour modifier en fonction de votre région copiez/collez le code dispo sur ce site

Fichier cc1101.cpp

Étape importante, faire correspondre les branchements du CC1001 au GPIO du module esp:

Commençons par reprendre le schéma dispo plus haut, tu pourras te rendre compte que sur un Wemos D1 par exemple que SCK correspond au GPIO14, Miso 12 etc… sachant que ça modifie les lignes 94 à 100 du code dispo dans ce fichier. Voir le Gif animé ci-dessous:

Paramétrer les branchements du CC1101 au Wemos

Fichier everblu_meters.h

Code dispo sur votre module itron pensez à ne pas reprendre le premier 0.

Trouver les codes itron Everblu

tout en bas du fichier ligne 53-60

// Change these define according to your hardware

#define FREQUENCY 433.8683f  // fréquence trouvée plus haut garde 4 chiffres après le point et rajoute f

#define GDO0 5 // gpio 5 sur GDO0

#define METER_YEAR              15 // année compteur  
#define METER_SERIAL            886451 // Code série sans le 0

Pousser le projet sur le module esp8266/esp32

Il ne reste plus qu’à valider le projet croquis > vérifier/compiler ou Ctrl+R, et si tout c’est bien passé vous devrier avoir en résultat

Executable segment sizes:
ICACHE : 32768           - flash instruction cache 
IROM   : 331192          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 28877   / 32768 - code in IRAM          (IRAM_ATTR, ISRs...) 
DATA   : 1620  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 6680  ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 26968 )         - zeroed variables      (global, static) in RAM/HEAP 
Le croquis utilise 368369 octets (35%) de l'espace de stockage de programmes. Le maximum est de 1044464 octets.
Les variables globales utilisent 35268 octets (43%) de mémoire dynamique, ce qui laisse 46652 octets pour les variables locales. Le maximum est de 81920 octets.

Ensuite cliquez sur téléverser: croquis > téléverser ou Ctrl+U

résultat:

Wrote 372528 bytes (266139 compressed) at 0x00000000 in 23.5 seconds (effective 126.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Vérifie le monitor série

Dernière étape faire remonter l’info dans le compteur d’énergie

  1. Dans homeassistant va dans Paramètres > Tableaux de bords > Energies
  2. Ajouter une source d’eau
  3. Sélectionne Water meter index

Paramétrer Consommation eau dans ha energie

Résultat final dans conso Energie

Résultat final dans onglet conso energie

Foire aux questions

Caractéristiques et fréquences des données

ce référentiel permet de récupérer:

  1. les volumes de consommations
  2. le niveau de la batterie de l’Everblu
  3. le nombre de relevé
  4. l’heure à laquelle ont été effectués les relevés.

L’appareil interroge le compteur une fois par jour, toutes les 24 heures et réessaye toutes les heures si la requête a échoué. Votre compteur peut être configuré de telle sorte qu’il n’écoute les demandes que pendant les heures où les agents releveurs travaillent.Ceci fin d’économiser les batteries des modules. Si vous ne parvenez pas à communiquer avec le compteur, veuillez réessayer pendant les heures ouvrables (de 8h00 à 16h00), du lundi au vendredi. En règle générale, essayez de configurer votre appareil uniquement pendant les heures ouvrables, vous éviterez ainsi toute confusion.

Etalonnage de la fréquence 433Mhz

Votre module émetteur-récepteur n’est peut-être pas calibré correctement, veuillez modifier la fréquence un peu plus bas ou plus haut et réessayez. Vous pouvez utiliser RTL-SDR pour mesurer le décalage nécessaire. Vous pouvez décommenter la partie du code dans le watermeter2mqtt.ino ( voir plus haut ), fichier qui analyse toutes les fréquences autour de la fréquence du compteur pour trouver la bonne.

Module de développement esp8266 réputé wemos D1 mini pro avec antenne afin de capter au mieux les ondes wifi

Module esp wemos mini D1 pro avec antenne

Par Estardyn

Module de développement esp8266 réputé wemos D1 mini pro avec antenne afin de capter au mieux les ondes wifi

Carte émetteur-récepteur RF sans fil CC1101, Module d'antenne SMA 315MHZ 433MHZ 868MHZ 915MHZ, Modulation 30ma GFSK MSK

Module de carte émetteur-récepteur RF sans fil CC1101, 315/433/868/915MHZ

Par Texas Instrument

Carte émetteur-récepteur RF sans fil CC1101, Module d'antenne SMA 315MHZ 433MHZ 868MHZ 915MHZ, Modulation 30ma GFSK MSK

Conclusion

Voilà une méthode simple à mettre en place, pour ceux qui ne seont pas équipés d’un émetteur Itron Everblu Enhanced, il existe une autre méthode qui consiste à mettre un capteur inductif directement sur le compteur et de le relier à un esp8266, cette méthode est un peut plus contraignant car il faudra avoir une source d’énergie à proxilmité de ce compteur afin de pouvoir aliment en 5V l’esp et le capteur, le tarif de l’ensemble oscille autour de 10€, un excellent article est disponible ici pieterbrinkman.com

Nico

Nico

Membre fondateur du site Haade, un passionné de domotique avec toutes les astuces qui vont biens.

commentaires