Existe t-il la possibilité de connecter à Home Assistant l'onduleur wifi DEYE SUN-M200G4-EU-Q0 2000W

ha!
ca marche maintenant
je ne sais pas pourquoi

ma config:

peut etre parce que sous solarman cloud , j’ai cliqué sur « function » en haut a gauche
puis « play » bouton, et « start »

cordialement

1 « J'aime »

Bonjour,
j’ai un SUN-M100G4-EU-Q0 un onduleur avec 2 panneaux de 500W
mon FW MW3_16U_5406_1.59 est différent de @kevl86 MW3_16U_5406_1.62 (je sais pas le changer )
je n’arrive pas avec

deye_2mppt.yaml (ce qui me semble correspondre a mon onduleur ?)


2024-09-27 19:21:58.289 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 462, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 537, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_asyncio.py", line 138, in notify
    variables = parse_event_xml(content)
                ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_base.py", line 104, in parse_event_xml
    value = from_didl_string(value)[0]
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/data_structures_entry.py", line 31, in from_didl_string
    root = XML.fromstring(string.encode("utf-8"))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/xml/etree/ElementTree.py", line 1335, in XML
    parser.feed(text)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 372
2024-09-27 19:22:43.833 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 462, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 537, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_asyncio.py", line 138, in notify
    variables = parse_event_xml(content)
                ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_base.py", line 104, in parse_event_xml
    value = from_didl_string(value)[0]
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/data_structures_entry.py", line 31, in from_didl_string
    root = XML.fromstring(string.encode("utf-8"))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/xml/etree/ElementTree.py", line 1335, in XML
    parser.feed(text)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 372
2024-09-27 19:23:14.026 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 462, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 537, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_asyncio.py", line 138, in notify
    variables = parse_event_xml(content)
                ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_base.py", line 104, in parse_event_xml
    value = from_didl_string(value)[0]
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/data_structures_entry.py", line 31, in from_didl_string
    root = XML.fromstring(string.encode("utf-8"))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/xml/etree/ElementTree.py", line 1335, in XML
    parser.feed(text)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 372
