Bonjour,
Dans les actions de la zone « bureau », je n’utilise pas le mode Azimut.
J’utilise donc que les actions monter et descendre sans formule.
La zone test n’a pas d’action pour le moment.
Pour les zones qui utilisent le mode Azimut, je n’ai pas de formule non plus, j’utilise en action la commande positionnement avec la valeur de la commande qui correspond au « Ratio Vertical ».
Sinon, pour mon souci de retour d’état du volet sur la nouvelle zone « test », j’utilise la commande « état » du volet pour l’objet état réel :
On voit que la commande « Etat du volet » de la zone « test » est en numeric et il n’y a rien dans « Date collecte » et « Date valeur » :
Dans la zone « Bureau » qui utilise l’état du même volet, « L’état du volet » est en string et j’ai bien des dates dans « Date collecte » et « Date valeur » :
Quand je regarde le code du plugin, on vient bien créer cette commande en numeric :
$this->AddCommande("Etat du volet","position","info","numeric",1,'GENERIC_INFO','core::shutter');
Mais qu’elle soit en numéric ou string, est-ce que ça change quelque chose réellement ? A part peut-être le fait de pouvoir afficher une icone de type « shutter » ou non.
Si je ne dis pas de bétise, c’est mis à jour avec cette fonction :
public function CheckRealState($Hauteur) {
if($this->getConfiguration('InverseHauteur'))
$Hauteur=$this->HauteurInverse($Hauteur);
log::add('Volets','info',$this->getHumanName().'[Etat] : Changement de l\'état réel du volet => '.$Hauteur.'%');
if(cache::byKey('Volets::ChangeState::'.$this->getId())->getValue(false)){
log::add('Volets','debug',$this->getHumanName().'[Etat] : Le changement d\'état est autorisé');
if($Hauteur == cache::byKey('Volets::CurrentState::'.$this->getId())->getValue(0))
cache::set('Volets::ChangeState::'.$this->getId(),false, 0);
}else{
log::add('Volets','debug',$this->getHumanName().'[Etat] : Le changement d\'état n\'est pas autorisé');
//if($Hauteur != $this->getCmd(null,'position')->execCmd())
$this->GestionManuel();
}
$this->checkAndUpdateCmd('position',$Hauteur);
}
Qui semble être lancée dans celle ci :
public static function pull($_option) {
$Volet = Volets::byId($_option['Volets_id']);
if (is_object($Volet) && $Volet->getIsEnable()) {
$Event = cmd::byId($_option['event_id']);
if(is_object($Event)){
switch($Event->getlogicalId()){
case 'azimuth360':
$Volet->GestionAzimute($_option['value']);
break;
default:
if ($Event->getId() == str_replace('#','',$Volet->getConfiguration('RealState'))){
$Volet->CheckRealState($_option['value']);
}else{
$Volet->GestionEvenement($Event->getId());
}
break;
}
}
}
}
Et on retrouve aussi la gestion dans le démon je pense :
$listener = listener::byClassAndFunction('Volets', 'pull', array('Volets_id' => $this->getId()));
if (!is_object($listener)){
$listener = new listener();
$listener->setClass('Volets');
$listener->setFunction('pull');
$listener->setOption(array('Volets_id' => $this->getId()));
}
$listener->emptyEvent();
if ($this->getConfiguration('RealState') != ''){
$listener->addEvent($this->getConfiguration('RealState'));
$RealState=cmd::byId($this->getConfiguration('RealState'));
if(is_object($RealState)){
$Hauteur = $RealState->execCmd();
if($this->getConfiguration('InverseHauteur'))
$Hauteur=$this->HauteurInverse($Hauteur);
$this->checkAndUpdateCmd('position',$Hauteur);
}
};
Du coup, pourquoi je n’ai aucune valeur qui remonte quand la commande « état du volet » est en Numeric, je ne comprends pas…