Page 2 sur 2

Re: [Plugin Tiers] Solax

Publié : 20 juil. 2019, 22:22
par jerome28
Bonjour à tous,
ma petite contribution :

je dispose d'un Solax X1 Retro Fit 5.0 depuis début 2019.
Firmware en V3.12.
J'ai constaté et cela est confirmé dans un autre forum, que l'accès à l'API locale du solax n'est plus disponible (demande un login/paswword en boucle et via la clef wifi subnet isolé non accessible sans connexion P2P)
info sur https://community.home-assistant.io/t/s ... uide/48008
L'API semble être désactivée depuis 2018 et donc sur les dernières mises à jour des firmwares ou les derniers modèles livrés.
J'ai contacté Solax pour obtenir des infos sur l'API mais rien.

Donc place à du reverse engineering :

1ere piste : le json du portail web SolaxCloud accessible sur l'URL https://solaxcloud.com/export/getReportData.do
https://github.com/DiedB/Homey-SolarPanels/issues/18
problème : je n'ai pas réussi à scripter le passage du login/password avec le cookie de session.
ok manuellement mais ko par le script

2eme piste, celle qui fonctionne depuis plusieurs semaines :
La Webapi utilisée par l'application Android SolaxCloud
J'ai installé l'application Packet Capture pour obtenir les différentes requêtes Web et avoir un json exploitable et complet.
J'ai ensuite positionné les requêtes dans un script Python que jeedom exécute toutes les 5 minutes (pas plus car le solax remonte les infos que toutes les 5 minutes dans le cloud). Le script écrit localement le fichier json obtenu pour que jeedom l'exploite facilement avec le plugin script et des commandes json du type :
result>0>ratedPower
result>0>gridpower
result>0>temperature
(...)

Le script python pour obtenir le fichier json :

Code : Tout sélectionner

# Starting a session in which we will store a JSESSIONID Cookie
import requests
import json
import time
from datetime import datetime

s = requests.Session()
s.keep_alive = True

#hearder smartphone
headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 8.0.0; xxxxxxxx Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36',
    'Origin': 'file://',
    'Accept' : 'application/json, text/plain, */*',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',
    'X-Requested-With': 'com.solaxcloud.starter'
    
}

#-----------------------------------------------------------------------------
# Logging in to get the Cookie
r=s.post(
url='http://www.solaxcloud.com:6080/proxy//login/login',
data={
'password': 'xxxxxxxx',
'userName': 'xxxxxxx',
'userType': '5'
},
headers=headers,
verify=False
)

#print(r.content)
#print(s.cookies.get_dict())
#time.sleep(3)
dct=s.cookies.get_dict()
jid=dct["JSESSIONID"]
#print(jid)
headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 8.0.0; xxxxxx Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36',
    'Origin': 'file://',
    'Accept' : 'application/json, text/plain, */*',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',
    'X-Requested-With': 'com.solaxcloud.starter',
    'JSESSIONID' : jid
}

#-----------------------------------------------------------------------------
r = s.post(
url='http://www.solaxcloud.com:6080/proxy//login/isArrears.do', 
data={
'tokenId': 'xxxxxxxxx',
'today': datetime.today().strftime('%Y-%m-%d')
},
headers=headers,
cookies=s.cookies,
verify=False
)
#print(r.content)
#-----------------------------------------------------------------------------
r = s.post(
url='http://www.solaxcloud.com:6080/proxy//dictionary/getDictionary', 
data={
'dictCode': 'APP_NEW_VERSION',
'lang': "'en_US"
},
headers=headers,
cookies=s.cookies,
verify=False
)
#print(r.content)
#-----------------------------------------------------------------------------
#Get info
r = s.post(
url='http://www.solaxcloud.com:6080/proxy//mysitenew/getBatteryData.do', 
data={
'tokenId': 'xxxxxxxxx',
'siteId': 'xxxxxxxxxx'
},
headers=headers,
cookies=s.cookies,
verify=False
)
#print(r.content)
#print(s.cookies.get_dict())


f=open('/usr/share/nginx/www/jeedom/plugins/script/core/ressources/solax.json', 'w') 
f.write(r.content)
f.close()
vous trouverez vos tokenId siteId password userName dans les captures du flux de l'application Solaxcloud obtenu avec Packet Capture par exemple.

Inconvénients de ce script :
non supporté et usage du json non officiel
cloud dépendant

Il serait intéressant de pouvoir dialoguer localement avec le solax sans passer par le cloud mais bon je ne sais pas pourquoi ils ont fait le choix de ne plus exposer leur API :?

Re: [Plugin Tiers] Solax

Publié : 23 juil. 2019, 11:43
par jcvi19
Salut, je n'ai pas trouvé grand chose, si ce n'est le port UDP qui est utilisé, a par ça rien d'exploitable.
Pour la production j'ai mis un compteur EDF d'occas, j'ai les datas de la teleinfo.
Merci pour cette tentative, je suivrai ce fil si jamais il y a des avancées.

Re: [Plugin Tiers] Solax

Publié : 23 juil. 2019, 21:26
par Vinbor312
@jerome28 dans le même esprit as tu essayé de capturer les trames de l'appli android en mode local en ce connectant au SSID de l'onduleur?

Re: [Plugin Tiers] Solax

