[Tuto] Enphase Metered + Node-RED + jMQTT

Version n°1 du 14/07/2022 - Base
Version n°2 du 16/07/2022 - Ajout de précisions et mise en forme
Version n°3 du 18/12/2022 - Ajout flux pour Enphase V7

REFERENCES

Node-RED (nodered.org)

INTRODUCTION

Ce tuto a été demandé par quelques personnes. Il s’agit de rassembler des informations réparties dans le post enphase-envoy-script-json-node-red pour permettre de récupérer les données de la passerelle Enphase Metered toutes les secondes (via l’URL « /stream/meter »)

Le plugin Jeedom Enphase permet de récupérer les données toutes les minutes
Certain pourraient bénéficier d’un accès plus rapide à cette information, par exemple pour faire du délestage ou enclencher des équipements en cas d’export de la production

Mais que viens faire Node-RED ici ? Node-RED est un outil de programmation permettant de relier rapidement et graphiquement des matériels ensembles. Il est basé sur Node.js

Nous nous servirons de Node-RED pour récupérer les données de la passerelle Enphase Metered puis les renvoyer, via le protocole MQTT, à Jeedom sans avoir vraiment besoin de recourir à de la programmation (en Python par exemple).

Besoin et prérequis :

  • Le superviseur Proxmox pour créer une nouvelle VM
  • Le plugin jMQTT installé sur Jeedom et donc l’infrastructure qui va avec c’est-à-dire Mosquitto

Dans ce tuto je procède à la création d’une nouvelle VM car il est facile de la mettre en place, stopper, supprimer sans impacter Jeedom mais suivant votre cas vous pourrez faire comme vous voulez

Je considère que vous avez déjà un broker (Mosquitto par exemple) et un client MQTT
Je ne décris pas ici la mise en place de jMQTT et du broker Mosquitto mais vous trouverez sur Community plusieurs sujets qui en parle dont mon 1er tuto concernant la mise en place de ZWaveJS2MQTT

CRÉER CONFIGURER ET INSTALLER UNE VM Node-RED

Créer une nouvelle VM sur Proxmox puis installer Debian 10
Voici le lien vers Debian 10 pour AMD64 : https://cdimage.debian.org/cdimage/archive/10.12.0/amd64/iso-cd/debian-10.12.0-amd64-netinst.iso

Nom de la VM : Node-RED
Nom de l’utilisateur de cette VM : nodered

Se connecter avec l’utilisateur nodered en ssh ou bien en y accédant via l’outil de Console de Proxmox
La commande « ip addr » permet de découvrir l’IP de la VM.

MAJ Debian

IP de la VM chez moi : 10.0.1.53

Prendre la main en SSH avec l’utilisateur nodered et procéder à la mise à jour de Debian

su -
apt-get install sudo
usermod -aG sudo nodered
reboot

sudo apt update
sudo apt upgrade

INSTALLER AGENT POUR PROXMOX (FACULTATIF)

sudo apt install qemu-guest-agent

RECUPERER LE MOT DE PASSE INSTALLER DE L’ENPHASE

IP de la passerelle Enphase chez moi : 10.0.6.10

Contrairement à l’adresse http://10.0.6.10/production.json de votre passerelle Enphase, l’adresse http://10.0.6.10/stream/meter n’est pas accessible sans le mot de passe installer

Il va falloir le récupérer en installant un outil sur un téléphone Android. Une fois exécuté, le programme vous communiquera le mot de passe installateur de votre passerelle. Il ne s’agit pas d’une application Google Play et vous devrez donc autoriser les sources externes pour l’installer

INSTALLER Node-RED

sudo apt install curl

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Répondre « No » à la question sur le Pi

sudo systemctl enable nodered.service
sudo node-red-start

Accès à l’interface de Node-RED sur le port 1880 : http://10.0.1.53:1880

CONFIGURER Node-RED ET CRÉER LE FLUX

  1. Ajout des composants nécessaires
    a. Menu > Manage palette

b. Installer les composants node-red-contrib-sse-client et node-red-dashboard
image

  1. Importer le fichier .json (renommer le fichier ci-dessous) en .json avant

Envoy-Stream.json.txt (8,2 Ko)

image

image

  1. Personnaliser le flux à votre environnement :
    Vous devriez voir apparaitre ce flux suite à l’import. Il faut le personnaliser par rapport à votre environnement

a. Editer « http request » puis changer l’IP par celle de votre Envoy et indiquer le mot de passe installer de votre passerelle Envoy

b. Editer « SSE client » et changer l’IP par celle de votre Envoy
image

c. Editer « mqtt » puis le serveur Mosquitto et changer l’IP du server par celle de votre serveur Mosquitto
Attention à ne pas avoir plusieurs clients avec le même ID
IP du Broker Mosquitto chez moi : 10.0.1.102

d. Cliquer sur « Deploy » pour déployer votre flux dans le moteur

image

e. Cliquer sur la case à gauche de Start pour démarrer le flux et rapidement vous devriez voir que :

  • Le node SSE client est « connected » c’est-à-dire que Node.js a réussi à se connecter à la passerelle Enphase Metered
  • Le node mqtt est « connected » c’est-à-dire que Node.js a réussi à se connecter au serveur Mosquitto

RECUPERER LES INFORMATIONS DANS jMQTT

Node-RED étant connecté à votre Envoy il récupère les informations, filtre (voir fin du tuto) puis envoi sur le Broker Mosquitto

:arrow_right: Il ne reste plus qu’à indiquer à jMQTT d’aller chercher ces informations

Ajouter un nouvelle équipement « Envoy Stream » et l’inscrire dans le topic « Node-RED/Envoy/Stream/# » en laissant coché dans un 1er temps l’ajout automatique des commandes. Une fois les 3 commandes obtenues je conseille de décocher la case

Au bout de quelques secondes vous devriez voir 3 commandes :
- NetConso c’est-à-dire l’export si ce chiffre est négatif et l’import s’il est positif
- Prod c’est-à-dire la production de vos panneaux
- TotConso c’est-a-dire la consommation totale de votre logement (incluant donc l’énergie « Prod » provenant des panneaux)

En d’autres termes : TotConso = Prod + NetConso

TIPS ET FIN

Ce pas à pas est terminé et voici l’heure des remerciements sans qui je n’aurais pas pu faire ce tuto :
Merci à @olive d’avoir largement défriché et expliqué le fonctionnement de Node-RED

Merci à @batkite pour l’information sur le programme permettant de récupérer le mot de passe installer

Merci à @Manumdk d’avoir mis à disposition son flux. C’est celui qui permet de se connecter à l’Envoy, de récupérer les informations, de les traiter et de les envoyer via MQTT

Le node « Filtre » :
Il a été ajouté pour éviter de remonter le moindre changement de valeur au broker et donc à votre Jeedom.
Je l’ai configuré à 2% pour que seul un changement de plus de 2% par rapport aux précédentes valeurs ne soit remonté vers le Broker
Libre à vous de l’adapter à votre besoin ou de le supprimer !

image

Les nodes de récupération des informations venant du JSON :
image

Ces nodes s’occupent d’extraire l’information du JSON et de transmettre au Broker sur le topic de base « Node-RED/Envoy/Stream ». C’est celui qui a été utilisé dans jMQTT
image

Nouveau flux pour Enphase V7 pour ceux qui souhaite continuer d’utiliser Node-RED

A partir de la version 7 de l’Enphase, la méthode de connexion a totalement été modifiée
Je propose donc une modification, testé et validé par @seraphinou (sauf la partie renouvellement du token qui devrait avoir lieue dans 1 an)

Envoy-V7-Stream.json.txt (15,9 Ko)

Il faudra adapter les nodes avec vos données :

  • Email et Password Enlighteen
  • IP locale de l’Enphase
  • Serial de l’Enphase
  • Topic jMQTT et serveur Mosquitto

Bonne utilisation

9 « J'aime »

bonsoir et merci trop top
j 'ai bien mis le tuto en place ca fonctionne

