Versatile Thermostat - piloter votre chauffage avec la solution la plus complète

Bonjour,
J’ai configuré Versatile Thermostat, j’en suis à l’étape planification et je suis assez débutant avec HomeAssistant.
Dans la doc, il est mis en exemple d’utiliser l’intégration Scheduler.
J’ai 2 questions :
. Pourquoi vaut-il mieux utiliser une intégration Scheduler plutôt que créer une entité planification qui est native HomeAssistant?
. Lors de la configuration de la carte Scheduler, j’ai ajouté les identités « climate » mais je n’ai pas le bouton « MAKE SCHEME » pour ajouter une scène.
Je ne comprends pas comment avoir ce bouton, j’ai pas tout à fait les mêmes écrans ? (voir captures en PJ)


Merci pour votre aide
version HomeAssistant : 2025.12.5, interface 20251203.3
scheduler-component : v.3.3.8
scheduler-card : v4.0.10

Manu

Question de choix et peut-être pour ceux qui veulent une visualisation sur le dashboard ou besoin de modifier leur planning

Perso j’utilise la planification dans les helpers de HA, mais à la retraite je n’ai pas besoin de plannings complexes :slight_smile:

Salut, si je ne dit pas de bétises, ta 2eme capture d’écran montre la configuration de la carte. Alors que la 1er capture, mon la configuration du « scheduler/programme » de chauffe. Il faut que tu créer la carte, puis après tu pourrais créer le programme de chauffe comme sur ta 1er capture.

Attention, la carte Scheduler a beaucoup évoluer depuis mes captures d’écran dans le Readme. Ca peut expliquer les différences.

Hello @Jean-Marc_Collin

J’essaye de comprendre quelque chose mais en vain.

J’ai un Vtherm over climate avec cycle de 30 minutes, délai activation minimal de 600 s et pareil en désactivation.

Je demande 17.6 en consigne et j’ai 17,5 dans la pièce. Le onTime est de 0s mais le Vtherm donne quand même la consigne au central boiler de chauffer . J’ai manquer quelque chose ?

Merci

Hello, il n’y a pas de TPI pour les over_climate : versatile_thermostat/documentation/fr/algorithms.md at main · jmcollin78/versatile_thermostat · GitHub

Donc pas de on_percent, onTime, … En over_climate c’est le sous-jacent qui régule et pas VTherm.

C’est des Sonoff TRVZB avec régulation de vanne j’ai bien les paramètres TPI pourtant

Ah ok, désolé, c’était pas clair (t’imagines pas le nb de fois où on m’a remonté cette anomalie). On reprend donc, tu peux me donner tes attributs comme expliqué ici: versatile_thermostat/documentation/fr/reference.md at main · jmcollin78/versatile_thermostat · GitHub (VTherm et configuration centrale stp).

Je vais regarder

et voici :

hvac_modes: heat, sleep, off
min_temp: 7
max_temp: 35
target_temp_step: 0.1
friendly_name: Bureau Vtherm
supported_features: 401
current_temperature: 17.5
temperature: 17.6
hvac_action: heating
hvac_mode: heat
preset_mode: none
ema_temp: 17.51
specific_states: 
is_on: true
last_central_mode: null
last_update_datetime: '2026-01-03T15:37:29.310799+01:00'
ext_current_temperature: 2.82
last_temperature_datetime: '2026-01-03T15:23:45.530454+01:00'
last_ext_temperature_datetime: '2026-01-03T15:21:11.697037+01:00'
is_device_active: true
device_actives:
  - number.bureautrv_valve_opening_degree
nb_device_actives: 1
ema_temp: 17.51
temperature_slope: 0
hvac_off_reason: null
total_energy: 0
last_change_time_from_vtherm: '2026-01-03T15:37:29.308968+01:00'
messages: []
is_sleeping: false
is_locked: false
is_recalculate_scheduled: false
auto_tpi_state: 'on'
auto_tpi_learning:
  coeff_indoor_heat: 0.6
  coeff_outdoor_heat: 0.01
  coeff_indoor_autolearn: 1
  coeff_outdoor_autolearn: 0
  coeff_indoor_cool: 0.6
  coeff_outdoor_cool: 0.01
  coeff_indoor_cool_autolearn: 1
  coeff_outdoor_cool_autolearn: 0
  max_capacity_heat: 0.9
  max_capacity_cool: 1
  offset: 0
  last_power: 0.14
  last_order: 17.5
  last_temp_in: 17.51
  last_temp_out: 2.82
  last_state: heat
  previous_state: heat
  last_on_temp_in: 0
  last_update_date: '2026-01-03T15:37:12.961624'
  last_heater_stop_time: '2026-01-03T15:00:27.129372'
  cycle_start_date: '2026-01-03T15:37:12.961624'
  cycle_active: true
  current_cycle_cold_factor: 1
  consecutive_failures: 0
  autolearn_enabled: true
  last_learning_status: on_time_too_short_vs_heating_time
  total_cycles: 4
  consecutive_boosts: 0
  recent_errors: []
  regime_change_detected: false
  learning_start_date: '2026-01-03T14:20:27.097240'

