Table des matières:

Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak : 5 étapes
Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak : 5 étapes

Vidéo: Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak : 5 étapes

Vidéo: Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak : 5 étapes
Vidéo: Compteurs communicants, la solution pour vos factures d'électricité - On n'est pas des Pigeons 2024, Novembre
Anonim
Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak
Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak
Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak
Lire le compteur d'électricité et de gaz (belge/néerlandais) et télécharger sur Thingspeak

Si vous êtes préoccupé par votre consommation d'énergie ou juste un peu un nerd, vous voulez probablement voir les données de votre nouveau compteur numérique sur votre smartphone.

Dans ce projet, nous obtiendrons les données actuelles d'un compteur numérique d'électricité et de gaz belge ou néerlandais et les téléchargerons sur Thingspeak. Ces données comprennent la consommation électrique actuelle et quotidienne et l'injection (si vous avez des panneaux solaires), les tensions et courants, et la consommation de gaz (si un compteur de gaz numérique est connecté au compteur d'électricité). Grâce à une application, ces valeurs peuvent ensuite être lues en temps réel sur votre smartphone.

Cela fonctionne pour un compteur numérique belge ou néerlandais qui suit le protocole DSMR (Dutch Smart Meter Requirements), qui devrait être tous les compteurs récents. Si vous habitez ailleurs, malheureusement, votre lecteur utilisera probablement un autre protocole. Je crains donc que ce Instructable soit un peu restreint au niveau régional.

Nous utiliserons le port P1 du compteur, qui accepte un câble RJ11/RJ12, familièrement appelé câble téléphonique. Assurez-vous que l'installateur du compteur a activé le port P1. Par exemple, pour Fluvius en Belgique, suivez ces instructions.

Pour traiter les données et les télécharger sur Internet, nous utilisons un ESP8266, qui est une micropuce bon marché avec wifi intégré. Cela ne coûte que quelque chose comme 2 dollars. De plus, il peut être programmé à l'aide de l'IDE Arduino. Nous stockons les données dans le cloud sur Thingspeak, qui est gratuit pour un maximum de quatre canaux. Pour ce projet, nous n'utilisons qu'un seul canal. Les données peuvent ensuite être affichées sur votre smartphone à l'aide d'une application comme IoT ThingSpeak.

Les pièces:

  • Un ESP8266, comme un nodemcu v2. Notez que le nodemcu v3 est trop large pour une maquette standard, donc je préfère le v2.
  • Un câble micro USB vers USB.
  • Un chargeur USB.
  • Un transistor NPN BC547b.
  • Deux résistances de 10k et une résistance de 1k.
  • Un connecteur de borne à vis RJ12.
  • Une planche à pain.
  • Fils de cavalier.
  • En option: un condensateur 1nF.

Au total, cela coûte quelque chose comme 15 EUR sur AliExpress ou similaire. L'estimation tient compte du fait que certains composants tels que les résistances, les transistors et les fils sont fournis en quantités beaucoup plus importantes que ce dont vous avez besoin pour ce projet. Donc, si vous avez déjà un kit de composants, ce sera moins cher.

Étape 1: Se familiariser avec l'ESP8266

J'ai choisi le NodeMCU v2, car aucune soudure n'est requise et il dispose d'une connexion micro USB qui permet une programmation facile. L'avantage du NodeMCU v2 par rapport au NodeMCU v3 est qu'il est suffisamment petit pour tenir sur une maquette et laisser des trous libres sur le côté pour établir des connexions. Il vaut donc mieux éviter le NodeMCU v3. Cependant, si vous préférez une autre carte ESP8266, cela convient également.

