Passage V5 a V7 NOK , perte info

voila ce que j’ai

[2022-09-03 10:01:36]INFO : Début d'activation du plugin
[2022-09-03 10:01:37]INFO : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2022-09-03 10:02:04]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 10:03:04]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 10:04:04]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 10:05:05]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 10:06:04]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 10:07:04]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 10:08:04]ERROR : Erreur sur la fonction cron du plugin : Echec de la requête HTTP : http:///production.json?details=1 cURL error : Could not resolve host: production.json
[2022-09-03 13:00:55]DEBUG : Call url https://192.168.2.144/inventory.json
[2022-09-03 13:00:55]DEBUG : Results null
[2022-09-03 13:00:55]DEBUG : Call url https://192.168.2.144/production.json?details=1
[2022-09-03 13:00:56]DEBUG : Results null
[2022-09-03 13:00:56]DEBUG : Call url https://192.168.2.144/api/v1/production
[2022-09-03 13:00:56]DEBUG : Results null
[2022-09-03 13:00:56]DEBUG : Call url https://192.168.2.144/api/v1/production/inverters
[2022-09-03 13:00:56]DEBUG : Results null
[2022-09-03 13:00:56]DEBUG : Call url https://192.168.2.144/inventory.json
[2022-09-03 13:00:56]DEBUG : Results null
[2022-09-03 13:01:03]DEBUG : Call url https://192.168.2.144/production.json?details=1
[2022-09-03 13:01:03]DEBUG : Results null
[2022-09-03 13:01:03]DEBUG : Call url https://192.168.2.144/api/v1/production
[2022-09-03 13:01:03]DEBUG : Results null
[2022-09-03 13:01:03]DEBUG : Call url https://192.168.2.144/api/v1/production/inverters
[2022-09-03 13:01:04]DEBUG : Results null

Ok déjà ça passe bien en https avec le jwt mais l’envoy repon pas donc la v7 change tout… Plus qu’à attendre que je la reçoive alors

Ok tres bien merci, as tu bien parametrer dans toolkit " menu parametres" la fonction Telechargement automatique logiciel iq gateway, si non je pense que tu resteras en V5, non?

Je pense que oui j’ai fait ce qu’il fallait mais il me propose pas de mettre à jour pour le moment

ah ok super merci, y a plus qu’a attendre

J’ai mis comme ça a voir si ça suffit, je suis assez étonnée par ça par contre :


Car je suis en v5 donc aucune idée de pk il parle de v4…

Oui étonnant car la le firmware serait en V4 , ou alors ils parlent d’autre chose en disant IQ Gateway, et le plus surprenant c’est qu’il a été mis a jour aujourd’hui , je ne comprends vraiment pas.

Pourtant je suis bien en v5 et il me signal aucune maj :

Je pense qu’il n’y a que attendre qu’il déploie la v7 chez moi

Oui , je pense que tu as raisons faut attendre , ils doivent déployer petit a petit .
As tu essayer de rebooter la passerelle ? je pense que oui, c’est peut être dans sa phase de boot qu’elle se met a jour

Je suppose que vous avez déjà fait ça:
https://support.enphase.com/s/article/How-do-I-update-the-Envoy-software-using-Enlighten-Manager

Oui deja regardé j’ai pas le bouton de mise a jour dons je pense qu’il n’y a pas de mise a jour disponible. En faite la mise à jour semble se faire que si tu as des batteries ce qui n’est pas mon cas.

As tu essayé de rajouter une batterie dans toolkit (ajouter materiel ) ? il y a : ac batterie et IQ batterie

Le crayon sous votre message permet de l’éditer pour le corriger/compléter:
image
Et sous les 3 petits points, il y a la possibilité de supprimer un message devenu inutile.

1 « J'aime »

Ce qui est bizarre , c’est pour 2 installation identique, faite part moi même

j’ai eu 2 mises à jour avec des versions différente

chez moi

chez mon pote

Je préfère éviter de jouer trop avec le système je sais que la configuration est assez sensible. Au pire on verra si un jour j’ai les moyens de mettre des batteries j’aurais forcément la V7 dans ce cas.

