Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Confusion entre hvac_mode et hvac_action dans climate.py #219

Closed
julienld opened this issue Feb 16, 2023 · 7 comments
Closed

Confusion entre hvac_mode et hvac_action dans climate.py #219

julienld opened this issue Feb 16, 2023 · 7 comments

Comments

@julienld
Copy link

julienld commented Feb 16, 2023

Bonjour,

En ce moment, le "state" de l'entité climate pour un thermostat Hilo est dynamique selon l'était actuel. Il indique "heat" quand il est en train de chauffer et "off" quand le thermostat est en attente (la pièce n'est pas assez froide pour chauffer).

Je ne pense pas que ça soit la bonne logique. Le state d'un climate devrait représenter la cible (heat, cool, off, etc.) et non pas l'état actuel. C'est en tout cas comme ça que mes autres "climate" fonctionnent dans Home Assistant et ce que dit la doc. Pour représenter l'étant courant, l'attribut hvac_action devrait être utilisé. hvac_mode devrait représenter la cible (presque tout le temps "heat", sauf quand le thermostat est hors ligne ou à 5C).

Dans Home Assistant, ce n'est pas très grave puisque l'interface permet toujours de modifier la température. Par contre, dans mon cas, j'expose les thermostat à Google Home et je ne peux plus modifier la température dans l'interface si le thermostat n'est pas en train de chauffer puisque les boutons sont grisés quand l'entité a pour état "off" (désactivée).

Voici en ce moment:

image

Normalement, ça devrait ressembler à ça:

image

Voici les endroits de le code qui pourraient être affectés:

https://github.com/dvd-dev/python-hilo/blob/aa3c7585405bac9e129c1d6ba0f18599a6826f74/pyhilo/device/climate.py#L34

def hvac_mode(self):

if self._device.hvac_mode == HVAC_MODE_HEAT:

Est-ce que quelqu'un confirme mes observations?

Je peux essayer de faire une pull request, mais j'ai l'impression que je vais devoir changer les 2 projets (pyhilo et hilo)...

J'ai aussi l'impression que ça pourrait être un changement cassant si quelqu'un utile le state ou le hvac_mode.

Qu'en pensez-vous?

@DBestman
Copy link

Tu as très bien décrit le même problème que j'ai observé, et je suis d'accord avec tes observations. Je t'encourage à le régler! 😁

@valleedelisle
Copy link
Contributor

Belle observation, je crois également que tu as raison après avoir lu la doc.

Je crois qu'on devrait mettre la logique dans python-hilo comme hvac_mode et tout simplement exposer hvac_mode dans l’intégration home assistant.

Si j'ai bien compris:

  • On remplacerait hvac_mode ici par hvac_action et on remplace heat par heating et off par idle, a moins qu'il soit offline.

https://github.com/dvd-dev/python-hilo/blob/main/pyhilo/device/climate.py#L31-L34

Malheureusement, Hilo ne semble pas supporté les calls de type set_hvac_mode (ex pour mettre a off), donc ici, ça reste pareille:

def set_hvac_mode(self, hvac_mode):
"""Set operation mode."""
return

Et tant qu'à travailler là dedans, il faudrait presque migrer vers les Enum car les constantes sont dépréciées.
https://github.com/home-assistant/core/blob/dev/homeassistant/components/climate/const.py#L8-L31

J'ai toujours pas environnement de dev et j'manque de temps pour deepdive tout ça, mais si vous soumettez des PR, je vais les reviews et merged.

@julienld
Copy link
Author

Je vais essayer de faire une PR en fin de semaine, mais je ne garantis rien.

@ic-dev21
Copy link
Collaborator

Belle observation, je crois également que tu as raison après avoir lu la doc.

Je crois qu'on devrait mettre la logique dans python-hilo comme hvac_mode et tout simplement exposer hvac_mode dans l’intégration home assistant.

Si j'ai bien compris:

  • On remplacerait hvac_mode ici par hvac_action et on remplace heat par heating et off par idle, a moins qu'il soit offline.

https://github.com/dvd-dev/python-hilo/blob/main/pyhilo/device/climate.py#L31-L34

Malheureusement, Hilo ne semble pas supporté les calls de type set_hvac_mode (ex pour mettre a off), donc ici, ça reste pareille:

def set_hvac_mode(self, hvac_mode):
"""Set operation mode."""
return

Et tant qu'à travailler là dedans, il faudrait presque migrer vers les Enum car les constantes sont dépréciées. https://github.com/home-assistant/core/blob/dev/homeassistant/components/climate/const.py#L8-L31

J'ai toujours pas environnement de dev et j'manque de temps pour deepdive tout ça, mais si vous soumettez des PR, je vais les reviews et merged.

Je comprends pas mal où tu t'en vas, le bout qui m'échappe c'est où pyhilo entre en ligne de compte? Il ne fait pas parti du custom component, est-il installé via core? Où se trouvent ces fichiers si je veux tenter l'expérience de mon bord?

julienld pushed a commit to julienld/hilo that referenced this issue Feb 18, 2023
@julienld
Copy link
Author

J'ai fait les 2 pull requests... testé avec HA 2023.2.3.

dvd-dev/python-hilo#75
#220

valleedelisle added a commit to dvd-dev/python-hilo that referenced this issue Feb 18, 2023
valleedelisle added a commit that referenced this issue Feb 18, 2023
@valleedelisle
Copy link
Contributor

Merci bien pour les commits et pour avoir tester. J'vais faire une release plus tard ce weekend!

@julienld
Copy link
Author

Merci pour le release!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants