Nouveau thermostat type proportionnel avec gestion des presets / portes et fenêtres / détection de mouvement / gestion de présence et surconsommation

Excellent ! Belle utilisation détournée de la gestion de la puissance et de la présence.

Question pour Jean-Marc, as-tu en tête un jour d’ajouter une brique pour fédérer tous les vtherm afin d’éviter par exemple que seul 1 ou 2 pique toute l’énergie aux autres au global ?

Pas vraiment mais d’avoir une conf globale surchargeable par VTherm oui. Par exemple la gestion de la presence est la même partout, je pourrais la mettre une fois dans la conf globale et dire à chaque VTherm d’utiliser la conf globale. Pareil pour le capteur extérieur, les températures hors gel, …

Mais ca n’orchestrera pas tous les VTherms entre eux.

seul 1 ou 2 pique toute l’énergie aux autres au global

Si tu démarres ta charge de voiture, tu n’as peut-être pas envie de l’arrêter / démarrer toutes les 10 minutes pour laisser passer un autre eqt. Et pour les radiateurs ca le fait tout seul, grace au cycle de démarrage / arrêt.

Je pourrais ausssi émettre un event type versatile_thermostat_target_temperature_event quand la temp cible change (en mode manuel preset=None). Je ne sais pas pourquoi je ne l’ai pas fait de base.

Ca irait ça ?

Hello @ghostsam45 , la question a déjà été posée plein de fois car c’est un problème classique.

Soit ici, soit dans github, je te laisse chercher un peu.

Et en effet, la doc est trompeuse, finalement, ca ne marche pas comme ça aurait du.

Bon finalement, j’ai retrouvé tout seul, voici un sensor type template à faire pour remplacer ton group de person:

- binary_sensor:
    - name: maison_occupee
      unique_id: maison_occupee
      state: "{{is_state('person.jmc', 'home') or is_state('person.chr', 'home') or is_state('input_boolean.force_presence', 'on')}}"
      device_class: occupancy
1 « J'aime »

La charge de la voiture est prioritaire, je ne la coupe pas. Elle est déjà régulée pour ne pas dépasser la puissance max dispo de mon installation. Mais elle plante régulièrement l’hiver quand elle n’a vraiment pas assez d’énergie longtemps et je retrouve ma voiture déchargée au matin.
J’espère ne plus avoir ce souci cette année grâce à toi.

Je pensais plutôt à la lutte entre mes radiateurs et mon ballon d’eau chaude. Ça a tourné cette nuit même si j’ai l’impression que le ballon a du mal à rendre la main une fois qu’il a réussi à la prendre. J’ai plutôt été embêté par la mise en sécurité du vtherm puisque j’utilisais une donnée constante en guise de température mesurée à l’intérieur. Du coup je me suis plutôt branché sur un thermomètre de la maison histoire de tromper l’ennemi !

Pour la coordination des vtherm, l’intérêt pourrait être de faire tourner l’overpowering entre les différents vtherm afin d’éviter que certaines pièces ne chauffent trop au détriment d’autres. Pas de prioritisation (trop compliqué, selon quels critères…) mais une tentative d’équilibrage. Mais peut être que l’algo tourne déjà très bien comme ça. Je n’ai pas encore assez de recul…

Ça a tourné cette nuit même si j’ai l’impression que le ballon a du mal à rendre la main une fois qu’il a réussi à la prendre

Oui c’est le soucis, c’est que comme tu n’as pas de retour de température, le VTherm va toujours rester à 100% sur le ballon. C’est là que c’est pas super adapté.

Faut que tu mettes un security_delay_min de plusieurs heures pour éviter ça (attention c’est en minute).

Normalement, grace aux cycles de démarrage / arrêt à chaque cycle avec des durées dépendant de l’écart de température, ca se fait tout seul. Je le vois chez moi quand je charge aussi la voiture. Statistiquement ils finissent tous par s’allumer de temps en temps.

Je pourrais peut-être incrémenter tres doucement un compteur redémarrant à chaque début de chauffe et le fournir au vtherm en guise de température…

Oui, j’ai fait ça au début mais ce n’est pas jouable puisque quelque soit la valeur, elle risque d’être atteinte un jour (ou je peux lui mettre pareil un compteur)

Parfait ! Merci !

Attention, tu risques de casser tous mes stratagèmes (mais tu as bien raison, ton intégration doit-être utilisée pour ce pourquoi elle a été conçue ! :wink:). En revanche pour la présence, on peut imaginer des parties de maison inoccupées genre un étage ou une partie louée ou indépendante… Il faudrait peut-être offrir la possibilité de mutualiser des paramètres de configuration mais ne pas le forcer.

Merci Jean-Marc.

Oui l’event que tu propose pourrait servir, mais si je ne me trompe pas il apparaitrait à l’identique que l’on modifie la température via un service ou via une carte ?