Salut Loic,

Au cas où tu repasses par là, j’ai essayé pour voir de mettre à jour le plugin vers la branche beta d’un Jeedom qui n’avait pas besoin de l’évolution (puisque toujours sur V5 d’Enphase) et il y a un soucis de lecture du coup les valeurs ne sont plus récupérées.

Les logs en debug :

[2022-09-14 15:21:02]DEBUG : Call url http://192.168.0.14/production.json?details=1
[2022-09-14 15:21:03]DEBUG : Results {"production":[{"type":"inverters","activeCount":12,"readingTime":1663161781,"wNow":1685,"whLifetime":2936927},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1663161786,"wNow":1187.607,"whLifetime":2908468.5,"varhLeadLifetime":0.027,"varhLagLifetime":1044979.929,"vahLifetime":3551722.913,"rmsCurrent":5.156,"rmsVoltage":234.152,"reactPwr":195.833,"apprntPwr":1206.552,"pwrFactor":0.99,"whToday":5495.5,"whLastSevenDays":77164.5,"vahToday":7686.913,"varhLeadToday":0.027,"varhLagToday":3063.929,"lines":[{"wNow":1187.607,"whLifetime":2908468.5,"varhLeadLifetime":0.027,"varhLagLifetime":1044979.929,"vahLifetime":3551722.913,"rmsCurrent":5.156,"rmsVoltage":234.152,"reactPwr":195.833,"apprntPwr":1206.552,"pwrFactor":0.99,"whToday":5495.5,"whLastSevenDays":77164.5,"vahToday":7686.913,"varhLeadToday":0.027,"varhLagToday":3063.929}]}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1663161786,"wNow":1570.983,"whLifetime":6812385.138,"varhLeadLifetime":2204942.14,"varhLagLifetime":1161795.438,"vahLifetime":5610918.36,"rmsCurrent":7.777,"rmsVoltage":234.148,"reactPwr":-231.016,"apprntPwr":1820.984,"pwrFactor":0.86,"whToday":14159.138,"whLastSevenDays":167823.138,"vahToday":12893.36,"varhLeadToday":5590.14,"varhLagToday":3191.438,"lines":[{"wNow":1570.983,"whLifetime":6812385.138,"varhLeadLifetime":2204942.14,"varhLagLifetime":1161795.438,"vahLifetime":5610918.36,"rmsCurrent":7.777,"rmsVoltage":234.148,"reactPwr":-231.016,"apprntPwr":1820.984,"pwrFactor":0.86,"whToday":14159.138,"whLastSevenDays":167823.138,"vahToday":12893.36,"varhLeadToday":5590.14,"varhLagToday":3191.438}]},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1663161786,"wNow":383.376,"whLifetime":3930712.796,"varhLeadLifetime":2204942.112,"varhLagLifetime":116815.509,"vahLifetime":5610918.36,"rmsCurrent":2.621,"rmsVoltage":234.144,"reactPwr":-35.183,"apprntPwr":617.315,"pwrFactor":0.61,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0,"lines":[{"wNow":383.376,"whLifetime":3930712.796,"varhLeadLifetime":2204942.112,"varhLagLifetime":116815.509,"vahLifetime":5610918.36,"rmsCurrent":2.621,"rmsVoltage":234.144,"reactPwr":-35.183,"apprntPwr":617.315,"pwrFactor":0.61,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}]}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
[2022-09-14 15:21:03]ERROR : Erreur sur la fonction cron du plugin : Call to a member function getValueDate() on bool

Slt ,
Une discution très intéressante avec différents script fonctionnant apparement en v7 pour ceux voulant avoir les données en attendants

Pour ceux que ça interesse voilà le script qui fonctionne chez moi:

  • le script de récupération des infos et du token:
#!/usr/bin/env python3

import asyncio
import logging
import re
import time
import jwt
import json

from html.parser import HTMLParser
from json.decoder import JSONDecodeError
try:
    from BeautifulSoup import BeautifulSoup
except ImportError:
    from bs4 import BeautifulSoup
#from envoy_utils.envoy_utils import EnvoyUtils

