Onduleur Solax X1

Bonjour,
j’ai une installation de production solaire en auto-consommation et je souhaiterais intégrer ma production dans Jeedom.
Mon onduleur est un Solax X1 Air 3kw, je transfère les données dans le cloud via une clé wifi, ça fonctionne bien, j’ai installé le plugin Solax mais impossible d’intégrer les données dans Jeedom.
Si quelqu’un à une idée ou à déjà réussi je suis preneur d’idées.
Merci beaucoup

As tu avancé sur ton projet?

je pense que la seule solution serait de se connecter a la page web du cloud via un script et d’en extraire les données pour les afficher dans jeedom
l’inconvénient sera que la connexion ne sera pas masqué et donc risque de piratage du compte cloud

personellement, j’ai un jeedom sur Raspberry Pi 3.

L’API de l’onduleur Solax est désactivée sur son adresse IP distribuée par le DHCP de ma box. Apparemment le constructeur a fermé l’API sur les onduleurs fabriqués depuis 2019 (honte à lui). En revanche si on se connecte directement au wifi de l’onduleur (adresse 5.8.8.8) on peut interroger cette page avec une requête de type :

curl -X POST http://5.8.8.8/?optType=ReadRealTimeData

on obtient lors toutes les données de l’onduleur :

{« type »:« X1-Hybiyd-G3 »,« SN »:« SWSXXXXXXXX »,« ver »:« 2.033.20 »,« Data »:[0.6,1.3,260.0,193.6,9.1,233.9,2079,32,11.8,1477.1,10,134,239,109.00,-16.00,-1746,25,4.4,0,25408308.0,1,91,116.2,85.0,31.0,35.0,25.7,24.3,3.9,3.9,70,1,0,0,0,0,0,0,0,0,0,138.86,802.87,0,0,0,0,0,0,0,50.00,0,0,27.2,0.0,0,0.00,0,0,0,0.00,0,8,0,0,0.00,0,8,2,1,0,1.00,0,100,10,20.00,20.00,0,0,0,0,18.8,428.5,1471.6,0.4,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0.00,0.00,1,1,109.9,-16.4,-1802],« Information »:[5.000,3,« X1-Hybiyd-G3 »,« XXXXXXXXXXX »,1,3.11,0.00,3.13,1.05],« battery »:{« brand »:« 83 »,« masterVer »:« 1.09 »,« slaveNum »:« 2 »,« slaveVer »:[1.10,1.10,0.00,0.00,0.00,0.00,0.00,0.00],« slaveType »:[0,0,0,0,0,0,0,0]}}

J’ai configuré le Raspberry pour avoir le eth0 branché sur mon réseau domestique d’un coté,
et le wifi wlan0 connecté au wifi du Solax. Cela permet de faire un pont entre les deux réseaux.

Lorsque je lance la requête -X POST http://5.8.8.8/?optType=ReadRealTimeData en ligne de commande ssh sur le Raspberry Pi cela me renvoie bien les données.

A noter que du coup, l’accès au wifi de l’onduleur est bloqué pour tout les autres appareils (y compris ma box). Du coup le solaxcloud n’est plus alimenté (ce qui me va très bien, si j’arrive à récupérer les données localement).

Maintenant j’aurai besoin d’aide pour comprendre comment transférer cette commande curl -X POST dans un script appellé par jeedom pour obtenir les valeurs de production en direct.

J’ai bien essayé de bricoler avec le plugin script, mais je ne suis arrivé à rien. Je n’ai pas d’idée comment lancer cette ligne de commande et comment parser correctement les différentes données. Est ce que quelqu’un peut m’orienter un peu sur le plugin script (la doc est un peu, comment dire, peu compréhensible?) pour que je puisse me dépatouiller?

D’avance merci pour les bonnes âmes qui orienteront un newbee sur ce plugin script.

pour info si ça aide quelqu’un,
j’ai identifié la structure des données renvoyées par le Solax
(je ne sais pas a quoi servent les champs 20 à 40 et 43 à 49 qui sont à 0)

|0|PV - PV1 Current: A
1|PV - PV2 Current: A
|2|PV - PV1 Voltage: 200 V
|3|PV - PV2 Voltage: 208 V
|4|Grid - Output Current: 2|
|5|Grid - Network Voltage: |
|6|Grid - Power: 532|
|8|Inverter Yield - Today: |
|9|Inverter Yield - This Mo|
|10| Grid - Feed in Power: -|
|11| PV - PV1 Input Power: 8|
|12| PV - PV2 Input Power: 6|
|13| Battery Voltage: 55.68|
|14| Dis/Charge Current: -8.|
|15| Battery Power: -484|
|16| Battery Temperature: 27|
|17| Remaining Capacity: 89|
|19| Battery Yield - Total: |
|41| Grid - Exported: 373.9|
|42| Grid - Imported: 38.6|
|50| Grid - Frequency: 49.96|

