saniho/apiEnedis

Pas de remontées d'info du site Enedis

jlc71710 opened this issue · 28 comments

Depuis le 21 septembre, il n'y a plus de mise à jour de la carte

Idem

Pourtant j'arrive bien à récupérer mes données dans un script Python via l'API : https://enedisgateway.tech/api avec le token récupéré via la passerelle .. Etrange !
Alors que dans HA j'ai le message suivant :
2023-09-30 12:31:46.309 ERROR (SyncWorker_4) [myEnedis] Data answer: {'detail': 'Le point de livraison ne correspond au token fournis, pour le réinitialiser il vous suffit de refaire un consentement'}

Token pourtant identique ..

Aucun idée si c'est lié, mais moi j'ai ça en log depuis aussi (j'ai aussi perdu la remonté depuis le 21 sept):

2023-10-01 20:55:59.724 INFO (SyncWorker_0) [myEnedis] ====== Appel http #1 !!! data : {'type': 'daily_consumption', 'usage_point_id': 'xxxxxxxxxxxxxxxx', 'start': '2023-09-30', 'end': '2023-10-01'} =====
2023-10-01 20:55:59.724 INFO (SyncWorker_0) [myEnedis] ====== Appel http #1 !!! reponse : {'meter_reading': None} =====
2023-10-01 20:55:59.725 ERROR (SyncWorker_0) [myEnedis] xxxxxxxxxxxxx- last call : updateYesterday
2023-10-01 20:55:59.725 ERROR (SyncWorker_0) [myEnedis] myEnedis ...xxxxxxxxxxxxx update termine, on retentera plus tard(B)
2023-10-01 20:55:59.726 ERROR (SyncWorker_0) [myEnedis] ------------------------------------------------------------
2023-10-01 20:55:59.726 ERROR (SyncWorker_0) [myEnedis] Erreur inconnue call ERROR 'NoneType' object is not subscriptable
2023-10-01 20:55:59.727 ERROR (SyncWorker_0) [myEnedis] Erreur last answer 'NoneType' object is not subscriptable
2023-10-01 20:55:59.727 ERROR (SyncWorker_0) [myEnedis] Erreur last call updateYesterday
2023-10-01 20:55:59.727 ERROR (SyncWorker_0) [myEnedis] Erreur last answer {'meter_reading': None}
2023-10-01 20:55:59.809 ERROR (SyncWorker_0) [myEnedis] Traceback (most recent call last):
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1191, in update
self.callConsommation()
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1075, in callConsommation
self.updateYesterday()
File "/config/custom_components/myEnedis/myClientEnedis.py", line 723, in updateYesterday
data = self._yesterday.updateData(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myEnedis/myDataEnedis.py", line 99, in updateData
self._value = myCheckData().analyseValue(self._data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myEnedis/myCheckData.py", line 41, in analyseValue
return int(data[API.METER_READING]["interval_reading"][0]["value"])
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1284, in update
raise Exception(inst)
Exception: 'NoneType' object is not subscriptable
2023-10-01 20:55:59.809 ERROR (SyncWorker_0) [myEnedis] ------------------------------------------------------------
2023-10-01 20:55:59.809 WARNING (SyncWorker_0) [myEnedis] (<class 'Exception'>, Exception(TypeError("'NoneType' object is not subscriptable")), <traceback object at 0x7fafd2fc0b80>)
2023-10-01 20:55:59.810 ERROR (SyncWorker_0) [myEnedis] LastMethodCall : updateYesterday

Je suis en HA 2023.10.0b4
et je précise que d'autres composants ont aussi eu quelques heures/jours de bugs , depuis 2023.10.0b1
A force de mettre à jour les customs_component et HA, pas mal de choses sont rentrés dans l'ordre, sauf pas encore Enedis et il me semble que le pb était déjà la avec la version stable 2023.9.3

C'est du coup un problème HA, du gateway, du CC lui-même ou alors Enedis?

Aucun idée si c'est lié, mais moi j'ai ça en log depuis aussi (j'ai aussi perdu la remonté depuis le 21 sept):

2023-10-01 20:55:59.724 INFO (SyncWorker_0) [myEnedis] ====== Appel http #1 !!! data : {'type': 'daily_consumption', 'usage_point_id': 'xxxxxxxxxxxxxxxx', 'start': '2023-09-30', 'end': '2023-10-01'} =====
2023-10-01 20:55:59.724 INFO (SyncWorker_0) [myEnedis] ====== Appel http #1 !!! reponse : {'meter_reading': None} =====
2023-10-01 20:55:59.725 ERROR (SyncWorker_0) [myEnedis] xxxxxxxxxxxxx- last call : updateYesterday
2023-10-01 20:55:59.725 ERROR (SyncWorker_0) [myEnedis] myEnedis ...xxxxxxxxxxxxx update termine, on retentera plus tard(B)
2023-10-01 20:55:59.726 ERROR (SyncWorker_0) [myEnedis] ------------------------------------------------------------
2023-10-01 20:55:59.726 ERROR (SyncWorker_0) [myEnedis] Erreur inconnue call ERROR 'NoneType' object is not subscriptable
2023-10-01 20:55:59.727 ERROR (SyncWorker_0) [myEnedis] Erreur last answer 'NoneType' object is not subscriptable
2023-10-01 20:55:59.727 ERROR (SyncWorker_0) [myEnedis] Erreur last call updateYesterday
2023-10-01 20:55:59.727 ERROR (SyncWorker_0) [myEnedis] Erreur last answer {'meter_reading': None}
2023-10-01 20:55:59.809 ERROR (SyncWorker_0) [myEnedis] Traceback (most recent call last):
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1191, in update
self.callConsommation()
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1075, in callConsommation
self.updateYesterday()
File "/config/custom_components/myEnedis/myClientEnedis.py", line 723, in updateYesterday
data = self._yesterday.updateData(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myEnedis/myDataEnedis.py", line 99, in updateData
self._value = myCheckData().analyseValue(self._data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myEnedis/myCheckData.py", line 41, in analyseValue
return int(data[API.METER_READING]["interval_reading"][0]["value"])
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1284, in update
raise Exception(inst)
Exception: 'NoneType' object is not subscriptable
2023-10-01 20:55:59.809 ERROR (SyncWorker_0) [myEnedis] ------------------------------------------------------------
2023-10-01 20:55:59.809 WARNING (SyncWorker_0) [myEnedis] (<class 'Exception'>, Exception(TypeError("'NoneType' object is not subscriptable")), <traceback object at 0x7fafd2fc0b80>)
2023-10-01 20:55:59.810 ERROR (SyncWorker_0) [myEnedis] LastMethodCall : updateYesterday

Je suis en HA 2023.10.0b4 et je précise que d'autres composants ont aussi eu quelques heures/jours de bugs , depuis 2023.10.0b1 A force de mettre à jour les customs_component et HA, pas mal de choses sont rentrés dans l'ordre, sauf pas encore Enedis et il me semble que le pb était déjà la avec la version stable 2023.9.3

C'est du coup un problème HA, du gateway, du CC lui-même ou alors Enedis?

Même probleme ici

Je ne connais pas la date precise du debut de mes soucis, mais de mon coté l'intégration en fonctionne plus correctement et mes deniers logs donnent ceci, malgré un renouvellement de consentement:

This error originated from a custom integration.

Logger: myEnedis
Source: custom_components/myEnedis/myClientEnedis.py:287
Integration: myEnedis sensor (documentation, issues)
First occurred: 18:36:52 (33 occurrences)
Last logged: 20:39:41

Erreur last answer {'meter_reading': None}
Traceback (most recent call last): File "/config/custom_components/myEnedis/myClientEnedis.py", line 1191, in update self.callConsommation() File "/config/custom_components/myEnedis/myClientEnedis.py", line 1075, in callConsommation self.updateYesterday() File "/config/custom_components/myEnedis/myClientEnedis.py", line 723, in updateYesterday data = self._yesterday.updateData( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/myEnedis/myDataEnedis.py", line 99, in updateData self._value = myCheckData().analyseValue(self._data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/myEnedis/myCheckData.py", line 41, in analyseValue return int(data[API.METER_READING]["interval_reading"][0]["value"]) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ TypeError: 'NoneType' object is not subscriptable During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/config/custom_components/myEnedis/myClientEnedis.py", line 1284, in update raise Exception(inst) Exception: 'NoneType' object is not subscriptable

(<class 'Exception'>, Exception(TypeError("'NoneType' object is not subscriptable")), <traceback object at 0x7f3e1f0e3a40>)
LastMethodCall : updateYesterday

Problème identique de mon coté, avec les messages dans les logs HA identiques
'NoneType' object is not subscriptable
'Erreur last answer {'meter_reading': None}

Par ailleurs la commande curl pour valider que la collecte horaire est bien activée auprès d'Enedis, ainsi que toutes les commandes pour récupérer la production me donnent le résultat suivant, :
{ "meter_reading": null }
Je précise que la collecte horaire parait bien activée sur le site Enedis.

M3te0r commented

Hello, problème identique depuis le 21/09, voici le traceback obtenu en rafraichissant l'intégration:

2023-10-04 20:02:45.606 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry [REDACTERD] for myEnedis
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/myEnedis/__init__.py", line 132, in async_setup_entry
    await _enable_scheduled_myEnedis()
  File "/config/custom_components/myEnedis/__init__.py", line 125, in _enable_scheduled_myEnedis
    await coordinator_enedis.async_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 266, in async_refresh
    await self._async_refresh(log_failures=True)
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 290, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 246, in _async_update_data
    return await self.update_method()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/myEnedis/__init__.py", line 222, in _async_update_data_enedis
    return await self.hass.async_add_executor_job(self.update_data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError: aiohttp connection lost
2023-10-04 20:02:51.801 ERROR (SyncWorker_12) [myEnedis] [REDACTED]- last call : updateYesterday
2023-10-04 20:02:51.803 ERROR (SyncWorker_12) [myEnedis] myEnedis ...[REDACTED] update termine, on retentera plus tard(B)
2023-10-04 20:02:51.807 ERROR (SyncWorker_12) [myEnedis] ------------------------------------------------------------
2023-10-04 20:02:51.810 ERROR (SyncWorker_12) [myEnedis] Erreur inconnue call ERROR 'NoneType' object is not subscriptable
2023-10-04 20:02:51.820 ERROR (SyncWorker_12) [myEnedis] Erreur last answer 'NoneType' object is not subscriptable
2023-10-04 20:02:51.824 ERROR (SyncWorker_12) [myEnedis] Erreur last call updateYesterday
2023-10-04 20:02:51.829 ERROR (SyncWorker_12) [myEnedis] Erreur last answer {'meter_reading': None}
2023-10-04 20:02:51.835 ERROR (SyncWorker_12) [myEnedis] Traceback (most recent call last):
  File "/config/custom_components/myEnedis/myClientEnedis.py", line 1191, in update
    self.callConsommation()
  File "/config/custom_components/myEnedis/myClientEnedis.py", line 1075, in callConsommation
    self.updateYesterday()
  File "/config/custom_components/myEnedis/myClientEnedis.py", line 723, in updateYesterday
    data = self._yesterday.updateData(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/myEnedis/myDataEnedis.py", line 99, in updateData
    self._value = myCheckData().analyseValue(self._data)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/myEnedis/myCheckData.py", line 41, in analyseValue
    return int(data[API.METER_READING]["interval_reading"][0]["value"])
               ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/config/custom_components/myEnedis/myClientEnedis.py", line 1284, in update
    raise Exception(inst)
Exception: 'NoneType' object is not subscriptable

De même, plus rien depuis le 21/09.

Dans le meme cas depuis le 21/09 aussi

Bonjour,
Pour info l'api MyElectricalData est bugger deupuis Aout :
https://github.com/MyElectricalData/myelectricaldata_import/issues
autre ticker ici : issues#233

Toujours impossible de réaliser le consentement, c’est lourd !
{
"reasons" : [ ],
"details" : {
"msgId" : "Id-a7ff2c65afdbc461d71cbd55"
}
}

Toujours impossible de réaliser le consentement, c’est lourd !
{
"reasons" : [ ],
"details" : {
"msgId" : "Id-a7ff2c65afdbc461d71cbd55"
}
}

Bonjour,
Oui je suis tout a fait d'accord mais c'est des personnes qui font cela gratuitement sinon si vous voulez votre consommation prévoyez d'acheter un module Lixee Zlinky.

La maintenance n’est elle pas du aux gens de chez Enedis ? Je vous prie de bien vouloir excuser mon impatience si ça n’est pas le cas.

La maintenance n’est elle pas du aux gens de chez Enedis ? Je vous prie de bien vouloir excuser mon impatience si ça n’est pas le cas.

Non c'est pas la faute de Enedis la et ni de @saniho cette personne a juste coder pour cela plus simple l'utilisation mais les vrais responsables du problème c'est myelectricalData comme j'ai cité plus haut moi sa fait 2 mois plus de données je comprends que cela vous énerve mais si vous voulez votre consommation en temps réel sans interruption faut utilisé un module lixee je compte m'en acheter un mais plus tard.

SI je refais une demande de consentement, j'obtiens un json brut lors de l'oauth2

https://gw.prd.api.enedis.fr/v1/oauth2/authorize?client_id=[REDACTED]&response_type=code&redirect_uri=http://sandbox.myelectricaldata.fr/consent&user_type=B2B&state=null&person_id=[REDACTED]&usage_points_id=[REDACTED]

{
  "reasons": [],
  "details": {
    "msgId": "Id-XXXXXXXXXX"
  }
}

Quand tu arrives sur cette page remplaces le gw.prd.api.enedis.fr par myelectricaldata.fr dans l'URL et c'est bon.
C'est bien un soucis côté Enedis, cf l'auteur de la plateforme. On devrait bientôt voir le bout du tunnel.

SI je refais une demande de consentement, j'obtiens un json brut lors de l'oauth2
https://gw.prd.api.enedis.fr/v1/oauth2/authorize?client_id=[REDACTED]&response_type=code&redirect_uri=http://sandbox.myelectricaldata.fr/consent&user_type=B2B&state=null&person_id=[REDACTED]&usage_points_id=[REDACTED]

{
  "reasons": [],
  "details": {
    "msgId": "Id-XXXXXXXXXX"
  }
}

Quand tu arrives sur cette page remplaces le gw.prd.api.enedis.fr par myelectricaldata.fr dans l'URL et c'est bon. C'est bien un soucis côté Enedis, cf l'auteur de la plateforme. On devrait bientôt voir le bout du tunnel.

Avez vous les données ????

Avez vous les données ????

Oui.

Avez vous les données ????

Oui.

moi j'ai aucune information de mon coter donc certes il sont trouver leur problème de consentement mais pas récupération de donnée.

Hello, effectivement de mon coté j'arrive à récupérer les donner via les appels CURL directs (via un script Python) mais aucune données dans l'intégration HA ..
J'ai pourtant modifié la sélection de enedisGateway to myElectricalData + mise à jour du Token mais rien pour le moment.

df911 commented

Hello, effectivement de mon coté j'arrive à récupérer les donner via les appels CURL directs (via un script Python) mais aucune données dans l'intégration HA .. J'ai pourtant modifié la sélection de enedisGateway to myElectricalData + mise à jour du Token mais rien pour le moment.

Hello,
Même problème de mon côté

M3te0r commented

Hello, effectivement de mon coté j'arrive à récupérer les donner via les appels CURL directs (via un script Python) mais aucune données dans l'intégration HA .. J'ai pourtant modifié la sélection de enedisGateway to myElectricalData + mise à jour du Token mais rien pour le moment.

Hello, même problème j'arrive bien de nouveau à récupérer mes données avec les exemples curl données sur myElectricalData (après manip de l'URL), mais j'obtiens maintenant ce traceback sur HA

2023-10-20 09:40:35.932 ERROR (SyncWorker_2) [myEnedis] LastMethodCall : updateLastMonthLastYear
2023-10-20 09:40:40.740 ERROR (SyncWorker_54) [myEnedis] [REDACTED] - last call : updateLastMonthLastYear
2023-10-20 09:40:40.740 ERROR (SyncWorker_54) [myEnedis] myEnedis ...[REDACTED] update termine, on retentera plus tard(B)
2023-10-20 09:40:40.741 ERROR (SyncWorker_54) [myEnedis] ------------------------------------------------------------
2023-10-20 09:40:40.741 ERROR (SyncWorker_54) [myEnedis] Erreur inconnue call ERROR 'str' object has no attribute 'get'
2023-10-20 09:40:40.741 ERROR (SyncWorker_54) [myEnedis] Erreur last answer 'str' object has no attribute 'get'
2023-10-20 09:40:40.741 ERROR (SyncWorker_54) [myEnedis] Erreur last call updateLastMonthLastYear
2023-10-20 09:40:40.741 ERROR (SyncWorker_54) [myEnedis] Erreur last answer None
2023-10-20 09:40:40.746 ERROR (SyncWorker_54) [myEnedis] Traceback (most recent call last):
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1191, in update
self.callConsommation()
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1112, in callConsommation
self.updateLastMonthLastYear()
File "/config/custom_components/myEnedis/myClientEnedis.py", line 553, in updateLastMonthLastYear
data = self._lastMonthLastYear.updateData(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myEnedis/myDataEnedisByDay.py", line 100, in updateData
if (callDone) and (myCheckData().checkDataPeriod(self._data)):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/myEnedis/myCheckData.py", line 102, in checkDataPeriod
if dataAnswer.get(API.ERROR_CODE, 200) == 500:
^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/myEnedis/myClientEnedis.py", line 1284, in update
raise Exception(inst)
Exception: 'str' object has no attribute 'get'
2023-10-20 09:40:40.746 ERROR (SyncWorker_54) [myEnedis] ------------------------------------------------------------
2023-10-20 09:40:40.747 WARNING (SyncWorker_54) [myEnedis] (<class 'Exception'>, Exception(AttributeError("'str' object has no attribute 'get'")), <traceback object at 0x7f7591e9c0>)
2023-10-20 09:40:40.747 ERROR (SyncWorker_54) [myEnedis] LastMethodCall : updateLastMonthLastYear

Miracle ! Les données sont là ! Cela fait bizarre de voir l'intégration à nouveau fonctionnel !
Top top !

M3te0r commented

Oui !!! Je confirme, je viens de jeter un oeil à mon dashboard énergie, j'ai les données depuis 13h

Bonjour,

J'ai aussi relancé un consentement, toutes les commandes curl fonctionnent, mais par l'intégration (j'ai bien mis le nouveau token dans la configuration de l'intégration)
Dans les logs, rien ne porte à croire que qqc soit faux manquant et aucune erreur de python

Vous avez fait qqc de plus?

EDIT: c'est revenu pour moi aussi! J'ai du attendre un peu plus de 24H

Bonjour à tous,

ça ne fonctionne toujours pas pour moi.

Avez-vous fait des modifications sur votre HA/myElectricalData ?

Merci

Bonjour à tous,

ça ne fonctionne toujours pas pour moi.

Avez-vous fait des modifications sur votre HA/myElectricalData ?

Merci

Non, mis à part une nouvelle demande de consentement oauth2 (et donc nouvelle clef) et la manipulation d'url indiquée ici : https://www.myelectricaldata.fr/
image

Les valeurs sont revenue !