configuration: 
ac_mode: false
type: over_climate_valve
is_controlled_by_central_mode: true
target_temperature_step: 0.1
timezone: Europe/Paris
temperature_unit: °C
is_used_by_central_boiler: true
max_on_percent: null
have_valve_regulation: true
cycle_min: 30
minimal_activation_delay_sec: 600
minimal_deactivation_delay_sec: 600

preset_temperatures: 
frost_temp: 7
eco_temp: 17.5
boost_temp: 21
comfort_temp: 19
frost_away_temp: 0
eco_away_temp: 0
boost_away_temp: 0
comfort_away_temp: 0

current_state: 
hvac_mode: heat
target_temperature: 17.6
preset: none

requested_state: 
hvac_mode: heat
target_temperature: 17.6
preset: none

is_presence_configured: false
is_power_configured: false
power_manager: 
device_power: 1
mean_cycle_power: 0.2

is_motion_configured: false
is_window_configured: false
is_window_auto_configured: false
is_safety_configured: true
safety_manager: 
safety_state: 'off'
safety_delay_min: 60
safety_min_on_percent: 0.7
safety_default_on_percent: 0.4

is_lock_configured: true
lock_manager: 
is_locked: false
lock_users: true
lock_automations: true
lock_code: false

is_auto_start_stop_configured: false
is_over_climate: true
regulation_accumulated_error: 0
regulated_target_temperature: null
vtherm_over_climate: 
start_hvac_action_date: null
underlying_entities:
  - climate.bureautrv
is_regulated: true
auto_fan_mode: auto_fan_none
current_auto_fan_mode: auto_fan_none
auto_activated_fan_mode: null
auto_deactivated_fan_mode: null
follow_underlying_temp_change: false
auto_regulation_use_device_temp: false
regulation:
  regulated_target_temperature: null
  auto_regulation_mode: auto_regulation_valve
  regulation_accumulated_error: 0

valve_open_percent: 20
power_percent: 20
on_percent: 0.2
vtherm_over_climate_valve: 
have_valve_regulation: true
valve_regulation:
  underlyings_valve_regulation:
    - - number.bureautrv_valve_opening_degree
      - number.bureautrv_valve_closing_degree
  on_percent: 0.2
  power_percent: 20
  function: tpi
  tpi_coef_int: 0.6
  tpi_coef_ext: 0.01
  tpi_threshold_low: 0
  tpi_threshold_high: 0
  minimal_activation_delay: 600
  minimal_deactivation_delay: 600
  min_opening_degrees: '15'
  opening_threshold_degree: 15
  max_closing_degree: 85
  valve_open_percent: 20
  auto_regulation_dpercent: 5
  auto_regulation_period_min: 1
  last_calculation_timestamp: '2026-01-03T15:37:29.307743+01:00'
underlying_valves:
  number.bureautrv_valve_opening_degree:
    hvac_action: heating
    percent_open: 20
    last_sent_opening_value: 20
    min_opening_degree: 15
    max_opening_degree: 100
    min_sync_entity: null
    max_sync_entity: null
    step_calibration: 0.1

preset_modes: none, frost, eco, comfort, boost

et

central_boiler_state: off
is_central_boiler_configured: true
is_central_boiler_ready: true
central_boiler_manager: 
is_on: false
activation_scheduled: false
delayed_activation_sec: 0
nb_active_device_for_boiler: 0
nb_active_device_for_boiler_threshold: 1
total_power_active_for_boiler: 0.1
total_power_active_for_boiler_threshold: 0
service_activate:
  service_domain: climate
  service_name: set_temperature
  entity_domain: climate
  entity_name: unknown_product_422_chauffage
  entity_id: climate.unknown_product_422_chauffage
  attribute_name: temperature
  attribute_value: '24'
  data:
    temperature: '24'
    entity_id: climate.unknown_product_422_chauffage
