[TUTO] Récuperer infos WKS batterie Pylontech sur sa box JeeDom

Bonjour à tous !

Après un long moment de recherche, j’ai enfin pu trouver une façon de récupérer les infos (tension, pourcentage batterie, …) de mon onduleur WKS et de mes batteries Pylontech.

J’ai fais un petit tuto en vidéo. Si ça peut aider quelques personnes, je partage :

https://www.youtube.com/watch?v=uZejKU-_Q6s&t=2s

:wink:

passe par un scenario avec un bloc code plutot que de relire 10 fois les mêmes infos dans des scripts…

j’utilise juste un esp un convertisseur RS232 connecter en direct sur les pylontech !

Les sources sont ici :

le reste est un bloc code

$tags = $scenario->getTags(); // recuperation des tag
$ip = $tags['#ip#']; // recuperation ip

$url = "http://".$ip."/req?code=pwr"; // composition adresse url
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($curl); // appel de la requette et recuperation dans $data
$data=str_replace("\n",'',$data);
$data=str_replace("\r",'',$data);

$err="";
if(curl_error($curl)) {
    $scenario->setLog('DEBUG 0 ------------------> Erreur sur CURL N° : '.curl_errno($curl).' , '.curl_error($curl));
  	$err = 'Erreur sur CURL N° : '.curl_errno($curl).' , '.curl_error($curl);
}
curl_close($curl);// fermeture de la requette

for ($i = 1; $i <= 6; $i++) {$data = str_replace("  "," ",$data);}//supprime tous les espaces double
$data = str_replace(" ",",",$data);// remplace les espaces par des virgules
$data = str_replace("pwr","",$data);
$data = str_replace("@","",$data);
$data = str_replace("Time","Date,Heure",$data);
$data = str_replace("Coulomb","Energie",$data);
$data = str_replace("Power",", Rack ",$data);
$data = str_replace("Idle","Veille",$data);
$data = str_replace("Normal","ok",$data);
$data = str_replace("Tempr"," Temperature ",$data);
$data = str_replace("Tlow","T Min",$data);
$data = str_replace("Thigh","T Max",$data);
$data = str_replace("Vlow","V Min",$data);
$data = str_replace("Vhigh","V Max",$data);
$data = str_replace("Base.St"," Statut ",$data);
$data = str_replace("Curr"," Intensité ",$data);
$data = str_replace("Dischg"," Décharge ",$data);

$scenario->setLog('DEBUG 1 ------------------> : '.$data); //Trace des données dans le log du scenario

$tab = explode(',', $data);//decomposition des données en tableau

for ($i = 0; $i <= 8*17; $i=$i +17) {
$t1=date('d:m:Y',strtotime($tab[31+$i]." ".$tab[32+$i])-(0));
$t2=date('H:i:s',strtotime($tab[31+$i]." ".$tab[32+$i])-(0));
$tab[31+$i]=$t1;
$tab[32+$i]=$t2;
}

$l= 8;
$table="<br><table style='border-collapse: separate;border-spacing: 3px;'>";
$table = $table."<tr>";

for($z=1;$z<18;$z++){
$table = $table."<td>".$tab[$z]."</td>";
}
$table = $table."</tr>";
for ($l = 1; $l <9; $l++) {
$z = (17*($l-1));
$table = $table."<tr>";
$table = $table."<td>".$tab[18+$z]."</td>";
$table = $table."<td>".$tab[19+$z]/1000 ."V</td>";
$table = $table."<td>".$tab[20+$z]/1000 ."A</td>";
$table = $table."<td>".$tab[21+$z]/1000 ."°C</td>";  
$table = $table."<td>".$tab[22+$z]/1000 ."°C</td>";  
$table = $table."<td>".$tab[23+$z]/1000 ."°C</td>";  
$table = $table."<td>".$tab[24+$z]/1000 ."V</td>";  
$table = $table."<td>".$tab[25+$z]/1000 ."V</td>"; 
$table = $table."<td>".$tab[26+$z]."</td>";  
$table = $table."<td>".$tab[27+$z]."</td>";  
$table = $table."<td>".$tab[28+$z]."</td>";  
$table = $table."<td>".$tab[29+$z]."</td>";  
$table = $table."<td>".$tab[30+$z]."</td>";   
$table = $table."<td>".$tab[31+$z]."</td>";
$table = $table."<td>".$tab[32+$z]."</td>";
$table = $table."<td>".$tab[33+$z]."</td>";  
$table = $table."<td>".$tab[34+$z]."</td>";
$table = $table."</tr>";
}
$table = $table."</table>";

