APsystems ECU-C - Domoticz

Forum pour tous les autres objets : sondes météo, capteurs, actionneurs ...
Vous avez un besoin mais vous ne savez pas quel matériel choisir ? C'est ici.
EMqA
Messages : 38
Inscription : 14 déc. 2019, 14:27

Re: APsystems ECU-C - Domoticz

Message par EMqA »

Pas d'erreur au même moment dans les logs de domoticz.
J'ai un login et password pour mon utilisateur.
Peut -etre un sujet avec les réseaux de confiance. Ca a coincé un temps avec Homebridge lors d cela mise à jour 2023.1 mais ave ce réglage (192.168.0.*;127.0.0.1), tout refonctionne.
Edit : d'ailleurs, je me demande si le problème n'est pas là avec ce 192.168.0 alors que mon réseau est en 192.168.1

Edit 2 : je pense que j'avance en ayant corrigé le pont cité au dessus mais il en reste.

Code : Tout sélectionner

pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ sudo python3 ECU-B.py
Today energy : 4950.0 Wh
Current power: 11 W
Total energy : 8100.0 Wh
http://192.168.1.24:8080/json.htm?type=command&param=udevice&nvalue=0&idx=540&svalue=11%3B8100.0;0
Number inverter: 1
Inverter Id: 703000573416
Frequency: 49.9 Hz
Signal: 86 %
Temperature: 22 °C
Voltage inverter 1 panel 1: 229 V
Power inverter 1 panel 1: 5 W
Traceback (most recent call last):
  File "ECU-B.py", line 97, in <module>
    if InverterOnline == True :
NameError: name 'InverterOnline' is not defined
pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ 
Edit 3 :
Est-ce qu'il manquerait la définition de la variable InverterOnline dans ce bloc ? je crois comprendre que d'autres y sont définies comme InverterTemperature.

Code : Tout sélectionner

for i in range(Inverter_qty):
   Inverter = list(inverters.keys())[i]
   print('Inverter Id: ' + Inverter)
   InverterFrequency = data['inverters'][Inverter]['frequency']
   print('Frequency: ' + str(InverterFrequency) + ' Hz')
   InverterSignal = data['inverters'][Inverter]['signal']
   print('Signal: ' + str(InverterSignal) + ' %')
   InverterTemperature = data['inverters'][Inverter]['temperature']
   print('Temperature: ' + str(InverterTemperature) + ' °C')
   nPower = len(data['inverters'][Inverter]['power'])
   nVoltage = len(data['inverters'][Inverter]['voltage'])
   voltage = data['inverters'][Inverter]['voltage'][0]
   print('Voltage inverter ' + str(i + 1) + ' panel ' + str(1) + ': ' + str(voltage) + ' V')
   for x in range(nPower):
      power = data['inverters'][Inverter]['power'][x]
      print('Power inverter ' + str(i + 1) + ' panel ' + str(x + 1) + ': ' + str(power) + ' W')
Edit 4 :
En tout cas j'ai des données qui remontent, mais ça bloque sur la puissance
Capture d’écran 2023-03-04 à 17.54.42.jpg
Capture d’écran 2023-03-04 à 17.54.42.jpg (262.17 Kio) Consulté 3262 fois
Edit 5:
En passant cette section en commentaire

Code : Tout sélectionner

#         if InverterOnline == True :
#            getVars = {'type' : 'command', 'param' : 'switchlight', 'idx': SwitchInverter1, 'switchcmd': 'On'}
#         else :
#            getVars = {'type' : 'command', 'param' : 'switchlight', 'idx': SwitchInverter1, 'switchcmd': 'Off'}
le script va au bout mais de fait, je perd le device me renseignant sur l'état on ou off de l'onduleur ce qui pourrait être utile ^pou être notifié du démarrage de prod le matin (certains DS3-L ont posé problème sur ce point).

Code : Tout sélectionner

pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ sudo python3 ECU-B.py
Today energy : 5070.0 Wh
Current power: 0 W
Total energy : 8200.0 Wh
http://192.168.1.24:8080/json.htm?type=command&param=udevice&nvalue=0&idx=540&svalue=0%3B8200.0;0
Number inverter: 1
Inverter Id: 703000573416
Frequency: 0.0 Hz
Signal: 0 %
Temperature: 0 °C
Voltage inverter 1 panel 1: 0 V
Power inverter 1 panel 1: 0 W
Power inverter 1 panel 2: 0 W
pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ 
syl2222_fr
Messages : 47
Inscription : 14 janv. 2022, 20:02

Re: APsystems ECU-C - Domoticz

Message par syl2222_fr »

C'est cool, tu avance !

Maintenant, je te conseille de remettre le fichier d'origine ECU-B.py , sans rien passer en commentaire
Bien sur, tu remets les ip de ton ecu et de domoticz.

Comme je te l'avais ecrit, le modop de bjorn marche sans soucis. A force de bricoler, y'a peut-être des morceaux important qui ont sauté

Aprés, je vois dans ta capture d'écran : 4mn ago'
Moi , j'avais descendu le delai à 1mn dans le dzevent car , de mémoire, l'ecuB mets ses valeurs à jour toutes les mn en local.

Edit : pour le inverter online , c'est ligne 51
(la version en nl du site est mieux fichue que la version en) :
https://www.bjorn-meijer.nl/2021/05/01/ ... -domoticz/
EMqA
Messages : 38
Inscription : 14 déc. 2019, 14:27

Re: APsystems ECU-C - Domoticz

Message par EMqA »

Je viens poster pour dire que j'avais trouvé et je vois ton message.
J'ai trouvé grace à un des commentaires.

Effectivement la version nl à le mérite de présenter le code autrement que sur une seule ligne.
Pour le délai à 1mn, j'ai vu ailleurs que ça pouvait "surcharger" l'ECU. Je vais peut-être tenter à 2 minutes, c'est déjà assez fin.
Merci pour l'aide.
syl2222_fr
Messages : 47
Inscription : 14 janv. 2022, 20:02

Re: APsystems ECU-C - Domoticz

Message par syl2222_fr »

Top, bons graphes ! :)

N'hésite pas à indiquer quel était le soucis.
Ca peut aider une future personne qui tomberait sur ce fil en cherchant une solution/réponse.
EMqA
Messages : 38
Inscription : 14 déc. 2019, 14:27

Re: APsystems ECU-C - Domoticz

Message par EMqA »

Pour résumer les soucis rencontrés avec la solution Domoticz APsystems ECU Integration
1. prendre garde à la bonne manière d renseigner les IP et attribuer une IP fixe à la passerelle ECU via votre routeur

Code : Tout sélectionner

ecu_ip = "xxx.xxx.x.xx"
url = 'http://xxx.xxx.x.xx:8080/json.htm?'
2. vérifier dans domoticz les réglages de réseau de confiance dans l'onglet sécurité et veiller à ce que l'IP de la passerelle soit dans la plage.

3. la définition de la variable InverterOnline est manquante (elle récupère le statut allumé ou éteint de l'onduleur. il faut ajouter 2 lignes dans la boucle qui scute tous les onduleurs pour récupérer les données.

avant

Code : Tout sélectionner

for i in range(Inverter_qty):
   Inverter = list(inverters.keys())[i]
   print('Inverter Id: ' + Inverter)
   InverterFrequency = data['inverters'][Inverter]['frequency']
   print('Frequency: ' + str(InverterFrequency) + ' Hz')
   InverterSignal = data['inverters'][Inverter]['signal']
   print('Signal: ' + str(InverterSignal) + ' %')
   InverterTemperature = data['inverters'][Inverter]['temperature']
   print('Temperature: ' + str(InverterTemperature) + ' °C')
   nPower = len(data['inverters'][Inverter]['power'])
   nVoltage = len(data['inverters'][Inverter]['voltage'])
   voltage = data['inverters'][Inverter]['voltage'][0]
   print('Voltage inverter ' + str(i + 1) + ' panel ' + str(1) + ': ' + str(voltage) + ' V')
   for x in range(nPower):
      power = data['inverters'][Inverter]['power'][x]
      print('Power inverter ' + str(i + 1) + ' panel ' + str(x + 1) + ': ' + str(power) + ' W')
après

Code : Tout sélectionner

for i in range(Inverter_qty):
   Inverter = list(inverters.keys())[i]
   print('Inverter Id: ' + Inverter)
   InverterOnline = data['inverters'][Inverter]['online']
   print('Online: ' + str(InverterOnline))
   InverterFrequency = data['inverters'][Inverter]['frequency']
   print('Frequency: ' + str(InverterFrequency) + ' Hz')
   InverterSignal = data['inverters'][Inverter]['signal']
   print('Signal: ' + str(InverterSignal) + ' %')
   InverterTemperature = data['inverters'][Inverter]['temperature']
   print('Temperature: ' + str(InverterTemperature) + ' °C')
   nPower = len(data['inverters'][Inverter]['power'])
   nVoltage = len(data['inverters'][Inverter]['voltage'])
   voltage = data['inverters'][Inverter]['voltage'][0]
   print('Voltage inverter ' + str(i + 1) + ' panel ' + str(1) + ': ' + str(voltage) + ' V')
   for x in range(nPower):
      power = data['inverters'][Inverter]['power'][x]
      print('Power inverter ' + str(i + 1) + ' panel ' + str(x + 1) + ': ' + str(power) + ' W')
C'est vrai que c'est bien quand ça marche. Reste avoir l'utilité du log de la passerelle, j'ai peur que ça encombre plus qu'autre chose.
Capture d’écran 2023-03-05 à 16.33.31.jpg
Capture d’écran 2023-03-05 à 16.33.31.jpg (244.36 Kio) Consulté 3220 fois
kaka83136
Messages : 19
Inscription : 20 juil. 2020, 14:57

Re: APsystems ECU-C - Domoticz

Message par kaka83136 »

Bonjour,

Je viens d'installer le script via GitHUb de doudou14.
J'ai modifier mes variables, cela fonctionne avec un seul Micro-Onduleur.

Quand je veux mettre le 2eme Micro-Onduleur le script plante:
################################################
File "ECU-C-R.py", line 115
if (i == 1) and (x == 0) :
^
IndentationError: unindent does not match any outer indentation level
################################################

Ceci est l'erreur qui me sort, il plante à la ligne 115 qui correspond au #upload values to Domoticz for inverter 2

Comment cela se fait-il?
J'arrive pas a trouver apres une journée de recherche.

Merci
EMqA
Messages : 38
Inscription : 14 déc. 2019, 14:27

Re: APsystems ECU-C - Domoticz

Message par EMqA »

Depuis ce matin, le script ne tourne plus.
Je soupçonne une mise à jour coté python qui aurait mis le bazar car l'IP de ma passerelle n'a pas changé.

Code : Tout sélectionner

pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ sudo python3 ECU-B.py
Traceback (most recent call last):
  File "ECU-B.py", line 45, in <module>
    data = loop.run_until_complete(ecu.async_query_ecu())
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/home/pi/domoticz/scripts/python/ECU/APSystemsECU.py", line 122, in async_query_ecu
    await self.async_open_socket()
  File "/home/pi/domoticz/scripts/python/ECU/APSystemsECU.py", line 116, in async_open_socket
    self.reader, self.writer = await asyncio.open_connection(self.ipaddr, self.port)
  File "/usr/lib/python3.7/asyncio/streams.py", line 77, in open_connection
    lambda: protocol, host, port, **kwds)
  File "/usr/lib/python3.7/asyncio/base_events.py", line 959, in create_connection
    raise exceptions[0]
  File "/usr/lib/python3.7/asyncio/base_events.py", line 946, in create_connection
    await self.sock_connect(sock, address)
  File "/usr/lib/python3.7/asyncio/selector_events.py", line 464, in sock_connect
    return await fut
  File "/usr/lib/python3.7/asyncio/selector_events.py", line 494, in _sock_connect_cb
    raise OSError(err, f'Connect call failed {address}')
ConnectionRefusedError: [Errno 111] Connect call failed ('192.168.1.44', 8899)
Edit : Fausse alerte, ça vient de repartir sans que je ne fasse rien de particulier. A surveiller quand même.

Code : Tout sélectionner

pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ sudo python3 ECU-B.py
Today energy : 5520.0 Wh
Current power: 514 W
Total energy : 87100.0 Wh
http://192.168.1.24:8080/json.htm?type=command&param=udevice&nvalue=0&idx=540&svalue=514%3B87100.0;0
Number inverter: 1
Inverter Id: 703000573416
Online: True
Frequency: 49.9 Hz
Signal: 81 %
Temperature: 39 °C
Voltage inverter 1 panel 1: 235 V
Power inverter 1 panel 1: 252 W
Power inverter 1 panel 2: 262 W
pi@raspberrypi-domoticz:~/domoticz/scripts/python/ECU $ 
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: APsystems ECU-C - Domoticz

Message par jacques68 »

Bonjours à tous

J'ai découvert ce sujet par hasard le week-end dernier. Possedant une ecu-r et des onduleurs DSL-3, j'ai voulu tester. Après quelques galères pour faire fonctionner le tout j'ai commencé à obtenir quelques résultats mais avec des messages d'erreurs.
J'ai tout repris le tutos du Github et au final j'ai eu la remontée d'un onduleur!!! :D :D et pus aucun message d'erreurs!! :mrgreen:
Mais....il y a toujours un mais..... :roll: :roll: seul un onduleur sur les 3 remontent!!! J'ai beau reprendre le code dans tous les sens vérifier si tout est ok mais je ne vois aucune erreurs et pourtant seul un onduleur remonte.
Une idée??? :oops:
syl2222_fr
Messages : 47
Inscription : 14 janv. 2022, 20:02

Re: APsystems ECU-C - Domoticz

Message par syl2222_fr »

Hello Jacques68 !

Les questions habituelles :)
Sur le site emaapsystem, tu vois bien tout tes ds3-l ?
Si non : C'est la conf de ton ecu-r qui est à revoir

Si oui:
Tu utilise quel repos github ? Celui de Doudou14 ?

Cf le message de EmqA du 05/03 à 16h53:
3. la définition de la variable InverterOnline est manquante (elle récupère le statut allumé ou éteint de l'onduleur. il faut ajouter 2 lignes dans la boucle qui scrute tous les onduleurs pour récupérer les données.
Le soucis est peut-être là ? Il ne chercherait qu'un seul ds3-l ?

Et, enfin, la commande 'sudo python3 ECU-B.py' (ou sudo python3 ECU-R.py) ne te ressort pas d'erreur ?
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: APsystems ECU-C - Domoticz

Message par jacques68 »

Merci de me répondre, :D
La commande sudo python3 ECU-C-R.py me renovoie ceci,

pi@raspberrypi:~/domoticz/scripts/python/ECU $ sudo python3 ECU-C-R.py
Today energy : 20.0 Wh
Current power: 0 W
Total energy : 148800.0 Wh
http://127.0.0.1:8080/json.htm?type=com ... 148800.0;0
Number inverter: 1
Inverter Id: 703000031788
Online: False
Frequency: 0.0 Hz
Signal: 83 %
Temperature: -100 °C
Voltage inverter 1 panel 1: 0 V
Power inverter 1 panel 1: 0 W
Aucun message d'erreurs.
Je tourne avec le script de Doudou14 et j'ai bien les 2 lignes definition de la variable InverterOnline
Et pout finir sur le site emaapsystem je vois bien les 3DSL.....
Répondre