service_deactivate:
  service_domain: climate
  service_name: set_temperature
  entity_domain: climate
  entity_name: unknown_product_422_chauffage
  entity_id: climate.unknown_product_422_chauffage
  attribute_name: temperature
  attribute_value: '10'
  data:
    temperature: '10'
    entity_id: climate.unknown_product_422_chauffage

device_class: running
icon: mdi:water-boiler-off
friendly_name: Central boiler

et sensor.bureau_vtherm_on_time = 0 et sensor.bureau_vtherm_off_time = 1800

Re,

Quand j’ajoute une planification sur la carte Scheduler, je ne peux choisir que des « actions » pas de scène.


il n’existe qu’un module Scheduler et qu’une carte Scheduler ?

merci

Hello,

Ok je vois. Les coef sont bons:

  tpi_coef_int: 0.6
  tpi_coef_ext: 0.01

Quand tu as pris la photo, le calcul donne que la vanne est ouverte à 20%:

    percent_open: 20
    last_sent_opening_value: 20

Comme 20% est au-dessus du seuil minimal de 15%:

min_opening_degree: 15

le VTHerm est considéré comme actif:

is_device_active: true
device_actives:
  - number.bureautrv_valve_opening_degree

Quand il fait froid, le TPI garde toujours un fond de chauffe (20% dans ton cas) pour compenser les pertes de chaleur.

Donc tout est normal, pourquoi veux-tu que ça ne chauffe pas ?

Ah, je relis et je crois comprendre :

  minimal_activation_delay: 600
  minimal_deactivation_delay: 600

20% d’1/2 h ça fait pile 6 min soit 360 sec << minimal_activation_delay. Mais ce sont des paramètres qui sont là pour les radiateurs électriques et éviter qu’ils ne switches trop souvent. Donc je suppose que c’est ça l’explication (j’ai jamais essayé cette combinaison c’est vrai).

Le but d’un TRV c’est justement d’avoir une valeur constante et de ne pas switcher on/off en permanence. Donc c’est plutot cohérent. Et tu as bien besoin de 20% d’ouverture.

Ok plusieurs question alors :

J’ai une PAC donc j’avais mis les délai par sécurité pour éviter des cycles trop court. Je peux le faire par ici quand même ?

Donc selon le calcul le ontime est bien de zéro et du coup sur l’auto TPI j’ai cette erreur : on_time_too_short_vs_heating_time

Et enfin j’ai l’impression que comme le ontime = 0 si la température consigne est dépassé il arrête pas la chauffe mais c’est qu’une impression.

Je cherche à peaufiner les réglages encore

Salut @Jean-Marc_Collin ,

Super l’ajout du préréglage temporisé.
Peut-il outre passé les préréglages du sheduler ?

Hello,

Oui il est prioritaire. Si le Scheduler change pendant le preset temporisé, il sera pris en compte à la fin de la tempo. Donc VTherm le garde comme étant le dernier état souhaité de l’utilisateur et l’appliquera lorsque le preset temporisé sera fini.

Je veux un retour si des fois ça ne marche pas comme prévu.

Bonsoir

Ma question s’est perdue, j’ai suivi ton conseil et ça marche bien pour ma grande pièce avec 4 radiateurs
Un Vtherm Master qui pilote deux VTherm Satellites avec chacun deux radiateurs avec vannes sonoff TRVZB

Si je veux activer l’auto tpi, je me demande si c’est encore une bonne config car je ne pourrais le faire que sur les deux satellites ?

Ouo il faut le faire sur les VTherms qui régulent. Sur le master ca ne sert à rien.

Mais je conserve quand même cette configuration avec le Master ça ne va pas perturber le fonctionnement ? Ou je reviens à une configuration 2 Vtherm

C’est comme tu veux, ça ne gêne pas du tout l’auto TPI, le master ne fait que distribuer des consignes et chaque VTherm esclave fait sà régulation

Bonjour,

J’ai fait la mise à jour vers la version 8 à l’occasion des vacances. Autant avoir du temps quand on joue avec le chauffage :grinning_face_with_smiling_eyes:
J’ai un radiateur Heatzy qui m’a résisté.
Voilà la synthèse de tout ça. Comme je ne sais pas bien lire les logs et que je manque parfois de logique, je me suis aidé d’une IA, au moins cela m’a forcé à comprendre ce qu’elle proposait.