Publié : 23 juil. 2019, 22:46
par jerome28
Vinbor312 a écrit :
23 juil. 2019, 21:26
@jerome28 dans le même esprit as tu essayé de capturer les trames de l'appli android en mode local en ce connectant au SSID de l'onduleur?
bonjour,
je n'ai pas reussi a faire une capture sur le ssid du wifi.
la capture était vide

Re: [Plugin Tiers] Solax

Publié : 24 juil. 2019, 09:24
par Vinbor312
bonjour,
je n'ai pas reussi a faire une capture sur le ssid du wifi.
la capture était vide

Bonjour jerome28
tu as bien coché le mode local sur l'aplli ?
j'ai deux type de capture avec 2 ports différent 5.5.5.8:6080 et 5.5.5.8 :80
sur le 6080 c'est effectivement vide
voilà ce que je capture sur le port 80:

Code : Tout sélectionner

POST /?optType=ReadRealTimeData HTTP/1.1
Host: 5.8.8.8
Connection: keep-alive
Content-Length: 0
Accept: */*
Origin: file://
User-Agent: Mozilla/5.0 (Linux; Android 8.0.0; LG-H930 Build/OPR1.170623.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.143 Mobile Safari/537.36
Content-Type: application/x-www-form-urlencoded
X-Requested-With: com.solaxcloud.starter
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7

Code : Tout sélectionner

HTTP/1.1 200 OK
	Server: MySocket Server
	Date: TEST
		Accept: application/json
	Content-Type: application/json
	Content-Length: 358
	Accept-Ranges: bytes

Code : Tout sélectionner

{"type":"X1-Boost-Air-Mini","SN":"SWXXXXXXX","ver":"2.31.3","Data":[4.4,0.0,118.8,0.0,2.1,235.9,473,43,5.9,734.6,0,532,0,0.00,0.00,0,0,0,0.0,0.0,0.00,0.00,0,0,0,0.0,0.0,0.00,0.00,0,0,0,0.0,0.0,0,0,0,0,0,0,0,0.00,0.00,0,0,0,0,0,0,0,50.00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2],"Information":[2.000,4,"X1-Boost-Air-Mini","XMXXXXXXXXXX",1,3.21,1.08,1.10,0.00]}
*j'ai remplacé mon serial number sur la dernière trame SWXXXXXX et XMXXXXX

Re: [Plugin Tiers] Solax

Publié : 10 août 2019, 20:43
par Sattaz
Salut,

Vinbor312, il y a deux donc une option ‘locale’ à activer au niveau de l’onduleur?
Ensuite est-ce que ça fonctionne avec mon plugin ?
Désolé mais je n’ai plus accès à l’onduleur de mon ami... si tu confirme cela, peux-tu mettre une capture d’écran de ce qu’il faut activer?
Je modifierai alors la documentation.

Merci !

Re: [Plugin Tiers] Solax

Publié : 17 août 2019, 20:57
par jgign
Bonsoir,
Je compte me faire installer un kit photovoltaique avec pour onduleur le SOLAX X1 BOSST X1 5.0T.
Est ce que ce dernier sera compatible avec ton plugin?
Merci.

Re: [Plugin Tiers] Solax

Publié : 18 août 2019, 10:24
par jerome28
jgign a écrit :
17 août 2019, 20:57
Bonsoir,
Je compte me faire installer un kit photovoltaique avec pour onduleur le SOLAX X1 BOOST X1 5.0T.
Est ce que ce dernier sera compatible avec ton plugin?
Merci.
Bonjour,
Si l'onduleur est livré avec une version du firmware récente (2018 ou 2019), l'API locale du Solax sera probablement fermée et donc ce plugin ne fonctionnera pas.
Pour moi la 2eme solution avec l'API / Json de l'application android fonctionne toujours

Re: [Plugin Tiers] Solax

Publié : 18 août 2019, 18:37
par jgign
Merci pour la réponse. Mais elle ne me plait pas lol.

C'est bien dommage.

Re: [Plugin Tiers] Solax

Publié : 30 août 2019, 22:36
par Vinbor312
Sattaz a écrit :
10 août 2019, 20:43
Salut,

Vinbor312, il y a deux donc une option ‘locale’ à activer au niveau de l’onduleur?
Ensuite est-ce que ça fonctionne avec mon plugin ?
Désolé mais je n’ai plus accès à l’onduleur de mon ami... si tu confirme cela, peux-tu mettre une capture d’écran de ce qu’il faut activer?
Je modifierai alors la documentation.

Merci !
Bonjour Sébastien
il n'y a rien à activer c'est le mode d'accès de base de cette onduleur pour paramétré la connexion vers la box.
Hélas cet accès a une adresse IP 5.5.5.8 est n'est pas modifiable. donc je n'arrive pas à faire fonctionner le plugin.

Vincent

Re: [Plugin Tiers] Solax

Publié : 20 sept. 2019, 20:42
par nicog
Hello!

Des news sur le fonctionnement de ce plugin ?

A+

Nicolas

Re: [Plugin Tiers] Solax

Publié : 25 sept. 2019, 19:48
par Vinbor312
rien de mon coté :-(

Re: [Plugin Tiers] Solax

Publié : 27 sept. 2019, 09:44
par nicog
:( aussi!

Dommage, du coup je pense utiliser un Qubino smart meter pour pouvoir faire le suivi de prod sous Jeedom et optimiser mon autoconso...

Si vous avez d'autres idées...

A+

Nicolas