[HACS] Integration APSystems ECU Marchotte

Merci pour le tips , ça m’aide bien :slight_smile:

Les logs (pi, j’ai 2 inverters offline, c’est normal, il fait presque nuit, du coup, ils produisent plus)
Et, ‹ ai changé les n › de serie

2022-12-20 16:54:04.073 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration apsystems_ecur which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-12-20 16:54:09.312 DEBUG (MainThread) [custom_components.apsystems_ecur] config={'host': '192.168.1.189', 'scan_interval': 300}
2022-12-20 16:54:09.312 DEBUG (MainThread) [custom_components.apsystems_ecur] config={'host': '192.168.1.184', 'scan_interval': 300}
2022-12-20 16:54:09.313 DEBUG (SyncWorker_5) [custom_components.apsystems_ecur] Querying ECU
2022-12-20 16:54:09.314 DEBUG (SyncWorker_3) [custom_components.apsystems_ecur] Querying ECU
2022-12-20 16:54:24.332 DEBUG (SyncWorker_5) [custom_components.apsystems_ecur] Got data from ECU
2022-12-20 16:54:24.333 DEBUG (SyncWorker_5) [custom_components.apsystems_ecur] Returning {'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [230, 230], 'inverters': {'703000108888': {'uid': '703000108888', 'online': True, 'signal': 71, 'frequency': 49.9, 'temperature': 21, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [231, 231]}, '703000098899': {'uid': '703000098899', 'online': True, 'signal': 70, 'frequency': 49.9, 'temperature': 22, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [230, 230]}}, 'ecu_id': '216300010123', 'today_energy': 1.33, 'lifetime_energy': 521.4, 'current_power': 0, 'qty_of_inverters': 2, 'qty_of_online_inverters': 2, 'data_from_cache': False, 'querying': True, 'restart_ecu': False}
2022-12-20 16:54:24.333 DEBUG (MainThread) [custom_components.apsystems_ecur] Finished fetching apsystems_ecur data in 15.021 seconds (success: True)
2022-12-20 16:54:24.337 DEBUG (SyncWorker_3) [custom_components.apsystems_ecur] Got data from ECU
2022-12-20 16:54:24.337 DEBUG (SyncWorker_3) [custom_components.apsystems_ecur] Returning {'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0], 'inverters': {'703000095555': {'uid': '70300009555', 'online': False, 'signal': 0, 'frequency': 0.0, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0]}, '703000099999': {'uid': '703000099999', 'online': False, 'signal': 0, 'frequency': 0.0, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0]}}, 'ecu_id': '216300028888', 'today_energy': 1.38, 'lifetime_energy': 123.4, 'current_power': 0, 'qty_of_inverters': 2, 'qty_of_online_inverters': 0, 'data_from_cache': False, 'querying': True, 'restart_ecu': False}
2022-12-20 16:54:24.337 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up apsystems_ecur platform for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 281, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/apsystems_ecur/sensor.py", line 63, in async_setup_entry
    inverters = coordinator.data.get("inverters", {})
AttributeError: 'NoneType' object has no attribute 'get'
2022-12-20 16:54:24.342 DEBUG (MainThread) [custom_components.apsystems_ecur] Finished fetching apsystems_ecur data in 15.029 seconds (success: True)
2022-12-20 16:54:24.343 ERROR (MainThread) [homeassistant.components.binary_sensor] Error adding entities for domain binary_sensor with platform apsystems_ecur
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 428, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 692, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 789, in add_to_platform_finish
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 545, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 583, in _async_write_ha_state
    state = self._stringify_state(available)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 551, in _stringify_state
    if (state := self.state) is None:
  File "/usr/src/homeassistant/homeassistant/components/binary_sensor/__init__.py", line 211, in state
    if (is_on := self.is_on) is None:
  File "/config/custom_components/apsystems_ecur/binary_sensor.py", line 63, in is_on
    return self.coordinator.data.get(self._field)
AttributeError: 'NoneType' object has no attribute 'get'
2022-12-20 16:54:24.347 ERROR (MainThread) [homeassistant.components.binary_sensor] Error while setting up apsystems_ecur platform for binary_sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 289, in _async_setup_platform
    await asyncio.gather(*pending)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 428, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 692, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 789, in add_to_platform_finish
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 545, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 583, in _async_write_ha_state
    state = self._stringify_state(available)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 551, in _stringify_state
    if (state := self.state) is None:
  File "/usr/src/homeassistant/homeassistant/components/binary_sensor/__init__.py", line 211, in state
    if (is_on := self.is_on) is None:
  File "/config/custom_components/apsystems_ecur/binary_sensor.py", line 63, in is_on
    return self.coordinator.data.get(self._field)
AttributeError: 'NoneType' object has no attribute 'get'
2022-12-20 16:54:24.367 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform apsystems_ecur does not generate unique IDs. ID 216300028888_data_from_cache already exists - ignoring binary_sensor.ecu_using_cached_data
2022-12-20 16:54:24.369 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform apsystems_ecur does not generate unique IDs. ID 216300028888_restart_ecu already exists - ignoring binary_sensor.ecu_restart
2022-12-20 16:54:24.369 ERROR (MainThread) [homeassistant.components.switch] Platform apsystems_ecur does not generate unique IDs. ID 216300028888_query_device already exists - ignoring switch.ecu_query_device

Aprés une suppression d’un ECU , un restart de Ha et un rajout, j’ai des logs de debugs qui sont top clean:

2022-12-20 17:04:08.607 DEBUG (MainThread) [custom_components.apsystems_ecur] config={'host': '192.168.1.184', 'scan_interval': 300}
2022-12-20 17:04:08.608 DEBUG (SyncWorker_4) [custom_components.apsystems_ecur] Querying ECU
2022-12-20 17:04:23.657 DEBUG (SyncWorker_4) [custom_components.apsystems_ecur] Got data from ECU
2022-12-20 17:04:23.657 DEBUG (SyncWorker_4) [custom_components.apsystems_ecur] Returning {'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0], 'inverters': {'703000095555': {'uid': '703000095555', 'online': False, 'signal': 0, 'frequency': 0.0, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0]}, '703000099999': {'uid': '703000099999', 'online': False, 'signal': 0, 'frequency': 0.0, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0]}}, 'ecu_id': '216300028000', 'today_energy': 1.38, 'lifetime_energy': 123.4, 'current_power': 0, 'qty_of_inverters': 2, 'qty_of_online_inverters': 0, 'data_from_cache': False, 'querying': True, 'restart_ecu': False}
2022-12-20 17:04:23.657 DEBUG (MainThread) [custom_components.apsystems_ecur] Finished fetching apsystems_ecur data in 15.050 seconds (success: True)
2022-12-20 17:05:03.622 DEBUG (MainThread) [custom_components.apsystems_ecur.config_flow] Starting config flow class...
2022-12-20 17:05:03.622 DEBUG (MainThread) [custom_components.apsystems_ecur.config_flow] Starting step_user
2022-12-20 17:05:03.622 DEBUG (MainThread) [custom_components.apsystems_ecur.config_flow] Returning to show form
2022-12-20 17:05:08.931 DEBUG (MainThread) [custom_components.apsystems_ecur.config_flow] Starting step_user
2022-12-20 17:05:08.931 DEBUG (MainThread) [custom_components.apsystems_ecur.config_flow] User Input is not none
2022-12-20 17:05:24.061 DEBUG (MainThread) [custom_components.apsystems_ecur] config={'host': '192.168.1.189', 'scan_interval': 300}
2022-12-20 17:05:24.062 DEBUG (SyncWorker_2) [custom_components.apsystems_ecur] Querying ECU
2022-12-20 17:05:39.169 DEBUG (SyncWorker_2) [custom_components.apsystems_ecur] Got data from ECU
2022-12-20 17:05:39.169 DEBUG (SyncWorker_2) [custom_components.apsystems_ecur] Returning {'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0], 'inverters': {'703000108000': {'uid': '703000108000', 'online': False, 'signal': 0, 'frequency': 0.0, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0]}, '703000097777': {'uid': '703000097777', 'online': False, 'signal': 0, 'frequency': 0.0, 'model': 'YC600/DS3/DS3D-L', 'channel_qty': 2, 'power': [0, 0], 'voltage': [0, 0]}}, 'ecu_id': '216300010000', 'today_energy': 1.33, 'lifetime_energy': 521.4, 'current_power': 0, 'qty_of_inverters': 2, 'qty_of_online_inverters': 0, 'data_from_cache': False, 'querying': True, 'restart_ecu': False}
2022-12-20 17:05:39.170 DEBUG (MainThread) [custom_components.apsystems_ecur] Finished fetching apsystems_ecur data in 15.108 seconds (success: True)


J’imagine qu’un restart de HA va me ressortir le premier pavé avec les erreurs …

Il faudrait ajouter tout ça dans votre issue sur GitHub, ca devrait aider à résoudre le souci

Bon, la réponse de l’issue sur git est claire :

If you really own 2 ECU-B units, the integration has not anticipated on this because settings are stored under the same key

Je vais me pencher en profondeur dans le code, quand j’aurais du temps. Non pas pour l’adapter (j’en ai pas les capacités), mais, je me dit que si j’arrive à cloner le repos existant, en changeant 1/2 paramétres et son nom, j’aurais peut-être un workaround.

Bon, mon aventure avec Ha commence mal du coup . 2 jours et déjà un bug lol :slight_smile:

Au moins on est fixé. Par contre, je ne pense pas qu’il y ait tant de modifications à faire dans le code. HA gère déjà nativement plusieurs instance d’une même intégration, il suffit seulement que l’intégration génère des unique id vraiment uniques.
Je vais tenter de trouver ce qu’il faut changer dans le code, on ne sait jamais

Sur Git, aprés avoir un peu discuté dans l’issue que j’ai ouvert, j’ai tenté un truc et, pour l’instant , ça marche :
What i do:
Copie du répertoire apsystems_ecur vers le repertoire apsystems_ecur2

Modification des paramètres (rajout du chiffre 2):
param

Restart de Ha . L’integration apparait
integ

Rajout d’un ECU dans chaque intégration. Ca semble ok . J’ai un petit soucis d’icone, mais, pas bien grave

Plus qu’a attendre quelques jours pour vérifier si ce workaround marche bien

2 « J'aime »

Pas mal ! Bien trouvé !!

Hello,

Je passe en résolu .
Ca fait maintenant 4 jours, et , plus aucuns soucis !
Bonne année

Bonjour @syl2222_fr
J’ai installé hier l’intégration APS.
Je ne vois pas d’entité correspondant à l’injection sur le réseau.
Sais tu si il y a ça ?
Mathieu

Salut
N’ayant que des ECU-B , je ne saurais pas te répondre (mes ECU n’ont pas de pince permettant de contrôler l’injection réseau).
Perso, je passe par mon routeur solaire pour récupérer cette info.

Bonne journée

Je suis également possesseur de ecu-R de APS et pour connaitre la valeur d’injection tu peux suivre mon tuto :

Bonjour
Je suis ave. Intérêt ces échanges mais je bute sur un pb …

Comment avez vous trouvé l’IP de votre ecu-b
Je ne la trouve pas
Elle n’est pas attribuée par mon serveur dhcp et APS me dit qu’elle n’est pas accessible…alors que les donnees remontent dans l’app

Merci

tu as bien les 2 voyant vert sur ton ecu-b ?
De mémoire, le second voyant, c’est l’accés internet. Si il est eteint, c’est que tu as raté un truc lors de son installation (tu peux cependant avoir les data dans l’appli si tu est en mode installateur)

Le mien apparaît dans le wifi sous le nom esp_E2345

Oui tout est ok
Les donnees remontent bien dans l’application

Mais ou trouver l’ip pour la conf dans hacd?

C’est compliqué avec 2 Felix dans la conversation :slight_smile:

On est bien d’accord que sur le site https://apsystemsema.com/ tu as la même chose que sur ton application (android ?). Si c’est EMA Manager, cqfd pourquoi ca remonte d’un coté et pas de l’autre.

Si ce n’est pas le cas, il faut revoir l’installation de l’ecu-b . Il doit manquer quelque chose.
Un tuto au hasard (timestamp 3mn13s): https://www.youtube.com/watch?v=LohA7o93dws

1 « J'aime »

oui j’ai la même chose sur le site que sur mon app
effectivement j’ai 2 ESP_xxx dans mes baux DHCP

MErci Felix62
entre Felix on se comprend
ce qui m’a induit en erreur ce sont les 2 entrées ESP_xxx et mes ESp32 que j’ai pris pour eux …
a+

1 « J'aime »

super ca marche nickel cette soluce avec 2 ecu-b :slight_smile:

1 « J'aime »

@ [syl2222_fr]
bonjour
je suis dans le même cas que toi (2 ecuB), mais je ne sais absolument pas comment proceder comme toi:

  • effectuer le copie dans un autre répertoire
    et le reste.;
    le plus détaillé possible… je rame…

Salut . Désolé pour la réponse tardive.

Pour ma part:
Etant sous machine virtuelle, j’utilise HAoS . Donc, c’est du linux . Tu t’y connais en linux ?

Pour pouvoir t’aiguiller (et encore, pas sur, car je suis très mauvais pédagogue) , j’ai besoin de savoir sur quelle version tu tourne : Haos, container , autre .

Et surtout: Les modifications peuvent casser complétement home assistant (on va toucher 2 valeurs, de mémoire, dans une base . Si on respecte pas les indentations, on casse tout)