L'ESP8266 peut être facilement programmé à l'aide de l'IDE Arduino. Il y a d'autres Instructables expliquant cela en détail donc je serai très bref ici.

  • Téléchargez d'abord l'IDE Arduino.
  • Deuxième support d'installation pour la carte ESP8266. Dans le menu Fichier - Préférences - Paramètres, ajoutez l'URL https://arduino.esp8266.com/stable/package_esp8266com_index.json aux URL supplémentaires de Board Manager. Ensuite dans le menu Tools - Board - Boards Manager installez esp8266 par esp8266 community.
  • Troisièmement, sélectionnez la carte la plus proche de votre ESP8266. Dans mon cas, j'ai choisi NodeMCU v1.0 (module ESP 12-E).
  • Enfin, sélectionnez sous Tools - Flash Size, une taille qui inclut les SPIFFS, comme 4M (1M SPIFFS). Dans ce projet, nous utilisons le SPIFFS (SPI Flash File System) pour stocker les valeurs énergétiques quotidiennes, afin qu'elles ne soient pas perdues si l'ESP8266 perd de la puissance et même lorsqu'il est reprogrammé.

Maintenant, nous avons tout en place pour programmer l'ESP8266 ! Nous discuterons du code réel dans une étape ultérieure. Nous allons d'abord créer un compte Thingspeak.

Étape 2: Créez un compte et un canal Thingspeak

Allez sur https://thingspeak.com/ et créez un compte. Une fois connecté, cliquez sur le bouton Nouvelle chaîne pour créer une chaîne. Dans les paramètres de la chaîne, remplissez le nom et la description comme vous le souhaitez. Ensuite, nous nommons les champs du canal et les activons en cliquant sur les cases à cocher à droite. Si vous utilisez mon code inchangé les champs sont les suivants:

  • Champ 1: pointe de consommation aujourd'hui (kWh)
  • Champ 2: consommation hors pointe aujourd'hui (kWh)
  • Champ 3: pointe d'injection aujourd'hui (kWh)
  • Champ 4: injection hors pointe aujourd'hui (kWh)
  • Champ 5: consommation de courant (W)
  • Champ 6: injection de courant (W)
  • Champ 7: consommation de gaz aujourd'hui (m3)

Ici, les heures de pointe et les heures creuses font référence au tarif de l'électricité. Dans les champs 1 et 2 la consommation se réfère à la consommation nette d'électricité aujourd'hui: consommation d'électricité aujourd'hui dans la période tarifaire depuis minuit moins injection d'électricité (produite par des panneaux solaires) aujourd'hui dans la période tarifaire depuis minuit avec un minimum de zéro. Ce dernier signifie que s'il y avait plus d'injection que de consommation aujourd'hui la valeur est nulle. De même, l'injection dans les champs 3 et 4 fait référence à l'injection nette d'électricité. Les champs 5 et 6 indiquent la consommation nette et l'injection à l'instant présent. Enfin le champ 7 est la consommation de gaz depuis minuit.

Pour référence future, notez l'ID de canal, la clé API de lecture et la clé API d'écriture, qui se trouvent dans le menu Clés API.

Étape 3: Construire le circuit électronique

Construire le circuit électronique
Construire le circuit électronique
Construire le circuit électronique
Construire le circuit électronique

Nous lisons le compteur d'électricité en utilisant le port P1, qui prend un câble RJ11 ou RJ12. La différence est que le câble RJ12 a 6 fils alors que le RJ11 n'en a que 4. Dans ce projet, nous n'alimentons pas l'ESP8266 à partir du port P1, nous n'avons donc en fait besoin que de 4 fils, donc un RJ11 ferait l'affaire.

J'ai utilisé le breakout RJ12 montré dans l'image. Il est un peu large et il n'y a pas beaucoup d'espace autour du port P1 de mon compteur. Ça va, mais c'est serré. Alternativement, vous pouvez simplement utiliser un câble RJ11 ou RJ12 et retirer le connecteur à une extrémité.

Si vous tenez le break-out comme sur la photo, les broches sont numérotées de droite à gauche et ont la signification suivante:

  • Broche 1: alimentation 5 V
  • Broche 2: Demande de données
  • Broche 3: masse de données
  • Broche 4: non connectée
  • Broche 5: ligne de données
  • Broche 6: mise à la terre