___________

  1. Contexte
  • Thermostat utilisé : Versatile Thermostat (VTherm).

  • Actionneur piloté : climate.cuisine (Heatzy, fil pilote).

  • Objectif : que le ON/OFF du VTherm coupe réellement le radiateur via l’entité climate.cuisine.


2. Symptômes observés

  1. Dans l’UI, le bouton ON/OFF du VTherm semblait fonctionner, mais :

    • En position ON :

      • climate.cuisinestate = heat

      • hvac_action = heating

    • En position OFF :

      • climate.cuisinereste state = heat

      • hvac_action = heating

      • preset_mode = comfort

  2. Malgré le passage du VTherm en OFF, le radiateur continuait à chauffer.

  3. Test manuel via Outils de développement → Services :

service: climate.set_hvac_mode
entity_id: climate.cuisine
data:
  hvac_mode: "off"

→ Le radiateur s’éteint bien, et climate.cuisine passe à state = off.

Donc :

  • L’actionneur est OK,

  • La commande envoyée par VTherm en OFF n’est pas la bonne / pas prise en compte.


3. État et attributs de climate.cuisine

Attributs pertinents :

hvac_modes:
  - heat
  - "off"
  - auto

preset_modes:
  - comfort
  - eco
  - away
  - Comfort 1
  - Comfort 2
  - boost
  - Vacation

hvac_action: heating
preset_mode: comfort

Point clé :
:backhand_index_pointing_right: Il n’y a pas de preset_mode: off disponible sur ce climate.


4. Configuration initiale de VTherm

Dans la configuration du VTherm pour la Cuisine (UI) :

  • Commande d’allumage (ON)
    set_preset_mode / preset_mode: comfort :white_check_mark: (valide)

  • Commande d’extinction (OFF)
    set_preset_mode / preset_mode: off :cross_mark:

Or :

  • preset_mode: off n’existe pas sur climate.cuisine (non listé dans preset_modes).

  • Du coup, Home Assistant ignore cette commande → l’entité reste en heat/comfort.

Résultat :
VTherm passe visuellement en OFF, mais l’entité climate reste en mode chauffage → radiateur non coupé.


5. Solution mise en place

On a aligné VTherm sur ce que supporte réellement l’entité climate.cuisine, à savoir hvac_mode :

Nouvelle configuration VTherm

Commande d’allumage :

set_hvac_mode / hvac_mode: heat

Commande d’extinction :

set_hvac_mode / hvac_mode: off

(les anciennes commandes set_preset_mode/... ont été supprimées)


6. Résultat après correction

Tests après modification :

  • VTherm ON :

    • climate.cuisine.state = heat

    • hvac_action = heating

    • Le radiateur chauffe → :white_check_mark: conforme

  • VTherm OFF :

    • climate.cuisine.state = off

    • Le radiateur se coupe et reste coupé tant que VTherm est OFF → :white_check_mark: conforme

La chaîne complète VTherm → climate.cuisine → radiateur fonctionne désormais correctement.

Hello,

Très joli post, bravo. On voit la touche de l’IA. Tu as résolu ton soucis, c’est très bien.

Mais …

Dans la doc ici: versatile_thermostat/documentation/fr/troubleshooting.md at 8.3.1 · jmcollin78/versatile_thermostat · GitHub, il était plutot indiqué de jouer avec les preset « comfort » et « eco » plutot que d’allumer et éteindre le radiateur.

En fait, il y a 2 choix décrits ici (versatile_thermostat/documentation/fr/troubleshooting.md at 8.3.1 · jmcollin78/versatile_thermostat · GitHub) :

  1. soit jouer avec les preset: set_preset_mode / preset_mode: comfort et set_preset_mode / preset_mode: eco (et non pas off qui n’est pas un preset comme te l’a dit l’IA),
  2. soit jouer avec les hvac_mode: set_hvac_mode / hvac_mode: heat et set_hvac_mode / hvac_mode: off comme tu l’as fait. Dans ce cas, la question est de savoir quel preset est appliqué lorsque que tu mets sur ‹ heat › ? Si c’est comfort, ça va, si il passe sur Eco, ça ne va pas.

Ca me parait plus naturel de jouer avec les preset plutot que de l’allumer / éteindre à chaque cycle mais chacun fait ce qu’il veut.

Il faut aussi penser à régler la température cible de Comfort sur une valeur importante pour forcer la chauffe (23 ou 24 par exemple).