import httpx

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Encountered a start tag:", tag)

    def handle_endtag(self, tag):
        print("Encountered an end tag :", tag)

    def handle_data(self, data):
        print("Encountered some data  :", data)

SITE_ID = "123456"
SERIAL_NUMBER = "123456"

ENDPOINT_URL_PRODUCTION_JSON = "http://{}/production.json"
ENDPOINT_URL_PRODUCTION_V1 = "http://{}/api/v1/production"
ENDPOINT_URL_PRODUCTION_INVERTERS = "http://{}/api/v1/production/inverters"
ENDPOINT_URL_PRODUCTION = "http://{}/production"
LOGIN_URL = "https://entrez.enphaseenergy.com/login"
TOKEN_URL = "https://entrez.enphaseenergy.com/entrez_tokens"
LOCAL_URL = "https://{}/"

payload_login = {'username': 'blabla@gmail.com', 'password': 'azerty'}

payload_token = {'Site': SITE_ID, "serialNum": SERIAL_NUMBER}

headers = {'Content-Type': 'application/json'}


client = httpx.Client(verify=False)
token = ""
try:
    r = client.post(LOGIN_URL, data=payload_login)
    print(r.status_code)
    #print(r.text)
    r = client.post(TOKEN_URL, data=payload_token)
    print(r.status_code)
    #print(r.text)
    parsed_html = BeautifulSoup(r.text, "lxml")
    token = parsed_html.body.find('textarea').text
    print(token)
    decode = jwt.decode(token, options={"verify_signature": False}, algorithms="ES256")
    print(decode["exp"])

    header = {"Authorization": "Bearer " + token}
    r = client.get(LOCAL_URL + "auth/check_jwt", headers=header)
    print(r.text)

    r = client.get(LOCAL_URL + "api/v1/production", headers=header)
    print(r.text)
    json.dump(r.json(), open("/var/www/html/plugins/script/data/enphasedonnee.txt", "w+"))
finally:
    client.close()

  • entrer son ip à la place des {}

  • login à la place de blabla@gmail.com

  • password à la place de azerty,

  • numéro de site

  • numero de gateway à la place de Serial_Number

  • installer les dépendance python depuis jeedom:

sudo pip install pyjwt html.parser html5lib bs4 asyncio httpx lxml

Puis on récupère les infos dans le fichier du plugin script:

/var/www/html/plugins/script/data/enphasedonnee.txt

et voici la config coté plugin script

Merci @jeefib pour les essais :slight_smile:

ce n’est pas très propre mais ça fonctionne .
à partir du moment ou le token est généré automatiquement, on peu récupérer toutes les informations. Dans l’exemple il n’y a que la production instantanée

2 « J'aime »

pour ma part, ça fonctionne comme ceci

le token (tokentest.PY) testé sur visualstudio donne ceci

2022.14.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '61381' '--' 'c:\Users\flamalex\Desktop\tokentest.py' 
200
200
eyJraWQiOiI3ZDEwMDA1ZC03ODk5LTRkMGQtYmNiNC0yNDRmOThlZGciOiJFUzI1NiJ9.eyJhdWQiOiIxMiaWF0IjoxNjY0NTMyODM4LCJqdGkiOiIwNTVkZGI1OS1lNTkxLTQ4YTYtODcxMC02NGIzNzFkN2EwMmIiLCJ1c2VybmFtZSI6ImZsYW1hbGV4MUBnbWFpbC5jb20ifQ.7Fyq-Bctu2_5Hd_CxcAamBp31N3ImwEqf2fmCBQRDNnPiIxbgpNBdvjp2XqDHHGVZeNBX-vs1SDRydQ
1664776038
<!DOCTYPE html><h2>Valid token.</h2>


{"wattHoursToday": 6275, "wattHoursSevenDays": 20939, "wattHoursLifetime": 27614, "wattsNow": 649}

1 « J'aime »

Bonjour jeefib
Est ce que tu utilises le même script que cddu33 ?
Je ne suis pas très a l’aise avec le code , donc je test et essaye de me débrouiller comme je peux d’où ma question.