Les broches 1 et 6 pourraient être utilisées pour alimenter l'ESP8266, mais je n'ai pas testé cela. Vous devrez connecter la broche 1 à Vin de l'ESP8266, de sorte que le régulateur de tension interne de la carte est utilisé pour réduire la tension de 5V à 3,3V que l'ESP8266 accepte. Ne le connectez donc pas à la broche 3.3V, car cela pourrait endommager l'ESP8266. De plus, l'alimentation à partir du port P1 épuiserait avec le temps la batterie du compteur numérique.

Le réglage de la broche 2 à l'état haut signale au compteur d'envoyer des télégrammes de données toutes les secondes. Les données réelles sont envoyées via la broche 5 avec un débit en bauds de 115 200 pour un compteur numérique moderne (DSMR 4 et 5). Le signal est inversé (le bas vaut 1 et le haut vaut 0). Pour un type plus ancien (DSMR 3 et inférieur), le débit est de 9600 bauds. Pour un tel compteur, vous devez modifier le débit en bauds dans le code du firmware de l'étape suivante: modifiez la ligne Serial.begin(115200); dans setup().

Le rôle du transistor NPN est double:

  • Pour inverser le signal afin que l'ESP8266 puisse le comprendre.
  • Pour changer le niveau logique du 5V du port P1 au 3.3V attendu par le port RX de l'ESP8266.

Créez donc le circuit électronique sur la maquette comme sur le schéma. Le condensateur augmente la stabilité, mais il fonctionne aussi sans.

Ne connectez pas la broche RX jusqu'à ce que vous ayez programmé l'ESP8266 à l'étape suivante. En effet, la broche RX est également nécessaire pour communiquer via USB entre l'ESP8266 et votre ordinateur.

Étape 4: Téléchargez le code

J'ai rendu le code disponible sur GitHub, c'est juste un fichier: P1-Meter-Reader.ino. Il suffit de le télécharger et de l'ouvrir dans l'IDE Arduino. Ou vous pouvez sélectionner Fichier - Nouveau et simplement copier/coller le code.

Il y a quelques informations que vous devez remplir au début du fichier: le nom et le mot de passe du WLAN à utiliser, et l'ID de canal et la clé d'API d'écriture du canal ThingSpeak.

Le code effectue les opérations suivantes:

  • Lit un télégramme de données du compteur toutes les UPDATE_INTERVAL (en millisecondes). La valeur par défaut est toutes les 10 secondes. Normalement, il y a un télégramme de données du compteur toutes les secondes, mais le réglage de la fréquence sur haute surchargera l'ESP8266 afin qu'il ne puisse plus exécuter le serveur Web.
  • Télécharge les données d'électricité sur le canal Thingspeak tous les SEND_INTERVAL (en millisecondes). La valeur par défaut est toutes les minutes. Pour décider de cette fréquence, tenez compte du fait que l'envoi des données prend un certain temps (généralement quelques secondes) et qu'il y a une limite à la fréquence de mise à jour sur Thingspeak pour un compte gratuit. C'est environ 8200 messages par jour, donc la fréquence maximale serait d'environ une fois toutes les 10 secondes si vous n'utilisez pas Thingspeak pour autre chose.
  • Télécharge les données de gaz lorsqu'elles changent. En règle générale, le compteur ne met à jour les données de consommation de gaz que toutes les 4 minutes environ.
  • Le compteur enregistre la consommation totale et les valeurs d'injection depuis le démarrage. Ainsi pour obtenir les consommations et injections journalières, le code enregistre les valeurs totales à minuit tous les jours. Ensuite, ces valeurs sont soustraites des valeurs totales actuelles. Les valeurs à minuit sont stockées dans le SPIFFS (SPI Flash File System), qui persiste si l'ESP8266 perd de l'alimentation ou même lorsqu'il est reprogrammé.
  • L'ESP8266 exécute un mini serveur Web. Si vous ouvrez son adresse IP dans votre navigateur, vous obtenez un aperçu de toutes les valeurs actuelles de l'électricité et du gaz. Ceux-ci proviennent du télégramme le plus récent et incluent des informations qui ne sont pas téléchargées sur Thingspeak, comme les tensions et les courants par phase. Le paramètre par défaut est que l'adresse IP est déterminée dynamiquement par votre routeur. Mais il est plus pratique d'utiliser une adresse IP statique, qui est toujours la même. Dans ce cas, vous devez remplir staticIP, gateway, dns et subnet dans le code et décommenter la ligne WiFi.config(staticIP, dns, gateway, subnet); dans la fonction connectWifi().

