Communication modbus sur onduleur Solax

Bonjour Jean-Baptiste,

J’ai finalement trouvé mon bonheur ici :

C’est la syntaxe de la commande :

curl -d « optType=ReadRealTimeData&pwd=REQ_NO_SOLAX » -X POST http://192.168.1.xxx
.
Cette commande renvoit :
{« sn »:« REQ_NO_SOLAX »,« ver »:« 3.003.02 »,« type »:4,« Data »:[0,0,0,0,0,0,0,0,0,0,0,637,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,105,0,0,0,0,0,0,65045,65535,1443,0,13003,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],« Information »:[6.000,4,« XB3260I3469062 »,8,0.00,0.00,1.39,0.00,0.00,1]}

(Beaucoup de 0 car il fait nuit au moment de la commande …)
j’ai ensuite trié les datas avec un petit scénario qui s’execute toutes les minutes :

$solaxdata=[
  'NetworkVoltage' => "",			// Volt de la maison
  'OutputCurrent' => "",			// Ampères en sortie de l'onduleur
  'ACPower' => "",					// Watts en sortie de l'onduleur 
  'PV1Voltage' => "",				// Voltage de la String 1
  'PV2Voltage' => "",				// Voltage de la String 2
  'PV1Current' => "",				// Ampères en sortie de la String 1
  'PV2Current' => "",				// Ampères en sortie de la String 2
  'PV1InputPower' => "",			// Watts en sortie de la String 1
  'PV2InputPower' => "",			// Watts en sortie de la String 2
  'SolaxUnknown10' => "",			
  'RunMODE' => "",					// Mode de fonctionnement de l'onduleur. 2 = Production ; 0 = En attente production
  'TotalYield' => "",				// Energie (kWh) totale produite par l'onduleur
  'SolaxUnknown13' => "",
  'RunMODE' => "",					// Mode de fonctionnement de l'onduleur
  'DailyYield' => "",				// Energie (kWh) produite par jour par l'onduleur
  'unknown16' => "", 				//batterie
  'unknown17' => "",				//batterie
  'unknown18' => "",				//batterie
  'unknown19' => "",				//batterie
  'unknown20' => "",				//batterie
  'unknown21' => "",				//batterie
  'unknown22' => "",				//batterie
  'unknown23' => "",				//batterie
  'unknown24' => "",				//batterie
  'unknown25' => "",				//batterie
  'unknown26' => "",				//batterie
  'unknown27' => "",				//batterie
  'unknown28' => "",				//batterie
  'unknown29' => "",				//batterie
  'unknown30' => "",				//batterie
  'unknown31' => "",				//batterie
  'unknown32' => "",				//batterie
  'unknown33' => "",				//batterie
  'unknown34' => "",				//batterie
  'unknown35' => "",				//batterie
  'unknown36' => "",				//batterie
  'unknown37' => "",				//batterie
  'unknown38' => "",				//batterie
  'unknown39' => "",				//batterie
  'unknown40' => "",				//batterie
  'unknown41' => "",				//batterie
  'unknown42' => "",				//batterie
  'unknown43' => "",				//batterie
  'unknown44' => "",				//batterie
  'unknown45' => "",				//batterie
  'unknown46' => "",				//batterie
  'unknown47' => "",				//batterie
  'unknown48' => "",				//batterie
  'unknown51' => "",
  'GridExported' => "",
  'GridImported' => "",
  'TotalFeedInEnergy' => "",		// Energie totale renvoyée sur le réseau EDF
  'unknown53' => "",
  'TotalConsumption' => "",			//Energie totale importée depuis le réseau EDF
  'unknown55' => "",
  'unknown56' => "",
  'unknown57' => ""
];

$arr=[];
$output = shell_exec('curl -d "optType=ReadRealTimeData&pwd=SXFAWWMMQN" -X POST http://192.168.1.101');
$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);
  cmd::ByString("#[BETA][Data Solax][$clef]#")->event("$valeur");

}

j’envoi le tout dans un virtuel :
image

je tire une synthèse de ces infos dans un second virtuel