Calcul de la loi de Peukert en fonction des données d'un Bmv-700
Salut
Donc en attendant de recevoir mon module pzem-017, j'ai commencer a bosser sur le script php de ce module en y intégrant le calcul de la loi de Peukert pour avoir des mesures les plus précises possible.
Bon n’étant pas un pro du php, il y a surement des erreurs de syntaxes ou/et de programmation... Dis moi David si tu vois des choses qui te saute aux yeux...
https://pastebin.zici.fr/?f2afa43e6d9167a2#h52B3peFsqztKj9b3l4m9X2IPVbzpC99hNv1TxfGLI8=
<?php
//paramètres batterie
$CapNom=400; // Capacité nominale en Ah
$Coef=1.17; // Coefficient de Peukert
$DischargeMax=80; // Pourcentage max de décharge de la batterie
// Capacité de décharge maximum
$CapDisghargeMax=$CapNom/100*$DischargeMax;
// Synchronisation batterie chargée
if ($data['CS'] == 'Float') {
$CapRest=$CapDisghargeMax;
}
// Comptage temps entre 2 mesures
file_put_contents('/tmp/timer_Peukert', time());
//Lecture et affichage des données brut
$cmd='/usr/bin/sudo /usr/bin/python3 /opt/PvMonit/bin/pzem_017.py ';
exec($cmd, $pzem_sortie, $pzem_retour);
if ($pzem_retour != 0){
trucAdir(1, 'Erreur '.$conso_retour.' à l\'exécution du programme .'.$cmd);
} else {
trucAdir(4, 'Le script retourne '.$pzem_sortie[0]);
$nb=0;
foreach (json_decode($pzem_sortie[0]) as $key=>$data) {
$array_data[$nb]['id']=$id.$key;
$array_data[$nb]['screen']=1;
$array_data[$nb]['smallScreen']=0;
$array_data[$nb]['value']=$data;
if ($key == 'V'){
$array_data[$nb]['units']='V';
$array_data[$nb]['desc']='Tension '.$id;
}
if ($key == 'A'){
$array_data[$nb]['units']='A';
$array_data[$nb]['desc']='Ampères '.$id;
$data=$Id
}
if ($key == 'P'){
$array_data[$nb]['units']='W';
$array_data[$nb]['desc']='Puissance '.$id;
}
if ($key == 'E'){
$array_data[$nb]['units']='Wh';
$array_data[$nb]['desc']='Consommation '.$id;
}
$nb++;
}
}
// calcul capacité restante
$Time=file_get_contents('/tmp/timer_Peukert');
$T=time()-$Time/3600; // Temps écoulé entre 2 mesures
$CapT=$Id**$Coef*$T; // Capacité a l'instant T en fonction de Peukert
$Cap=$CapRest-$CapT; // Capacité restante Réelle
// Calcul SoC
$SOC=$Cap/$CapDischargeMax*100;
// Affichage des résultats
$array_data[0]['id']='CapRest';
$array_data[0]['screen']=1;
$array_data[0]['smallScreen']=0;
$array_data[0]['desc']='Capacité Restante';
$array_data[0]['value']=$Cap[0];
$array_data[0]['units']=' Ah';
$array_data[0]['id']='SOC';
$array_data[0]['screen']=1;
$array_data[0]['smallScreen']=0;
$array_data[0]['desc']='Charge Restante';
$array_data[0]['value']=$SOC[0];
$array_data[0]['units']=' %';
return $array_data;
?>
Edited by akoirium