Comment éteindre le thermostat et changer le mode via Alexa?

Bonjour à tous,

Je suis progressivement entrain de relier mon installation domotique à Alexa et je rencontre 2 soucis.

  1. Je n’ai pas trouvé comment régler les modes du thermostat (si cela est possible)
  2. Je n’ai pas trouvé la commande pour mettre le thermostat sur OFF.

Est ce que quelqu’un sait comment régler ca?

Merci d’avance

Richard

Alors j’ai fais quelques essais.

En disant « Passe le thermostat du salon en mode XXX » ou XXX = COOL, OFF, AUTO alors Alexa transmets bien la requête à Jeedom.

Dans le log ca donne une ligne avec :

« payload »:{« thermostatMode »:{« value »:« COOL »}}}}}

Mais Jeedom répond :

« thermostatMode »,« value »:{« value »:« AUTO »}

Donc c’est le plugin alexa qui ne change pas le mode du thermostat (je précise que j’ai essayé de créer un mode COOL).

Je continue a investiguer, je vais jetter un oeil dans le code du plugin pour voir ce qui se passe.

Je me réponds a moi-même. II n’y a pas a l’heure actuelle dans le plugin de gestion des modes.

J’espère que ça viendra bientôt. :wink:

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.

Bonjour,
Merci pour ton retour, je viens d’ajouter ton compte dans la beta du plugin (disponible demain)

1 « J'aime »

Je te remercie beaucoup. Je vous ferais un retour sur les types d’équipements que j’utilise.

Bonne journée.

Moi j’ai créé un virtuel (comme une lumière) associé à un scénario. Pour On c’est CONFORT et Off c’est ECO.
Je dis « Alexa, allume le chauffage » ou « Alexa, éteins le chauffage »
Cela passe de Confort à ECO

C’est une solution :wink: Merci.