Je sais pas quoi faire la… Ya aucun mode chez Google qui correspond a l’état du thermostat
Bonjour
je pense que le soucis viens du mapping de la commande « Thermostat Etat (BINAIRE) (pour Plugin Thermostat uniquement) » dans GSH
qui est mappé avec le statut [Actif] du thermostat
Car si jamais je positionne la consigne du thermostat a 22° (donc > a la t° constaté dans la pièce) donc le statut du Thermostat passe à [ACTIF] = 1
et du coup que vois je sur Google :
Google me dit bien que je suis en Mode ‹ Chauffage › (ce qui est exact, je l’ai associé au mode confort)
Donc je pense que la correction à faire est la suivante :
- Ce n’est pas le mode qu’il faut corriger c’est le statut : Il faut forcer Jeedom a dire que le statut du Thermostat est = 1 (actif) lorsque ce dernier est sur un autre mode que le OFF
Jeedom semble envoyer à google que le statut du Thermostat est à 0 lorsque celui ci ne chauffe pas mais qu’on a bien activé un mode différent de Off
Il faut forcer Jeedom a dire que le statut du Thermostat est = 1 (actif) lorsque ce dernier est sur un autre mode que le OFF (car le soucis vient bien de la , lorsque la consigne du Thermostat est < a la température constaté dans la piece, le statut du Thermostat est à 0 est cela est considéré par Google comme si ce dernier est en fait en OFF, alors que non il est pas OFF, il est juste en attente que la température de la pièce passe en dessous de la consigne pour lancer le chauffage)
Le mapping d’un Thermostat GSH
"id": "233",
"type": "action.devices.types.THERMOSTAT",
"roomHint": "Chambre bas",
"name": {
"name": "[Chambre bas][Thermostat Chambre bas]",
"nicknames": [
"Thermostat Chambre bas",
"Thermostat Chambre bass",
"Thermostat Chambre bas Chambre bas"
]
},
"traits": [
"action.devices.traits.TemperatureSetting"
],
"willReportState": false,
"customData": {
"TemperatureSetting_cmdGetSetpoint": "1798",
"TemperatureSetting_cmdGetHumidity": "1806",
"TemperatureSetting_cmdGetMode": "1813",
"TemperatureSetting_cmdGetState": "1800",
"TemperatureSetting_cmdGetTemperature": "1805",
"TemperatureSetting_cmdSetThermostat": "1799",
"local_execution::apikey": "vW48RXWkrGbJ9862yf3yi8GFRZhZJNmb"
},
"attributes": {
"availableThermostatModes": "heat,off,eco",
"thermostatTemperatureUnit": "C"
},
C’est la ligne
"TemperatureSetting_cmdGetState": "1800",
Qui pose soucis, car même si le mode est Confort, si cette ligne envoit le statut ‹ Arrété › (0) ( cequi est le cas lorsque T° piece > T°Consigne) et bien Google comprend que en fait le Thermostat est en OFF donc il verrouille tout et force le mode à OFF sur Google
En fait il manque une commande côté Jeedom, qui renverrait 1 si le Thermostat est != OFF (donc 1 en mode chauffe ou arrété, et 0 uniquement si on a mis en Off le Thermostat)
cdt
Ok c’est peut etre le activeThermostatMode qui donne cette information a google alors et pas ThermostatMode. J’ai fait un changement pour que les 2 soit toujours identique a voir demain.
Bonjour,
Toujours pareil avec la dernière bêta
Comme l’indique Frixo c’est vraiment le statut « Arrêté »’ du thermostat qui pose problème quand la consigne est atteinte ou dépassée.
Bonjour
Alors non c’est pas exactement pareil
désormais, lorsque le
- Thermostat JEEDOM est OFF => Le Thermostat Google est OFF
- Thermostat JEEDOM est en CONFORT mais statut Arrété (T° Consigne < T° constaté pièce) => Thermostat Google en Mode Autre ! ( l’édition de la consigne est vérouillé tout comme en mode OFF)
- Thermostat JEEDOM en CONFORT statut en cours de chauffe (T° Consigne >T° constaté pièce) => Thermostat Google OK en mode Chauffe avec Consigne éditable
cdt
Je pense que on est pas le status qu’il faut il faudrait heat ou cool mais quand le thermostat est pas réellement en train de faire quelque chose (consigne atteinte) je ne peux pas savoir si il est plutôt en mode chauffage ou froid.
.
Demain il y aura une nouvelle beta ou au lieu de on je mets auto… a voir
Bonjour Loic
j’ai fait des essai sur la ligne 241 du fichier (gsh_TemperatureSetting.class.php)
case __('Arrêté', __FILE__):
$return['thermostatMode'] = 'auto';
break;
alors :
- Si $return[‹ thermostatMode ›] = ‹ auto ›; => Google est verouillé en mode Autre , impossible d’éditer la consigne
- Si $return[‹ thermostatMode ›] = ‹ on ›; => Google est verouillé en mode Autre , impossible d’éditer la consigne
- Si $return[‹ thermostatMode ›] = ‹ heat ›; => Ca marche !
Bon j’avoue que par contre moi j’ai pas de pompe a chaleur réversible (mode clim), donc je sais pas trop comment faire en mode clim pour inverser cela !
Il y a un autre soucis, c’est que lorsque mon Thermostat est en Mode OFF (sur Jeedom), le statut de ce dernier est ‹ Arrété › et non ‹ Off › , du coup Google comprend que le Thermostat est en route !
du coup j’ai l’impression que cette ligne de code ne s’exécute jamais
case __('Off', __FILE__):
244 $return['thermostatMode'] = 'off';
245 break;
[MAJ de 11H03]
C’est bon j’ai trouvé le bon code qui marche , le voila
case __('Arrêté', __FILE__):
241 $cmd = cmd::byId($_infos['customData']['TemperatureSetting_cmdGetMode']);
242 if (is_object($cmd)) {
243 $mode = $cmd->execCmd();
244 $cmd_off = $eqLogic->getCmd('action', 'off');
245 if(!is_object($cmd_off)){
246 $cmd_off = cmd::byId($_device->getOptions('TemperatureSetting::off'));
247 }
248 if (is_object($cmd_off) && $mode == $cmd_off->getName()) {
249 $return['thermostatMode'] = 'off';
250 break;
251 }
252 }
253 $return['thermostatMode'] = 'heat';
254 break;
255 case __('Off', __FILE__):
256 $return['thermostatMode'] = 'off';
257 break;
258 }
j’ai la forte impression que ce bout de code ne s’execute jamais
case __('Off', __FILE__):
256 $return['thermostatMode'] = 'off';
257 break;
258 }
cdt
Re
J’ai aussi une petite proposition d’évolution, que perso j’ai implémenté en contournant un peu le systeme
Je souhaitais que via le mode Thermostat Google on puisse enclencher le Thermostat Jeedom, sauf que ce dernier est verrouillé côté Jeedom ,(car sinon j’ai le planning Jeedom qui me le varie auto la nuit ),
Du coup mon idée serait de proposer une option qui authorise Google a déverouiller le Thermostat
Ex : Lorsque je sélectionne Confort sur Google , ca dévérouille le Thermostat Jeedom et la bascule en Confort
Je sais pas la… Cette partie du code n’est pas de mois je ne voulais pas forcement l’accèpter au debut on m’a forcé a le faire mais je ne sais plus le maintenir je ne peux donc pas intervenir dessus plus que ce que j’ai deja fait.
@frixo : pour ta demande ca ne sera pas possible je ne peux pas encore plus dédié la partie thermostat que au plugin thermostat désolé
Bonjour
Pas grave pour la demande j’ai trouvé comment contourner
Bon par contre ma modif de code marche du tonnerre !
Ça serait dommage de pas en faire profiter tout le monde non
Cdt
Tu peux l’expliquer ? Car oui ca marche pour toi pas de soucis mais pour les dizaine de milliers d’installation et de configuration differente ca je sais pas…
Peux tu essayer aussi heatcool peut etre que ca peut marcher a la place du on/auto
Bonjour,
Je vais ajouter mes trouvailles sur l’action activethermostatmode et thermostatmode. Je comprends que Google s’attend à reçevoir les deux actions dans une tranmission de l’état. De plus j’ai constaté que les verbes permettant de connaitre l’état actif actuel à savoir si entrain de chauffer ou de refroidir sont taillés sur mesure pour le plugin Thermostat et sont en français. Pour ceux qui ont des thermostat zwave ou zigbee comme moi, impossible de transmettre le mode actuel car les verbes sont toujours en anglais.
Par conséquent je crois qu’il est facile d’adapter pour les deux type de thermostats avec les verbes en anglais qui sont standard comme suit:
if (isset($_infos['customData']['TemperatureSetting_cmdGetState'])) {
$cmd = cmd::byId($_infos['customData']['TemperatureSetting_cmdGetState']);
if (is_object($cmd)) {
$state = $cmd->execCmd();
switch ($state) {
case __('Heating', __FILE__);
case __('Chauffage', __FILE__);
$return['activeThermostatMode'] = 'heat';
break;
case __('Cooling', __FILE__);
case __('Climatisation', __FILE__);
$return['activeThermostatMode'] = 'cool';
break;
case __('Idle', __FILE__):
case __('Suspendu', __FILE__):
$return['activeThermostatMode'] = 'none';
$return['thermostatMode'] = 'heat';
break;
case __('Off', __FILE__):
case __('Arrêté', __FILE__):
$return['activeThermostatMode'] = 'none';
$return['thermostatMode'] = 'off';
break;
Pas une grosse modification et pourrait facilement accepter tous les thermostats autres que ceux du plugin.
Bonjour
Bien sûr voila ce que ca fait
Si le Statut du Thermostat est en ‹ Arrété ›
case __('Arrêté', __FILE__):
Alors 2 possibilités :
- Soit le Thermostat est en Mode OFF , donc il faut dire à Google que le Thermostat est désactivé
$cmd = cmd::byId($_infos['customData']['TemperatureSetting_cmdGetMode']);
242 if (is_object($cmd)) {
243 $mode = $cmd->execCmd();
244 $cmd_off = $eqLogic->getCmd('action', 'off');
245 if(!is_object($cmd_off)){
246 $cmd_off = cmd::byId($_device->getOptions('TemperatureSetting::off'));
247 }
248 if (is_object($cmd_off) && $mode == $cmd_off->getName()) {
249 $return['thermostatMode'] = 'off';
250 break;
251 }
- Soit le thermostat n’est pas en mode Off, mais la T° de consigne étant < à la température de la piece , le thermostat ne chauffe pas car pas besoin (ce qui explique le statut du Thermostat à ‹ Arrété › )
$return['thermostatMode'] = 'heat';
254 break;
Le reste j’ai pas touché , ca y été déja (je parle de ca :
255 case __('Off', __FILE__):
256 $return['thermostatMode'] = 'off';
257 break;
cdt
Donc ca marchera pas en mode clim… Ce qui est genant
Alors j’ai fouillé mais il me manque une info …
Comment sait on si on est en mode chauffage ou clim dans Jeedom ?
car si je m’amuse à jouer avec la consigne de passe en mode ‹ Aucun › donc j’ai pas d’info pour savoir si je suis en chauffe ou en clim ?
Après, de mes essais, ca change rien sauf le code couleurs côté Google…
cdt
On sait pas c’est le soucis, c’est au moment de se lancer qu’il calcul les 2 possibilité et choisis la plus adaptée…
Le mode heatcool ne marche pas ?
Re
alors je suis reparti sur le code de base
et j’ai juste … commenté la ligne 241
241 // $return['thermostatMode'] = 'on';
, car en fait elle sert a rien, elle fait complètement redondance avec ce qu’il y a 20 ligne au dessus
J’ai créé un mode froid et chaud
tout est détecté comme il faut ! et le mapping se fait dans les 2 sens !!!
la clim , le chauffage, le mode eco, le Off
voila content
PS les 20 lignes au dessus c’est celles la
foreach ($cmds_action as $cmd_found) {
200 if ($mode == $cmd_found->getName()) {
201 switch ($cmd_found->getId()) {
202 case $_device->getOptions('TemperatureSetting::heat'):
203 $return['thermostatMode'] = 'heat';
204 break;
205 case $_device->getOptions('TemperatureSetting::cool'):
206 $return['thermostatMode'] = 'cool';
207 break;
208 case $_device->getOptions('TemperatureSetting::eco'):
209 $return['thermostatMode'] = 'eco';
210 break;
211 case $_device->getOptions('TemperatureSetting::auto'):
212 $return['thermostatMode'] = 'auto';
213 break;
214 case $_device->getOptions('TemperatureSetting::heatcool'):
215 $return['thermostatMode'] = 'heatcool';
216 break;
217 case $_device->getOptions('TemperatureSetting::off'):
218 $return['thermostatMode'] = 'off';
219 break;
220 }
221 }
Ok tu peux essayer a la ligne 249 de changer :
if (isset($_infos['customData']['TemperatureSetting_cmdGetState'])) {
par
if (!isset($return['thermostatMode']) && isset($_infos['customData']['TemperatureSetting_cmdGetState'])) {
En gros si ya deja un mode ca sert a rien d’en recalculer un.
J’ai pas compris ton dernier post, mais je confirme que le fais de désactiver tout bonnement la ligne 241 résoud le soucis