Bonjour ,
A t on une chance que les modeles X1-Boost/Air/Mini soient un jour pris en charge dans ce plugin ?
C’est un bon onduleur et ça serait vraiment un plus

bonjour à tous.
Pour recuperer les donnees deun onduleur solax en html et php rien de plus simple.
Dans votre compte solax recuperer l’adresse de l’API en y ajoutant votre token et sn puis programmez ces qques lignes en php:

//récuperation des données sur le cloud
$site=« https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=$token&sn=$sn » ;

//formater le fichier json
$homepage = file_get_contents($site);
$arr = json_decode($homepage, true);

ce fichier comprends 3
arrays seul l’array result nous interesse

//recuperation de l’array result
$data=$arr[« result »];

//affichage des differentes variables décrites dans l’aide de l’api en exemple:
echo $data[« uploadTime »];
echo $data[« yieldtoday »]." Kw/h";
echo $data[« yieldtotal »]." Kw/h";
echo $data[« soc »]." %";
$powernow= $data[« powerdc1 »] +$data[« powerdc2 »];
echo $powernow;

J’espere vous avoir aidé
Moonhead

1 « J'aime »

Je met ici quelques notes pour ceux que ça intéresse :

J’ai mis dans le jeedom un scénario avec un bloc de code :

$solaxdata=[
‹ PV1Current › => "
‹ PV2Current › => "
‹ PV1Voltage › => "
‹ PV2Voltage › => "
‹ Grid-OutputCurrent › => "
‹ Grid-NetworkVoltage › => "
‹ Grid-Power › => "
‹ SolaxUnknown7 ›=>"
‹ InverterYieldToday › => "
‹ InverterYieldThisMonth › => "
‹ GridFeedinPower › => "
‹ PV1InputPower › => "
‹ PV2InputPower › => "
‹ BatteryVoltage › => "
‹ Dis/ChargeCurrent › => "
‹ BatteryPower › => "
‹ BatteryTemperature › => "
‹ RemainingCapacity › => "
‹ SolaxUnknown18 ›=>"
‹ BatteryYield - Total › => "
‹ SolaxUnknown20 ›=>"
‹ BatterySOC ›=>"
‹ SolaxUnknown22 ›=>"
‹ SolaxUnknown23 ›=>"
‹ SolaxUnknown24 ›=>"
‹ SolaxUnknown25 ›=>"
‹ SolaxUnknown26 ›=>"
‹ SolaxUnknown27 ›=>"
‹ SolaxUnknown28 ›=>"
‹ SolaxUnknown29 ›=>"
‹ SolaxUnknown30 ›=>"
‹ SolaxUnknown31 ›=>"
‹ SolaxUnknown32 ›=>"
‹ SolaxUnknown33 ›=>"
‹ SolaxUnknown34 ›=>"
‹ SolaxUnknown35 ›=>"
‹ SolaxUnknown36 ›=>"
‹ SolaxUnknown37 ›=>"
‹ SolaxUnknown38 ›=>"
‹ SolaxUnknown39 ›=>"
‹ SolaxUnknown40 ›=>"
‹ GridExported › => "
‹ GridImported › => "
‹ SolaxUnknown43 ›=>"
‹ SolaxUnknown44 ›=>"
‹ SolaxUnknown45 ›=>"
‹ SolaxUnknown46 ›=>"
‹ SolaxUnknown47 ›=>"
‹ SolaxUnknown48 ›=>"
‹ SolaxUnknown49 ›=>"
‹ GridFrequency › => "] ;

$arr=[];

$output = shell_exec('curl -X POST http://5.8.8.8/?optType=ReadRealTimeData ');
$scenario->setLog($output);
$jsonData = json_decode($output true);
foreach ($jsonData[‹ Data ›] as $value) {
$arr[]=$value;
}

$i=0;
foreach($solaxdata as $clef => $valeur){
$solaxdata[$clef]=$arr[$i];
$i += 1;
}

foreach($solaxdata as $clef => $valeur){
$scenario->setlog($clef.’ : '.$valeur);
$scenario->setdata($clef $valeur false);
}

2 « J'aime »

Ce scenario, est lui même appellé par un autre scénario qui répète chaque 15 secondes (4 fois par minute, donc) : exécution du scénario curlsolax, puis pause de 14 secondes, etc… pour avoir un taux de rafraichissement des valeurs de l’onduleur plus fréquent qu’une fois par minute.

1 « J'aime »

Bonjour Michel.

J’ai un solax power x1.
J’aurais besoin comme toi de récupérer en temps réel les données de l’onduleur. Celle fournies par le solaxcloud sont incomplètes et rafraîchies seulement toutes les 5 minutes.

J’utilise un dongle ethernet (non wifi donc), ce qui ne me permet pas d’accéder à l’adresse 5.8.8.8.
Quelqu’un aurait-il une idée pour accéder à ces données avec cette configuration.

J’ai vu sur le net qu’il semble possible d’accéder aux données du modus par le port 502, via Modbus over TCP. Je bloque pour aller plus loin.
Merci pour vos suggestions.

Bonjour,

Avez vous progressé dans vos investigations ?
Je viens de mettre en service et de connecter un X1 mini à solax cloud.
Visiblement le port 502 n’est pas ouvert pour recevoir les connexions en modbus TCP. Modbus doctor échoué à se connecter sur le l’adresse IP de l’onduleur.

Je vais essayer de me connecter sur l’interface modbus RTU, aucune garantie que cela fonctionne.

Solax Cloud semble beaucoup plus limité que l’interface modbus.

Je vous fais un retour si cela fonctionne.

1 « J'aime »

Bonjour. Un peu tardif…

Non je n’ai pas avancé, mais depuis le début de l’année je peste contre le serveur de solax cloud qui semble etre insuffisant pour gérer les requêtes de tous les nouveaux clients.
De toutes manieres sa fréquence de mise a jour etant de plusieurs minutes, les courbes affichées sont décevantes, la réactivité à toute variation de consommation ou d’ensoleillement est très lente.

Seule solution pour avoir l’équivalent en local (et en mieux) est de récupérer les données du compteur anti-injection (SMD230) en modbus et mouliner tout ça dans un plugin jeedom.
Ca serait super, on pourrait même imaginer de diriger le surplus vers la batterie d’un vehicule electrique :slight_smile:
Je pourrais essayer la partie modbus (avec un esp32), mais je manque terriblement de temps.

Allez… qui m’encourage…

Bonjour Michel67.

Super

Bonjour,
En regardant ce post : Solax X1 Hybrid G4 (local & cloud API) - Share your Projects! - Home Assistant Community
J’ai essayé sur mon Solax :
curl -d « optType=ReadRealTimeData&pwd=mettre_son_REGNO » -X POST http://192.168.1.xx
Ca donne :
{« sn »:« REGNO »,« ver »:« 3.006.04 »,« type »:15,« Data »:[2362,85,1971,4997,4612,0,44,0,2034,0,2,481,0,23,0,0,0,0,0,0,0,0,0,0,100,0,32,4613,0,0,0,0,64595,65535,130,0,9339,0,2912,35,0,0,0,0,0,0,0,0,0,0,0,1,0,0,498,0,63570,65535,65386,65535,0,0,0,0,0,0,0,0,0,0,0,0,63604,65535,3600,0,61936,65535,10,0,537,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,9217,5387,5890,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],« Information »:[6.000,15,« H4602AIB652024 »,8,1.30,0.00,1.28,1.04,0.00,1]}%``
Interéssant non?
`

1 « J'aime »

Bonjour

J’ai essayé sur mon solax boost x1 avec dongle ethernet. Reponse : connexion refusée.

Le plugin jeedom solax cloud fonctionne avec le regno que j’utilise pour tester

Je ne sais pas s’il faut indiquer un port particulier ?

Bonjour,

Tu as bien renseigné ton le champ derrière pwd= ?
De mon coté ca marche avec un X1-Hybrid-G4.

Oui j’ai bien utilisé le registration number de 10 caracteres. J’utilise ce numéro dans le plugin solax cloud qui fonctionne tres bien.

Mince alors :frowning:

Deux explications possibles :

  • ca ne fonctionne pas avec le dongle ethernet (uniquement avec le dongle wifi).
  • ca ne fonctionne qu’avec les solax hybrides (il me semble avoir vu ça sur un document solax…)

Dommage , ça me serait vraiment très utile. Je suis pret à acheter un dongle wifi si ça fonctionne sur un solax x1

J’ai effectivement un dongle wifi.