2024-09-27 19:23:45.808 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to open with args ('/config/custom_components/solarman/inverter_definitions/deye_2mppt.yaml',) inside the event loop by custom integration 'solarman' at custom_components/solarman/solarman.py, line 31: with open(self.path + self.lookup_file) as f: (offender: /config/custom_components/solarman/solarman.py, line 31: with open(self.path + self.lookup_file) as f:), please create a bug report at https://github.com/StephanJoubert/home_assistant_solarman/issues
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#open
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once
    handle._run()
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 752, in async_setup_locked
    await self.async_setup(hass, integration=integration)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
    result = await component.async_setup_entry(hass, self)
  File "/config/custom_components/solarman/__init__.py", line 18, in async_setup_entry
    await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2121, in async_forward_entry_setups
    await self._async_forward_entry_setups_locked(entry, platforms)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2132, in _async_forward_entry_setups_locked
    await asyncio.gather(
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2134, in <genexpr>
    create_eager_task(
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2214, in _async_forward_entry_setup
    await entry.async_setup(self.hass, integration=integration)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
    result = await component.async_setup_entry(hass, self)
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 130, in async_setup_entry
    return await component.async_setup_entry(entry)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 194, in async_setup_entry
    return await self._platforms[key].async_setup_entry(config_entry)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 328, in async_setup_entry
    return await self._async_setup_platform(async_create_setup_awaitable)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 358, in _async_setup_platform
    awaitable = create_eager_task(awaitable, loop=hass.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/config/custom_components/solarman/sensor.py", line 89, in async_setup_entry
    _do_setup_platform(hass, entry.options, async_add_entities)
  File "/config/custom_components/solarman/sensor.py", line 54, in _do_setup_platform
    inverter = Inverter(path, inverter_sn, inverter_host, inverter_port, inverter_mb_slaveid, lookup_file)
  File "/config/custom_components/solarman/solarman.py", line 31, in __init__
    with open(self.path + self.lookup_file) as f:

2024-09-27 19:24:14.389 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 462, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 537, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_asyncio.py", line 138, in notify
    variables = parse_event_xml(content)
                ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/events_base.py", line 104, in parse_event_xml
    value = from_didl_string(value)[0]
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/soco/data_structures_entry.py", line 31, in from_didl_string
    root = XML.fromstring(string.encode("utf-8"))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/xml/etree/ElementTree.py", line 1335, in XML
    parser.feed(text)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 372
2024-09-27 19:24:16.165 WARNING (SyncWorker_20) [custom_components.solarman.solarman] Querying [1 - 125] failed with exception [OSError: [Errno 30] Read-only file system]
2024-09-27 19:24:16.167 WARNING (SyncWorker_20) [custom_components.solarman.solarman] Querying [1 - 125] failed, [1] retry attempts left
2024-09-27 19:24:16.175 WARNING (SyncWorker_20) [custom_components.solarman.solarman] Querying [1 - 125] failed with exception [OSError: [Errno 30] Read-only file system]
2024-09-27 19:24:16.177 WARNING (SyncWorker_20) [custom_components.solarman.solarman] Querying [1 - 125] failed, [0] retry attempts left
2024-09-27 19:24:16.178 WARNING (SyncWorker_20) [custom_components.solarman.solarman] Querying registers [1 - 125] failed, aborting.
2024-09-27 19:24:46.149 WARNING (SyncWorker_19) [custom_components.solarman.solarman] Querying [1 - 125] failed with exception [OSError: [Errno 30] Read-only file system]
2024-09-27 19:24:46.154 WARNING (SyncWorker_19) [custom_components.solarman.solarman] Querying [1 - 125] failed, [1] retry attempts left
2024-09-27 19:24:46.162 WARNING (SyncWorker_19) [custom_components.solarman.solarman] Querying [1 - 125] failed with exception [OSError: [Errno 30] Read-only file system]
2024-09-27 19:24:46.163 WARNING (SyncWorker_19) [custom_components.solarman.solarman] Querying [1 - 125] failed, [0] retry attempts left
2024-09-27 19:24:46.163 WARNING (SyncWorker_19) [custom_components.solarman.solarman] Querying registers [1 - 125] failed, aborting.

Bonjour,

Vu ton message, il semble que ton solarman se trouve dans une zone de ton installation qui soit en readonly !!

tu dois avoir un problème d’installation de solarman.

Coté firmware, il faut que tu te connectes sur l’onduleur et qu’il ait une connexion sur internet. Fait attention de ne pas avoir de plantage pendant la mise à jour firmware. C’est dangereux, tu peux le perdre.

Au début, j’ai eu des problèmes de connexion réseau de l’onduleur qui m’ont provoquer plein de problèmes.

bonjour,
Maintenant ça marche pour moi avec https://github.com/davidrapan/**ha-solarman** v24.10.04
j’ai un SUN-M100G4-EU-Q0 un onduleur avec 2 panneaux de 500W FW MW3_16U_5406_1.59
bonne journée

1 « J'aime »

Bonjour, je viens de tomber sur vos discutions qui me confirment que le SUN-M100G4-EU-Q0 est bien compatible avec HA, je voulais juste triple vérifier que vous avez pu avoir les infos dans HA sans devoir acheter une passerelle du constructeur supplémentaire (comme d’autres marques vous obligent à faire)
Et si en supplément l’un de vous peut faire un petit retour 1 an après, sur l’onduleur et HA, ça serait super sympa d’avoir une sorte de bilan :slight_smile:
Merci d’avance à tous!

Oui c’est la base du réseau ou il ne faut jamais 2 routeurs en cascade car tout les flux sont bloqués dans un sens par défaut. Si tu veux isoler des typologies d’équipement il faut faire des VLAN. Mais ça avec une livebox ou une box opérateur tu peux oublier…

Petite question pour les possesseur de MO Deye type SUN-M100G4-EU.
Il est bien connecté à mon réseau wifi.
Par contre il ne ping plus quand il n’y plus assez de lumière (20h) environ. Ca fait parei chez vous ? J’ai l’impression que la partie électronique / réseau n’est alimenté que par les PV et pas par la partir 230V. Vous confirmez ?

1 « J'aime »

Bonjour, oui je confirme.

1 « J'aime »

est-ce problématique selon toi ?

non pas du tout. J’ai simplement ajouter un trigger state sensor qui fait le tampon. De ce fait mes valeurs d’énergy produite sont dispo 24/24.
Sinon cela me générait des erreurs en cascade dans mes calculs de conso d’énergie par groupes

Des erreurs de ce type ?

Non le problème que tu décrit est autre chose (des sensors energy qui repassent a 0). Un sensor enrrgy ne doit jamais repasser par 0 il faut donc travailler le sensor pour éviter ça. Cela arrive sur certains devices ou avec des template sensor avec des valeurs à défaut à 0. Bien utiliser les availability et supprimer le int(0) ou float(0).

Le problème décrit dans ce poste concerne juste l’accessibilité d’un sensor sur un micro onduleur quivn est pas alimenté la nuit

Bonjour Benoît,

Je me permets de te contacter, car il semble que nous utilisons le même matériel et j’aurais voulu savoir quel est exactement le plugin tu as installé pour Solarman.
D’avance merci

Tu n’as pas plusieurs integration solarman de memoire. Il y en a qu’une ! Elle se connecte localement sur ton Deye. Regarde sur HACS

Je suis un débutant de chez débutant.

Dans HACS j’ai Solarman Integration et Ha Solarman, d’où ma question ? Et c’est quoi Ha Solarman ?

Solarman
Ensuite il va te demander l’IP LAN de ton onduleur. C est tout.
Bien veiller d’avoir une IP fixe sur ton onduleur ou bien plus pratique dans le routeur rendre l’IP statique

Ok, par contre cela se complique pour moi car les IP des micro onduleurs passe par un routeur Deco XE75 qui est connecté à ma box. Il semble qu’il ne soit pas possible de récupérer les IP sur le routeur XE75 et là je suis bien ennuyé. Est ce que quelqu’un aurait une idée ?
Bon dimanche

Il ne faut jamais plusieurs routeurs sur un LAN. Ce sont des cas très rare utilisé que dans le monde professionnel ou dans des cas très spécifique.
Dans l’idéal il te faut remplacer ton routeur sans fil via une simple borne (ou AP en anglais) wifi. De ce fait tout est sur le même réseau LAN. De ce fait c’est aussi ton seul et unique routeur principal qui gère tout ton réseau.

Dans ton cas, tu vas être obligé d’ouvrir les ports pour faire une regle NAT juste pour faire passer des trames en interne sur ton réseau local, c’est un peu ballot. C’est ultra compliqué pur rien, et ça va t’obliger à maintenir ça d’autant que tu te retrouves avec plusieurs réseaux wifi qui ne sont pas sur les mêmes réseaux physiques (mieux vaut faire des VLAN si tu veux faire ça mais toujours avec un seul routeur, ça te permet de disposer de simples bornes wifi ou tu veux tout en « atterrissant » sur le même réseau physique)

Bref, regardes tout de même si tu ne peux pas passer ton routeur Wifi en mode Bridge de façon à ce que la partie cablé et le wifi soient sur le même réseau, ça t’évitera de le changer.

Effectivement cela à l’air compliqué.

J’ai déconnecté mon mini pc de ma box orange et je l’ai connecté sur mon routeur. J’y ai également ajouté les micros onduleur DEYE SUN M100G4-EU-Q0 qui semble correspondre au deye_2mppt.yaml.

Pour l’installant, j’ai installer Solarman Intégration avec un Micro onduleur avec IP et numéro de série. A l’heure actuelle, il ne produit rien donc aucune remonté. J’attends demain pour voir si cela fonctionne. J’installerai les 4 autres.

Bonne soirée

1 « J'aime »

De mémoire l’intégration HA solarman te demande pas le numéro de série, juste l’IP; Chez moi j’avais du laissé en auto le profil. Il avait tout trouvé automatiquement.
Le seul truc domage que je trouve sur ces onduleurs (mais c’est probablement pareil sur les autres marques), est que quand tu n’as pas de production (la nuit), l’onduleur n’est pas alimenté et donc on ne peut pas être pingué ni lire ses données historiques.
Attention aussi l’onduleur envoie systématiquement par défaut tes données anonymisées sur les serveurs solarman en chine. Dans les paramètres de l’onduleur tu peux virer les serveurs si tu n’utilises pas l’application solarman sur ton téléphone. Ou alors bloquer la chine ou les URL dans ton routeur si il est avancé.