que je comprenne le netconso , si la valeur est negative C est que j 'exporte si positive je consomme sur le reseau edf
c 'est bien cela?

Oui c’est bien ça :slightly_smiling_face:

Merci pour d’avoir confirmé qu’il n’y avait pas de soucis en suivant les étapes :+1:

1 « J'aime »

ca fait lgt que j 'attendait ce style d 'info de mon envoy
je suis trop content
je te remercie encore

Avec plaisir, ça prend un peu de temps quand-même de faire un tuto alors il est appréciable que ça serve :sweat_smile: ! N’oublie pas de fermer ton post à ce sujet :wink:

Que de travail…joli tuto

great job !!! :index_pointing_at_the_viewer:

1 « J'aime »

Merci pour ce tuto !
Pourrais tu nous confirmer que cela fonctionne avec le firmware v7 de la passerelle envoy ?
Merci.

Bonsoir,

Je ne pense pas que cela puisse fonctionner avec cette V7 car la méthode d’authentification est totalement différente. Il faut obtenir un token sur Enlighten avant de pouvoir accéder au serveur web (et donc aux données) l’enphase.

Bon, et comme je n’ai pas cette V7, je ne peux pas vraiment essayer et tenter de trouver une astuce.

Merci, je voulais vérifier avant de partir sur cette solution car mon problème est là :frowning:

Salut @epsilonrt,

Hier j’ai bricolé un flow node-red pour récupérer le token qui pourrait permettre de se connecter à l’Enphase (version 7).

Je ne peut pas aller plus loin (puisque je n’ai pas cette version) pour finaliser et si ça se trouve ça ne fonctionnera pas mais si le cœur t’en dit tu peux :

  • Mettre en place les éléments de ce tuto (qui ne remontra pas les informations vers ton Jeedom puisque ça ne peut pas fonctionner)
  • Me contacter en MP pour que je fasse passer un nouveau flow, non abouti, mais nous pourrons peut-être avancer et si nous y arrivons alors je pourrais alimenter le tuto en conséquence

Salut,

Pour ceux qui souhaiterait continuer d’utiliser Node-RED avec une Enphase V7, ajout d’un flux adapté à cette version suite au travail fait avec @seraphinou

1 « J'aime »

Salut,
Merci pour le partage de la connexion V7.
Sinon, le flux réceptionné est toujours le même ?
Je me suis servi de NodeRed pour comprendre les trames, j’ai intégré tout ça sur un Esp32 pour piloter mon ECS.
J’ai du boulot en perspective…!!
A+

Avec plaisir !

Oui c’est le même flux à la réception.

Le gros du changement concerne l’authentification sur l’Enphase.

bonjour, je suis interessé par le portage de Manumdk sur esp32 afin de recuperer les donnéées du metered-S et les envoyer en mqtt. est-ce possible. cdlt

Bonjour à tous ,

j’ai besoin d’un coup de main je bloque à cet étape sur node red.


je reste désespérément disconected

je suis en Software Version D7.6.114 (43769e)
merci par avance

Hello,

Je présume que tu as bien indiqué l’IP de ton Enphase dans SSE client ?

Est-ce que tu parviens à y accéder en passant, via le navigateur : https://IP_ENPHASE/stream/meter (après redirection puis authentification) dans le navigateur ?

bonjour , oui .

j’ai du rajouter des déclaration de variable avant . mais tout se passe bien jusqu’à « set cookie ».

en sortie j’ai encore le valid token .

mais j’ai un unauthorized sur le sse client

Et bien c’est curieux que tu es du ajouter des variables. Ca fonctionnait il y a quelques temps.

@seraphinou, si tu passes par là, tu peux nous donner la version que tu as pour comparer avec la D7.6.114 de @nathan.wailly ?

effectivement c’est bizarre.
j’ai du rajouter « Var » devant les déclarations de variables sinon ca ne marchait pas.
image
de base quand j’ai importé le fichier ils n’y étaient pas.

j’ai oublié , mon node red est en version 3.0.2