Enphase - Envoy - Script - Json Node-Red

Bonjour à tous

EDIT : pour la partie NODE-RED voir a partir du message 144

Après quelques heures d’analyse et de lecture sur le sujet (ancien forum) sur les plugin Enphase …

Je me suis mis a l’oeuvre en évitant les plugins Enphase en passant tout simplement par celui des scripts.

En image le résultat :

Et voila les commandes du script:

La seule chose a savoir c’est que ma passerelle ENVOY est en 192.168.0.248 dans mon réseau local
Il vous faudra donc adapter cette valeur.

De mon coté j’aimerai aller plus loin, a savoir des données panneaux par panneaux issue de la passerelle ENVOY mais celle-ci nécessite login: envoy et password :(les 6 derniers chiffres du N° de serie de la passerelle).
Même en renseignement ceux ci dans le script Json rien a faire …
Pour ceux qui veulent essayer depuis un navigateur la commande est :
http://« ip-passerelle-envoy »/api/v1/production/inverters

en retour :

#http://192.168.0.248/api/v1/production/inverters

[
{
« serialNumber »: « XXXXXXXXXX »,
« lastReportDate »: 1573575420,
« devType »: 1,
« lastReportWatts »: 0,
« maxReportWatts »: 101
},…autant de fois que de micro-onduleurs

voila au plaisir de vous lire.

3 « J'aime »

Waouh, v’la quelqu’un qui cherche à aller plus loin en mettant les mains dans le cambouis, espérons que ça donnera des idées à d’autres :wink:

1 « J'aime »

le plugin enphase_prod fait exactement ce que tu as besoin il faut installer la version beta pour avoir tous les paramètres que tu demande, je participe à l’amélioration du plugin si jamais.

Non le plugin enphase prod beta devrait faire ce que j’ai besoin sauf qu’a ce jour il ne me donne comme résultats que 4 sur 22 panneaux et lorsque je clique sur la case déroulante celle-ci se referme aprés 1/2 secondes …

d’ou mon idée de me passer du pluging qui pour l’instant me fait plutot perdre du temps pour obtenir des données json que l’on obtiens sur une simple requette de script.

j’avais juste un problème dans les script de connexion en mode autentifier,

que j’ai fini par contourner avec l’ecriture d’un petit serveur qui fait office de relay en code python

pour ceux que ca interesse en voici les sources :

a votre charge de changer l’IP et le mot de passe de la passerelle.

Le serveur repond sur l’IP:8085 de la machine sur la quelle tourne ce programme.

#!/usr/bin/python

import time
import os
import json
import requests
from requests.auth import HTTPDigestAuth
import pprint
import sys

def question_envoy():
    EnvoyBaseURl = 'http://192.168.0.248'
    envoyPWD = '011770'
    envoyuser = 'envoy'
    
    headers = {'cache-control': 'max-age=0, no-cache'}
    
    envoyUrl = EnvoyBaseURl + '/api/v1/production/inverters'
    
    resp = requests.get(envoyUrl,auth=HTTPDigestAuth(envoyuser,envoyPWD), headers=headers)
    
    if resp.status_code == requests.codes.ok:
       print('ca marche')
       reponse = str(resp.text)
       print ('reponse OK')
       
    else:
        print('ca marche pas')
        reponse=''
        
    print('fin')
    return reponse



#***********************DEBUT DU MODE SERVEUR*******************************

import socket


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 8085))
s.listen(5)
print('Attente de connection ...')

while True:
  conn, addr = s.accept()
  reponse = question_envoy()
  print('Connection de %s' % str(addr))
  request = conn.recv(1024)
  request = str(request)

  conn.send('HTTP/1.1 200 OK\n')
  conn.send('Content-Type: text/html\n')
  conn.send('Connection: close\n\n')

  conn.sendall(reponse)
  conn.close()
  print('Fermeture de %s' % str(addr))
  print('Attente de connection ...')

pour la fermeture de panneau d’affichage il ce ferme a chaque réfresh du widget soit le temps mis dans le menu déroulant dans la configuration. Pour ce qui est du problème de 4 panneaux au lieu de 22 c’est bizarre parce que j’en ai 11 et il me les trouve bien

Bonjour

@olive
Merci pour toutes ces info partagées

Mon plugin Enphase ne fonctionnait plus malgrés la réinstalation
je viens enfin de retrouver mes info avec ce script

Pour aller un peu peu plus loin, la passerelle Enphase fournie à l’application « Enlighten » des éléments interessants tels que « Importé », « Consommation » et « Exporté »