L’objectif est :

  • de notifier la planif que l’on souhaite sortir de la dérogation et passer en mode planif >> dans ce cas un preset spécifique est parfait
  • De notifier la planif qu’on entre en dérogation : si on entre dans un preset (HG, Boost, Confort), pas de soucis l’automation de planif peut être notifiée. Par contre si on modifie juste la consigne elle ne fera pas de distingo avec une consigne modifiée par un service.

C’est pourquoi deux presets seraint top :

  • Planif ON
  • Planif OFF

Encore une fois c’ets de la réflexion, donc il y a peut être une idée meilleure…

Ca m’a l’air quand même ultra spécifique a ta façon d’utiliser, non ?

Un preset c’est un pre-reglage de température pas autre chose, sinon ca va pas rentrer dans les cases.

J’ai 5 demandes par semaine sur des fonctions spécifiques, des usages différents, etc et c’est juste la mort de VTherm si j’essaye de répondre à tous. Il faut que je garde un cap, « une vision » et de la maintenabilité à long termes.

Donc en l’état , je ne peux rien faire, désolé.

2 « J'aime »

Un preset de passage en planif ne me parfait pas si spécifique. Mais je comprends ta position vis à vis de la maintenance.

Par contre la possibilité dont je parlais plus haut de changer la consigne plutôt que d’arreter un climatiseur en cas de fenêtre ouverte ça me parait plus judicieux ?

Oui ca oui. En plus ca m’a déjà déjà été demandé mais en changeant de Hvac et pas de consigne:

1 « J'aime »

Si je peux me permettre, un peu de cosmétique, dans la config pour les consignes tu traite le froid en « AC mode ».
image

Le terme AC étant généralement utilisé pour parler d’un climatiseur, je pense qu’il vaudrait mieux parler de mode Chauffage et mode Refroidissement (je sais c’est plus simple en anglais…)

1 « J'aime »

Problème sur le mode HG (frost) :

Failed to call service climate/set_preset_mode. Got unsupported preset_mode . Must be one of ['none', 'frost', 'eco', 'comfort', 'boost']

Pourtant l’event est OK, et il passe bien VT et le thermostat cible à la bonne consigne

D’ailleurs si on passe VT en froid il change bien sa consigne (et celle du thermostat cible) mais ne bascule pas toujours le thermostat cible (Daikin AC) en mode froid. Et inversement. Parfois en cliquant plusieurs fois de suite sur l’icone (qelle que soit la carte), ça fini par passer, un peu comme si qq chose loupait la commande… Je m’en suis apercu en testant tous les modes pour capturer les events.

Bon, on ne fait pas ça tous les jours, mais j’essaie de tout tester tous les modes avant de déployer, mon objectif principal étant de gérer ce climatiseur avec une sonde externe… et ensuite de simplifier mes automations de présence, occupation et ouvertures.