$table = str_replace("<td>","<td style ='border: 1px solid red;height: 30px;'>",$table);

if($err ==''){
$tags["#data#"]= $table;
$tags["#err#"]="";  
}else{
$tags["#data#"]= $err;
$tags["#err#"]= "SENARIO PYLONTECH ".$err;
}

//$tags["#err#"]=""; 

//$tags["#data#"]= $table;
$scenario->setTags($tags); // affectation des tag
2 « J'aime »

je viens de réussir à faire fonctionner en Ethernet + méga (3 onduleurs) en m’inspirant de tes indications (passage par script HTML via les <Class>)

1 « J'aime »

soit j’ai un pb avec les onduleurs soit j’ai un pb de connaissance avec la partie PV.

pour obtenir les W il faut bien multiplier la tension par les ampères?
si j’ai 100volt et 30 amp ca fait 3kW?

or sur l’onduleur
106V * 21A => 1.07kW

Bonjour,

sur su courant continu oui mais

si tes mesures sont sur du courant alternatif le résultat est des VA

pour faire des Watts il faut P = I * U * Cosphi sur de l’alternatif

bonne soirée

la partie PV est en CC… vu qu’elle est avant l’onduleur…

Dans ce cas c’est bon.

1 « J'aime »

Salut Olive
je voulais utiliser ton scénario pour les batteries Pylontech.
Pourrais tu m’expliquer comment rentrer l’ip et l’adresse url?
Je t’ai aussi envoyé un message hier.
Merci d’avance

tout est indiqué sur le github

je te conseil de recuperer les données en jmqtt

#ifdef ENABLE_MQTT
//NOTE 1: if you want to change what is pushed via MQTT - edit function: pushBatteryDataToMqtt.
//NOTE 2: MQTT_TOPIC_ROOT is where battery will push MQTT topics. For example "soc" will be pushed to: "home/grid_battery/soc"
#define MQTT_SERVER        "192.168.0.6"
#define MQTT_PORT          1883
#define MQTT_USER          ""
#define MQTT_PASSWORD      ""
#define MQTT_TOPIC_ROOT    "home/grid_battery/"  //this is where mqtt data will be pushed
#define MQTT_PUSH_FREQ_SEC 2  //maximum mqtt update frequency in seconds

Bonjour, et merci Olive
J’ai bien avancé!
Tout est dans le tuto!
Surtout la méthode pour installer les librairies.
Pour le téléversement choisir Wemos D1 mini lite.

Encore merci Olive
J’ai utilisé un DollaTek MAX3232 RS232 Serial Port vers TTL Convertisseur Module DB9
Le tout en 3.3V
https://www.amazon.fr/gp/product/B07DK3874B/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1


Ci-joint le branchement.
Il faut inverser RX et TX sur le Wemos.

Juste une question; l’indication « is_normal » correspond à quoi?

ou et dans quel contexte ?
(excuse moi il y a plus de 2 ans que je n’ai pas remis le nez la de dans )

edit:
yep c’est dans le code
ça renvoie 1 si ok et 0 si pas ok

Salut Olive, ça peut peut-être t’intéresser.
Pour le Sofar ME-3000SP
J’ai trouvé ça; https://github.com/cmcgerty/Sofar2mqtt
J’ai commandé le matériel.
Je vous tiendrais au courant.
Bonne journée et merci encore
Pour le montage ci-dessus je vais faire une boite en impression 3D.

2 « J'aime »

bonjour @zep57
ca m 'interesse aussi
j 'ai deja tt le matos mais pas reussi a mettre en marche
cdt

Hello
Je l’ai mis en route.
Les données remontent malgré le message d’erreur « CRC-FAULT »
Super

Bonsoir
Ou mettre l’adresse ip du module wifi dans votre code ?.
je n’arrive pas à le faire fonctionner.
Je recupère bien les infos batteries via putty.
Merci d’avance.
bonne soirée

Salut @Alex50,
Ton poste date un peu mais je reviens dessus car je cherche comme toi une méthode pour récupérer les infos de deux onduleurs WKS et quatre batteries Pylontech sur Jeedom.
Personnellement, je vais opter pour une liaison filaire et non wifi (comme je trouve souvent sur le Web).
Le lien vers ta vidéo-tuto est hélas mort.
Pourrais-tu le rendre à nouveau disponible, stp ?
Merci et bonne journée.
Dom.

Pour ton onduleur tu peux aussi utiliser le plugin solarman

Edit: oups je n’avais pas vu la date du post