J’avance dans mes investigation.
Alors Alexa supporte les modes AUTO, COOL, HEAT, ECO, OFF pour les thermostats. C’est expliqué ici dans l’API (Capability Property Schemas | Alexa Skills Kit)
Pour que Alexa comprenne bien j’ai trouvé que la meilleure manière de faire est de dire
Alexa, PASSE / REGLE, le chauffage du XXX en mode OFF / ETEINT → Déclenche le mode OFF
Alexa, PASSE / REGLE, le chauffage du XXX en mode CHAUFFAGE / CHALEUR → Déclenche le mode HEAT
Alexa, PASSE / REGLE, le chauffage du XXX en mode AUTO / AUTOMATIC → Déclenche le mode AUTO
Alexa, PASSE / REGLE, le chauffage du XXX en mode COOL / REFROIDISSEMENT → Déclenche le mode COOL
Pour le mode ECO… je n’ai pas trouvé en Français. Peut-être est-ce pour cela que le plugin Alexa ne declare pas le mode ECO comme un mode supporté par le thermostat Jeedom. Comme on peut le voir dans le fichier ash_thermostat.class.php.
'supportedModes'=> array('HEAT','COOL','AUTO','OFF')
Pour ceux qui veulent essayer, vous pouvez rajouter le mode ECO dans ce tableau.
Néanmoins ça ne fonctionnera pas car le plugin Alexa ne gère pas encore le changement de mode. Je vous propose donc une petite modification à faire directement dans le code pour que cela fonctionne. Dans la fonction exec du fichier ash_thermostat.class.php rajouter le switch case :
case 'SetThermostatMode':
if (isset($_directive['payload']['thermostatMode']['value'])) {
$requested_mode = $_directive['payload']['thermostatMode']['value'];
}
if ($requested_mode == "") {
break;
}
if (isset($_directive['endpoint']['cookie']['cmd_get_mode'])) {
$cmd_get_mode = cmd::byId($_directive['endpoint']['cookie']['cmd_get_mode']);
}
if (!is_object($cmd_get_mode)) {
break;
}
$eqlogic = $cmd_get_mode->getEqLogic();
if (!is_object($eqlogic)) {
break;
}
$cmd_mode_array = cmd::byGenericType('THERMOSTAT_SET_MODE',$eqlogic->getId());
if (count($cmd_mode_array) == 0) {
break;
}
log::add('ash','debug',"Requested mode : ".$requested_mode);
foreach ($cmd_mode_array as $cmd_mode){
if($requested_mode == "HEAT" || $requested_mode == "AUTO"){
$requested_mode = "CONFORT";
}
if($requested_mode == "COOL"){
$requested_mode = "OFF";
}
log::add('ash','debug',$cmd_mode->getName()." ".$requested_mode);
if(strtoupper($cmd_mode->getName()) == $requested_mode){
$cmd_mode->execute();
break;
}
}
break;
Vous pouvez ajuster la correspondance entre les modes d’Alexa et vos modes. Dans l’exemple que je viens de donner HEAT et AUTO renvoient vers mon mode CONFORT. OFF et COOL vers mon mode OFF.
En bonus je vous propose une réparation de la fonction d’augmentation ou diminution de la température en relatif (augmente de X degrés, diminue de X degrés) qui ne peut pas fonctionner en l’état (a insérer dans le même switch case que la correction précédente) :
case 'AdjustTargetTemperature':
if (isset($_directive['endpoint']['cookie']['cmd_set_thermostat'])) {
$cmd_set = cmd::byId($_directive['endpoint']['cookie']['cmd_set_thermostat']);
}
if (!is_object($cmd_set)) {
break;
}
if (isset($_directive['endpoint']['cookie']['cmd_get_thermostat'])) {
$cmd_get = cmd::byId($_directive['endpoint']['cookie']['cmd_get_thermostat']);
}
if (!is_object($cmd_get)) {
break;
}
$cmd_set->execCmd(array('slider' => $cmd_get->execCmd() + $_directive['payload']['targetSetpointDelta']['value']));
break;
Voila voila… j’espère que ça aidera ceux qui s’amuse avec Alexa et les thermostats.
Je continue mes investigations pour le mode ECO.