Après avoir apporté ces modifications, vous êtes prêt à télécharger le firmware sur l'ESP8266. Connectez l'ESP8266 via le câble USB à votre ordinateur et appuyez sur l'icône avec la flèche dans l'IDE Arduino. Si vous n'arrivez pas à vous connecter à l'ESP8266 essayez de changer le port COM dans le menu Tools - Port. Si cela ne fonctionne toujours pas, il est possible que vous deviez installer manuellement le pilote pour le port COM virtuel USB.

Étape 5: Tester

Après avoir téléchargé le firmware, débranchez l'USB et connectez le fil RX de l'ESP8266. N'oubliez pas que nous avions besoin du canal RX de l'ESP8266 pour télécharger le firmware, nous ne l'avons donc pas connecté auparavant. Branchez maintenant la sortie RJ12 dans le compteur numérique et reconnectez l'ESP8266 à votre ordinateur.

Dans l'IDE Arduino, ouvrez le moniteur série via le menu Outils et assurez-vous qu'il est défini sur 115200 bauds. Si vous devez modifier le débit en bauds, vous devrez peut-être fermer et rouvrir le moniteur série avant qu'il ne fonctionne.

Vous devriez maintenant voir la sortie du code dans le moniteur série. Vous devriez vérifier s'il y a des messages d'erreur. De plus, vous devriez pouvoir voir les télégrammes. Pour moi, ils ressemblent à ça:

/FLU5\xxxxxxxxx_x

0-0:96.1.4(50213) 0-0:96.1.1(3153414733313030313434363235) // Compteur de numéro de série hexadécimal 0-0:1.0.0(200831181442S) // Horodatage S: heure d'été (été), W: non heure d'été (hiver) 1-0:1.8.1(000016.308*kWh) // Consommation nette totale de pointe 1-0:1.8.2(000029.666*kWh) // Consommation nette totale hors pointe 1-0:2.8.1 (000138.634*kWh) // Injection nette totale pointe 1-0:2.8.2(000042.415*kWh) // Injection nette totale hors pointe 0-0:96.14.0(0001) // Tarif 1: pointe, 2: heures creuses 1-0:1.7.0(00.000*kW) // Consommation de courant 1-0:2.7.0(00.553*kW) // Injection de courant 1-0:32.7.0(235.8*V) // Phase 1 tension 1-0:52.7.0(237.0*V) // Tension phase 2 1-0:72.7.0(237.8*V) // Tension phase 3 1-0:31.7.0(001*A) // Courant phase 1 1-0:51.7.0(000*A) // Courant phase 2 1-0:71.7.0(004*A) // Courant phase 3 0-0:96.3.10(1) 0-0:17.0.0(999.9*kW) // Puissance max 1-0:31.4.0(999*A) // Courant max 0-0:96.13.0() // Message 0-1:24.1.0(003) // autres appareils sur M-bus 0-1:96.1.1(37464C4F32313230313037393338) // numéro de série compteur de gaz r hexadécimal 0-1:24.4.0(1) 0-1:24.2.3(200831181002S)(00005.615*m3) // Horodatage de la consommation totale de gaz !E461 // Somme de contrôle CRC16

S'il y a quelque chose qui ne va pas, vous pouvez vérifier si vous avez les mêmes balises et vous devez éventuellement modifier le code d'analyse des télégrammes dans la fonction readTelegram.

Si tout fonctionne, vous pouvez maintenant alimenter l'esp8266 à partir du chargeur USB.

Installez l'application IoT ThingSpeak Monitor sur votre smartphone, remplissez l'ID de canal et la clé API de lecture et le tour est joué !

Conseillé: