AP System API down?

Salut à tous,

Je ne sais pas si parmis vous certains utilisent l’API d’apsystem pour recuperer les infos de leurs panneaux solaires:
http://api.apsystemsema.com:8073/apsema/v1/ecu/getPowerInfo

Si oui est-ce que je suis le seul a ne plus avoir de réponse du service ou est-ce un probleme general?

Je recois un 404 depuis quelques jours. J’ai trouvé un seul forum avec une personne parlant du même probleme.
Malheureusement je ne peux pas acceder directement à l’interface locale car j’ai un ECU-R et il me faut des codes d’authentification pour acceder à la passerelle.
Merci pour vos retours, histoire que je sache si je suis seul ou pas :slight_smile:

OvO

Bonjour,

j’utilise aussi cette API à partir d’un script python permettant d’uploader les datas vers pvoutput.org
Effectivement depuis le 27 mars dernier l’API ne répond plus. Elle a semble t-il migrée sur une version SSL hébergée désormais sur AWS. Sa réimplémentation dans le script utilisé n’est pas anodine.
Lien vers les échanges : https://github.com/willemstoker/aps-to-pvoutput/issues/7

Je ne pense pas que nous soyons les seuls, et c’est vrai que c’est handicapant de ne pas pouvoir exporter les datas APS vers d’autres systèmes comme Jeedom

Merci @otello86

J’ai trouvé une solution qui devrait ne plus posé de problem pour ceux ayant des ECU_R.
je me suis inspiré du script python ici:

Du coup j’accede directement à la paserelle.
Je recupere le fichier JSON

{'current_power': 338,
 'ecu_id': '216000000818',
 'inverter_qty': 2,
 'inverters': {'406000007612': {'channel_qty': 2,
                                'frequency': 50.0,
                                'model': 'YC600',
                                'online': True,
                                'power': [64, 100],
                                'signal': 70,
                                'temperature': 22,
                                'uid': '406000007612',
                                'unknown': '01',
                                'voltage': [239, 239]},
               '406000007732': {'channel_qty': 2,
                                'frequency': 50.0,
                                'model': 'YC600',
                                'online': True,
                                'power': [92, 82],
                                'signal': 71,
                                'temperature': 27,
                                'uid': '406000007732',
                                'unknown': '01',
                                'voltage': [239, 239]}},
 'lifetime_energy': 425.7,
 'timestamp': '2021-04-07 17:50:24',
 'today_energy': 5.76}

via un script qui appelle le fichier python.
Il suffit de copier les fichiers APSystemsECUR.py et test.py dans le pugin script de jeedom.
Modifié un peu le fichier python pour mettre l’ip de la passerelle et simplifier le output pour avoir que le json.
Ensuite dans un scenario faire les manip necessaire avec du code pour extraire les infos de production.

J’ai pas encore finalisé le tout. J’essayerai de faire un post un peu plus complet.
Si vous avez des questions n’hesitez pas.

OvO

Si ca interesse certaines personne voila le protocole pour la nouvelle interface de AP system.
Apsystems EMA API operation manual.pdf (628,1 Ko)

Je suppose que ca necessiterait le developpement d’un plugin ou un script un peu plus compliqué que celui existant.
Pour le moment je pense que je vais me satisfaire de mon acces direct qui semble plutot bien fonctionner.

OvO

j’ai également réussi à récupérer les datas de mes panneaux grâce au script python que tu as posté, merci.
Le script n’est pas top (je ne suis pas développeur) mais il fait le taff donc pour le moment ça me suffira

Bonjour,

je suis intéressé mais par contre le script ne fonctionne pas chez moi, j’obtiens une erreur lorsque je lance test.py (avec la bonne ip de renseignée) :

[ERROR] [Errno 10061] Connect call failed (‹ 192.168.1.148 ›, 8899)

y a t il quelque chose de particulier à faire sur la conf de la passerelle ?
Merciiii

Bonjour,
Moi je veux bien un peu d’aide de ceux qui otn réussi pour mettre en place :slightly_smiling_face:
J’ai donc mis les 2 fichiers APSystemsECUR.py et test.py dans le répertoire du plugin script.
J’ai modifié test.py pour y mettre l’ip de mon ecu-r.
Mais je ne comprends pas la suite à faire dans jeedom
Cldt
Heddy

Personne n’est passé par là :slight_smile:

Je m’auto réponds, j’ai pas lu avec assez de précision, faut que la gateway ECU-R soit connectée en wifi, elle est en ehternet pour l’instant …
A suivre donc !

J’ai parcouru la doc pour tenter de faire une tache en java qui récupère ça. Le problème est qu’il faut un ID « utilisateur » pour utiliser les apis.
Ces id utilisateurs ne sont données qu’aux ainstallateurs, information que j’ai eu après d’aps suite à un mail pour avoir justement un id utilisateur
A mon sens c’est mort donc pour cette voie de récupération d’information !

DaN

Hello, moi je suis en wifi mais je ne sais pas comment on lance test.py

SAlut @rennais35000

Pour lancer le script python il faut utiliser le plugin Script de Jeedom.
J’ai pas trop de temps ce matin. Je regarde cet am.

OvO

Salut,

Voila je rajoute les fichiers python que j’utilise.
Attention de garder l’extension en PY majuscule pour pouvoir executer du python3 sinon ca ne fonctionne pas.
APSystemPython.zip.txt (3,3 Ko)
Recommendation: verifier que le script fonctionne bien en se connectant en ssh et en démarrant le python (python mesures.PY)

Dans le plugin Script rajouter un script avec une commande :
image
La mise a jour de la commande cron ne fonctionnant pas bien chez moi (Bug Auto-refresh cron toutes les 5 minutes saute l'heure) J’ai ensuite un scenario avec un cron toutes les 5 minutes et qui evite de stocker des infos dupliquer si la maj n’a pas fonctionné.
image

Et j’ai aussi 2 virtuels:
un premier APSystemDirect Valeurs qui contient les 2 valeurs en temps reel
image

Un autre qui me sert pour l’affichage avec les stats:
image
C’etait mon virtuel historique donc je l’ai pas touché.

Voila le contenu du scenario:
image

Il y a probablement moyen de faire plus simple mais c’est comme cela que ca m’est venu en premier :slight_smile:
Par exemple le script python pourrait être plus intelligent, ou encapsuler dans un script php qui pourrait inclure la logique du scenario, …
Comme toujours en informatique on peut faire la même chose de 10000 manieres differentes :smiley:

Si vous avez des questions n’hesitez pas
OvO

A priori j’ai déjà une erreur dans le script en ssh

root@Jeedom228:/var/www/html/plugins/script/data/APSystemPython# python Mesures.PY
File « Mesures.PY », line 18
print(f"[ERROR] {err}")
^
SyntaxError: invalid syntax

python --version
Python 2.7.16
ce qui explique surement que ça ne marche pas.
D’ou la question que je me pose, puis-je upgrader ma version de python sans danger pour le reste ?

Edit : ben non j’ai bien aussi python3 d’installé en //
python3 --version
Python 3.7.3

Bonjour,
Tu es en quelle version de python ?
car à priori
print(f"[ERROR] {err}") n’est pas la bonne syntaxe pour mon python alors que
print("[ERROR] {}.".format(err)) ne me fait plus d’erreur
(ce n’est pas de moi mais j’ai fouillé sur les forums python.
Par contre maintenant j’ai aussi des erreurs dans APSystemsECUR.py
surement pour la même raison d’erreurs de syntaxe.
C’est très chiant ces changements entre les pythons :roll_eyes:

Traceback (most recent call last):
File « /var/www/html/plugins/script/data/APSystemPython/Mesures.PY », line 3, in
from APSystemsECUR import APSystemsECUR
File « /var/www/html/plugins/script/data/APSystemPython/APSystemsECUR.py », line 76
async def async_read_from_socket(self):
^
SyntaxError: invalid syntax

Avez vous mis les shebang en tête des fichiers si il sont executables ?

#!/usr/local/bin/python            pour du python 2
#!/usr/local/bin/python3          pour du pyhton 3

sinon l’autre méthode est de lancer python suivi d’un espace et du nom du fichier.py

python fichier.py pour du python 2
ou
python3 fichier.py pour du python 3

Bonjour Olive,
Actuellement il y a :
#!/usr/bin/env python3 en tête des fichiers.
Si je lance en ssh python3 /var/www/html/plugins/script/data/APSystemPython/Mesures.PY
j’ai cette erreur
[ERROR] Unsupported inverter type 502.

et ca donne quoi si tu le lance en python 2 ?

ton script python est pour du 2 ou du 3 ?

n’y a t’il pas des paramètres a passer à ca script ?

Idem en lançant en python 2
Le ficher d’origine me donne la même erreur sur la syntaxe print
python /var/www/html/plugins/script/data/APSystemPython/Mesures.PY
File « /var/www/html/plugins/script/data/APSystemPython/Mesures.PY », line 18
print(f"[ERROR] {err}")

> #!/usr/bin/env python3
from APSystemsECUR import APSystemsECUR
import time
import asyncio
from pprint import pprint
ecu_ip = "192.168.1.10"
loop = asyncio.get_event_loop()
ecu = APSystemsECUR(ecu_ip)
try:
    data = loop.run_until_complete(ecu.async_query_ecu())
    print(data)
except Exception as err:
    print(f"[ERROR] {err}")

J’avais donc modifié en :
print("[ERROR] {}.".format(err))
pour ne pas avoir l’erreur