Bonjour,
Voici pour l’information statut ey autre.
Dans les valeurs que récupère de l’onduleur (lire data plus loin dans le texte), tu as des séquences comme celles ci-dessous.
"6180_08214800":
{
"1":
[
{
"val":
[
{
"tag": 307
}
]
}
]
},
Comme nous avons une nouvelle installation, j’ai regardé tout ce qui était disponible dans l’interface de l’onduleur.
Dans l’onglet valeurs instantannées, tu as le bouton « Exporter toutes les valeurs instantannées »
Tu obtiens une page html comme celle-ci (rien que le début)
J’ai retrouvé dans cette page des valeurs présentent comme point d’entrée d’un tag.
Pour toutes les valeurs « Ok » dans la page html, j’ai retrouvé dans data des information tag 307.
J’en ai déduit que 307 était le code pour indiquer Ok.
J’ai procédé de même pour 2 ou 3 autres valeurs intéressantes.
De cette manière, je parviens à obtenir un statut de différentes parties de l’onduleur.
J’ai traduit cela dans le code:
a) récupération des valeurs
$status_general = $json['result'][$InverterKey]['6180_08214800'][$typeID]['0']['val']['0']['tag'];
$status_inverter = $json['result'][$InverterKey]['6180_08414C00'][$typeID]['0']['val']['0']['tag'];
$status_webconnect = $json['result'][$InverterKey]['6180_084B1E00'][$typeID]['0']['val']['0']['tag'];
$status_fonction = $json['result'][$InverterKey]['6180_08412800'][$typeID]['0']['val']['0']['tag'];
//$status_relais = $json['result'][$InverterKey]['6180_08416400'][$typeID]['0']['val']['0']['tag'];
//log::add(__CLASS__, 'debug',"Etat_relais $status_relais"); (51: Fermé; 311: Ouvert)
b) affichage
J’ai ajouté une nouvelle commande « production »
J’ai réutilisé la commande statut mais en donnant une information de l’élément non Ok.
Je n’ai pas encore vu des valeurs autres que Ok pour les informations Général, Onuleur et WebConnect.
else if(($DeviceType==10 || $DeviceType==20) && $cmdLogicalId == 'production') {
if ($status_fonction == '569') {
$status_fonction = 'Active';
} else if ($status_fonction == '1295') {
$status_fonction = 'Veille';
} else {
$status_fonction = 'Inactive';
}
$eqLogic->checkAndUpdateCmd($cmd, $status_fonction);
}
else if($cmdLogicalId == 'status') {
$status = '';
if(($DeviceType==10 || $DeviceType==20)) {
if ($status_general != '307') {$status = 'NOK Général';}
else if (($status_inverter != '307') && ($status == '')) {$status = 'NOK Onduleur';}
else if (($status_webconnect != '307') && ($status == '')) {$status = 'NOK WebConnect';}
else {$status = 'OK';}
} else {
$status = 'OK';
}
$eqLogic->checkAndUpdateCmd($cmd, $status);
}
J’ai essayé de limiter l’effet des commandes Production et Statut aux seuls onduleurs.
Si tu as des questions n’hésites pas à revenir vers moi.