Je me disais que ça serait cool d’avoir dans l’event versatile_thermostat_preset_event l’information du mode courant : hvac_mode: cool (qu’on ne voit pas quand hvac_action: idle, mais on peut aussi extraire les infos des attributs du VT et en faire un trigger et ainsi obtenir toutes les infos :

    - platform: template
      value_template: "{{ state_attr('climate.versatile_daikin', 'hvac_mode') == 'heat' and state_attr('climate.versatile_daikin', 'preset_mode') == 'boost' }}"

Le log du problème dont je parlais au début :

Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:238
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 11 December 2023 at 20:45:01 (18 occurrences)
Last logged: 22:31:16

[281472080402112] Got unsupported preset_mode . Must be one of ['none', 'frost', 'eco', 'comfort', 'boost']
[281471536364096] Got unsupported preset_mode . Must be one of ['none', 'frost', 'eco', 'comfort', 'boost']
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 238, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2067, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2104, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 272, in handle_service
    return await service.entity_service_call(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 878, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 948, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/versatile_thermostat/base_thermostat.py", line 1139, in async_set_preset_mode
    await self._async_set_preset_mode_internal(preset_mode)
  File "/config/custom_components/versatile_thermostat/base_thermostat.py", line 1149, in _async_set_preset_mode_internal
    raise ValueError(
ValueError: Got unsupported preset_mode . Must be one of ['none', 'frost', 'eco', 'comfort', 'boost']

Hello @mycanaletto ,

Il doit manquer des choses dans l’appel que tu fais à climate.set_preset_mode. Le preset que tu veux sélectionner est vide. D’où l’erreur.

Le bon appel du service doit ressembler à ça:

service: climate.set_preset_mode
target:
  entity_id:
    - climate.thermostat_bureau
  device_id: []
  area_id: []
data:
  preset_mode: frost

Ca change bien et je n’ai pas d’erreur dans les logs:
Capture d’écran 2023-12-13 à 12.28.58

Je n’appele pas un service, j’ai cette erreur quand je clique sur l’icone FROST (et quelle que soit la carte utilisée)

Pareil pour la suite de la question entre froid et chaud, juste en cliquant sur l’icone correspondant.

J’ai une question sur le preset Boost :
Est-il possible de lui définir une durée que l’on veut ?

Non, ce n’est pas possible avec la fonction interne du thermostat. Par contre rien ne t’empeche de temporiser la fonction avec une carte que tu place en stack avec le thermostat dans laquelle tu ajoute un bouton qui temporise et ensuite revient au mode confort (le mieux est de faire un bouton qui appelle un petit script)

  - service: climate.set_preset_mode
    target:
      entity_id: climate.versatile_daikin
    data:
      preset_mode: boost
  - delay:
      hours: 1
  - service: climate.set_preset_mode
    target:
      entity_id: climate.versatile_daikin
    data:
      preset_mode: comfort

J’avais fait un truc qui fonctionne toujours pour préchauffer la sdb ou j’utilise un timer qu’il est facile de terminer.

1 « J'aime »

J’ai évidemment pas le soucis. Est-ce que quelqu’un d’autre à le soucis remonté par @mycanaletto ?

Tu peux me donner les attributs de ton VTherm ? (Outils de dev / Etats bien formatté en yaml stp).

Bonjour, ça m’intéresse.
Moi mon souci c’est que quand mon schedule change de preset, le mode heat ne s’active pas et oi reste dans un état neutre , ni off ni on.

Je me doute que tu n’as pas ce problème (et je crois que je sais formater…)

hvac_modes:
  - fan_only
  - dry
  - cool
  - heat
  - heat_cool
  - "off"
min_temp: 12
max_temp: 30
target_temp_step: 1
fan_modes:
  - Auto
  - Silence
  - "1"
  - "2"
  - "3"
  - "4"
  - "5"
preset_modes:
  - none
  - frost
  - eco
  - comfort
  - boost
swing_modes:
  - "Off"
  - Vertical
  - Horizontal
  - 3D
current_temperature: 22.2
temperature: 23
fan_mode: Auto
hvac_action: heating
preset_mode: none
swing_mode: "Off"
is_on: true
hvac_mode: heat
type: null
frost_temp: 15
eco_temp: 18
boost_temp: 23
comfort_temp: 22
frost_away_temp: 17
eco_away_temp: 17
boost_away_temp: 21
comfort_away_temp: 20
power_temp: 13
target_temperature_step: 1
ext_current_temperature: 8.4
ac_mode: true
current_power: null
current_power_max: null
saved_preset_mode: none
saved_target_temp: 23
saved_hvac_mode: null
window_state: "off"
motion_state: null
overpowering_state: null
presence_state: "on"
window_auto_state: "off"
window_bypass_state: false
security_delay_min: 60
security_min_on_percent: 0.5
security_default_on_percent: 0.1
last_temperature_datetime: "2023-12-14T01:03:45.116962+01:00"
last_ext_temperature_datetime: "2023-12-14T01:03:41.545048+01:00"
security_state: false
minimal_activation_delay_sec: 10
device_power: 1
mean_cycle_power: null
total_energy: 1.89
last_update_datetime: "2023-12-14T01:03:45.134813+01:00"
timezone: Europe/Paris
window_sensor_entity_id: null
window_delay_sec: 5
window_auto_enabled: false
window_auto_open_threshold: null
window_auto_close_threshold: null
window_auto_max_duration: null
motion_sensor_entity_id: null
presence_sensor_entity_id: input_boolean.presence_ac
power_sensor_entity_id: null
max_power_sensor_entity_id: null
temperature_unit: °C
is_device_active: true
ema_temp: 22.21
is_over_climate: true
start_hvac_action_date: "2023-12-13T20:27:46.765862+01:00"
underlying_climate_0: climate.daikin
underlying_climate_1: null
underlying_climate_2: null
underlying_climate_3: null
auto_fan_mode: auto_fan_none
current_auto_fan_mode: auto_fan_none
auto_activated_fan_mode: null
auto_deactivated_fan_mode: null
friendly_name: Versatile Daikin
supported_features: 57

Et le thermostat cible

hvac_modes:
  - fan_only
  - dry
  - cool
  - heat
  - heat_cool
  - "off"
min_temp: 7
max_temp: 35
target_temp_step: 1
fan_modes:
  - Auto
  - Silence
  - "1"
  - "2"
  - "3"
  - "4"
  - "5"
preset_modes:
  - none
  - away
  - eco
  - boost
swing_modes:
  - "Off"
  - Vertical
  - Horizontal
  - 3D
current_temperature: 24
temperature: 23
fan_mode: Auto
hvac_action: heating
preset_mode: none
swing_mode: "Off"
friendly_name: "Thermostat : Daikin"
supported_features: 57

D’ailleurs si on passe VT en froid il change bien sa consigne (et celle du thermostat cible) mais ne bascule pas toujours le thermostat cible (Daikin AC) en mode froid. Et inversement. Parfois en cliquant plusieurs fois de suite sur l’icone (qelle que soit la carte), ça fini par passer, un peu comme si qq chose loupait la commande…