grâce au plugin héliotrope, je calcule le rendement théorique de mes panneaux photovoltaïques de la manière suivante :
- Avoir le plugin Héliotrope installé, avec un équipement de configuré sur la bonne adresse
- Avoir un virtuel qui contient les 2 paramètres manquants (orientation, inclinaison des panneaux) et qui stockera le rendement calculé
- un scénario qui lance un bout de code en PHP qui prend les paramètres de l'héliotrope, les paramètres du virtuel et calcule l'incidence et le rendement théorique des panneaux
Je crée un équipement Héliotrope Je rajoute un virtuel Je crée 4 infos virtuelles numériques
en renseignant la valeur d'orientation et d'inclinaison des panneaux
Enfin, je crée un scénario avec le script suivant :PS : pour rappel :
L'orientation et l'angle entre le Sud et la direction dans laquelle regarde vos panneaux. C'est 0° si c'est plein Sud, 90° si c'est plein Ouest, -90° si c'est plein Est
L'inclinaison est l'angle entre les panneaux et l'horizontale. S'ils sont posés sur toiture, c'est normalement l'angle de votre toiture.
Code : Tout sélectionner
function get_value($cmd_name) {
$cmd = cmd::byString($cmd_name);
$value = $cmd->execCmd();
return $value;
}
$objet_id=$scenario->getData("LE_CODE_DU_VIRTUEL");
$objet=eqLogic::byId($objet_id);
foreach ($objet->getCmd() as $cmd_def) {
if ($cmd_def->getName()=='Incidence') {
$cmd_incidence=$cmd_def;
}
if ($cmd_def->getName()=='Rendement') {
$cmd_rendement=$cmd_def;
}
if ($cmd_def->getName()=='Inclinaison') {
$cmd_inclinaison=$cmd_def;
}
if ($cmd_def->getName()=='Orientation') {
$cmd_orientation=$cmd_def;
}
}
//Positionnement des panneaux solaires
//Pente
$beta=deg2rad($cmd_inclinaison->execCmd());
//Angle extérieur d'azimut, ou angle vs le plein sud (+ vers l'ouest , - vers l'est)
$gamma=deg2rad($cmd_orientation->execCmd());
//Récupération des paramètres de l'héliotrope
//altitude solaire
$h=deg2rad(get_value("#[Technique][Héliotrope][Altitude du Soleil]#"));
//angle solaire d'altitude
$theta_z=(pi()/2)-$h;
//angle solaire azimut
$alpha=deg2rad(get_value("#[Technique][Héliotrope][Azimuth 360 du Soleil]#")-180);
//angle résultant
$theta=acos(cos($beta)*cos($theta_z)+sin($beta)*sin($theta_z)*cos($alpha-$gamma));
//rendement correspondant
$rendement=intval(cos($theta)*100);
if ($h<=0) {
//on est sous l'horizon. rendement nul.
$rendement=0;
}
if (rad2deg($theta)>90) {
//on est derriere les panneaux. rendement nul.
$rendement=0;
}
$theta=rad2deg($theta);
$cmd_incidence->event(($theta));
$cmd_rendement->event(($rendement));