L’un d’entre vous connaitrait il les codes API afin de pouvoir ajouter ces élements au Script l’Olive et avoir ainsi un retour complet de nos instalations ?

Merci a vous

.

Désolé j’ai qu’une passerelle simple je crois que les infos que tu cherche ne sont que sur une passerelle metered. Il faudrait farfouiller le web « enphase api envoy metered »

Oui c’est bien une API d’une passerelle « Metered » qu’il me faut

Je vais fouiner avec tes éléments.

Merci pour ta réonse rapide

regarde ici aussi

par la egalement Enphase Envoy-S “Data Scraping”. | thecomputerperson

Yes Super

J’avais vu un des deux sites ce matin mais vu que je suis légé en code j’ai fouillé sur le forum jeedom et ton code m’a plus que bien aidé

Je vais dépouiller ca ce soir et essayer de trouver mon bonheur

Merci beaucoup pour ton aide.

Si je trouve je te fais signe

Bonjour,

J’ai des panneaux photovoltaïques avec box enphase S-metered et depuis peu utilisateur de Jeedom sur RPI3.
J’ai installé le plugin enphase pour récupérer les infos (comme sur mon appli mobile) mais au moment de l’activation du plugin j’ai le message d’erreur suivant:
Erreur sur enphase_prod::RefreshInformation() : Call to a member function refreshWidget() on null
Si je vais dans plugin → Energie → Enphase, j’ai ce message:
Fichier introuvable : /var/www/html/core/php/…/…/plugins/enphase_prod/desktop/php/enphase_prod.php

Avez-vous des idées svp ?

Cordialement

Bonsoir, quel version d’os système sur le RPI
et quel version de jeedom ?

Bonjour,

2019-09-26-raspbian-buster-lite sur RPI avec Jeedom 4.0.32

Merci

Regarde avec jeeexplorer
dans

/html/plugins/enphase_prod/desktop/php/enphase_prod.php

a la ligne 65

remplacer:
foreach (object::all() as $object) {
par
foreach (jeeObject::all() as $object) {

Attention a la case !!!

sans jeeexlorer tu peut sur ton systeme faire aussi une commande :
sudo nano /var/www/html/plugins/enphase_prod/desktop/php/enphase_prod.php

bonne soirée

A messieurs et dames programmeur de plugging cette erreur est récurrente sur presque l’ensemble des plugins.

alors pensez que la classe object est rester dans votre install jeedom

si vous repartez d’une install neuve cette classe n’existe pas mais la classe jeeObjet existe …

a bon entendeur … a vos clavier.

1 « J'aime »

Bonjour olive,

Merci pour votre aide. J’ai résolu mes problèmes et le plugin à l’air de fonctionner.
J’ai découvert jeeXplorer et cela m’a bien aidé, j’ai donc fait les manip suivantes:

  1. Fichier introuvable : /var/www/html/core/php/…/…/plugins/enphase_prod/desktop/php/enphase_prod.php
    renommage du fichier panel.php en enphase_prod.php
  2. Dans ce fichier, j’ai du remplacer la ligne 65 comme décrit ci-dessus.
  3. Comme décrit dans cette discussion page 5: https://www.jeedom.com/forum/viewtopic.php?f=149&t=45668&start=100
    « Dans le fichier /core/class/enphase_prod.class.php, déplacer la ligne « $Equipement->refreshWidget(); » dans le foreach juste au dessus »

Merci encore pour votre aide

1 « J'aime »

Bonjour,

Mon plugin à l’air de bien fonctionner car la puissance produite correspond généralement bien à ce que j’ai sur mon appli enphase.
Seulement, le plugin indique que j’ai 4 panneaux alors que j’en ai 16…
De plus, est-il possible de récupérer les infos de consommation svp ?
Je ne vois pas ou se trouve l’accès à ces informations (que j’ai sur mon application)

D’avance merci

Salut
J’ai exactment le même probleme 22 panneaux et seulement 4 dans le pluging prod

c’est pour cela que j’ai ecrit ce post et que je n’utilise pas le plugging enphase prod si tu regarde bien e début de ce post … !

plugin enphase_prod béta ? je sais pas comment ca ce fait parce que je n’arrive pas a reproduire ce problème chez moi j’ai 11 panneau et ils sont tous détectés. C’est une envoy-s ou une envoy-s metered ?
le problème ce situe peut être la, car le plugin a été codé pour une metered, y’a peut être une modification à faire pour la standard.