Bonjour,
La meilleure solution, si vous le pouvez est Versatile Thermostat de @Jean-Marc_Collin mais il y a parfois quelques incompatibilités.
C’est mon cas avec une vieille chaudière fioul loi d’eau haute température qui ne supporte ni TPI, Auto TPI ou même PID, j’ai du mettre en place une solution pour piloter mes 7 vannes Sonoff TRVZB.
Je vous partage ici, pour ceux que ça intéresserai, un exemple de ma vanne cuisine qui peut être transposé sur les autres pièces.
Prérequis
- Sonoff TRVZB avec le dernier firmware 1.4.4 installée et fonctionnelle dans Home Assistant via zigbee2mqtt (non testé avec ZHA que je ne connais pas)
- schedule_state installé et fonctionnel (je n’explique pas sa mise en place, je vous laisse voir la doc)
- schedule-state-card développé par @Pulpy-Luke (idem je vous laisse voir la doc et le sujet sur ce forum)
- Au moins un capteur de température externe par pièces ou vous avez un radiateur avec une vanne Sonoff TRVZB (on n’utilise pas le capteur interne de la vanne)
Créer 3 input-numbers par vannes dans « paramètres - Entrées - Créer une entrée nombre »
- Consigne Cuisine Boost
- Consigne Cuisine Confort
- Consigne Cuisine Eco
Créer ou modifier votre schedule.yaml aprés installation de schedule_state et tel qu’expliqué dans sa doc.
Exemple: extrait de mon yaml pour la cuisine
schedule.yaml
sensor:
# --- DÉBUT BLOC CUISINE ---
- platform: schedule_state
# À MODIFIER : Nom unique du capteur pour cette pièce
name: "Planning Chauffage Cuisine"
# À MODIFIER : La consigne par défaut (souvent ECO) pour cette pièce
default_state: "{{ states('input_number.consigne_cuisine_eco') }}"
extra_attributes:
unit_of_measurement: "°C"
events:
- start: "06:00"
end: "11:00"
# À MODIFIER : La consigne pour cette plage horaire (ex: BOOST)
state: "{{ states('input_number.consigne_cuisine_boost') }}"
- start: "11:00"
end: "22:00"
# À MODIFIER : La consigne pour cette plage horaire (ex: CONFORT)
state: "{{ states('input_number.consigne_cuisine_confort') }}"
# --- FIN BLOC CUISINE ---
# --- DÉBUT BLOC [NOM_PIÈCE_SUIVANTE] ---
# Répétez la structure ci-dessus ici pour le Salon, la Chambre, etc.
Créer l’automatisation Planning Chauffage Cuisine - Pilotage Cuisine (PID)
Avec le firmware 1.4.4, la Sonoff TRVZB introduit le Smart Temperature Control qui redéfinit l’algorithme PID (Proportional-Integral-Derivative) utilisé pour réguler la température. Merci à @KipK pour l’information que je n’avais pas vue, mais comme d’habitude ma chaudière a refusé un 2ème cerveau ![]()
Les 3 modes disponibles :
1. OFF
Le contrôle PID est désactivé
La vanne fonctionne en mode tout-ou-rien (ON/OFF classique)
Lorsque la température est inférieure au setpoint : vanne ouverte à 100%
Lorsque la température atteint le setpoint : vanne fermée
2. Precision (Précision)
Algorithme PID actif avec contrôle fin et progressif
La vanne ajuste son ouverture de manière proportionnelle à l’écart entre température actuelle et consigne
Anticipe les variations pour éviter les dépassements
3. Smart (Intelligent)
Nouveau mode introduit avec le firmware 1.4.4
Combine efficacité énergétique et confort
Algorithme adaptatif qui apprend les caractéristiques thermiques de la pièce
Optimise les cycles de chauffe pour réduire la consommation tout en maintenant le confort
Dans l’automatisation ci-dessous, je suis en mode OFF, je n’utilise pas le Smart Temperature Control, mais j’ai laissé les paramètres, vous avez la possibilité de modifier les paramètres dans l’automatisation pour activer ‹ smart › si vous souhaitez activer Smart Temperature Control (PID) sur vos vannes
Code Automatisation Planning
# À MODIFIER : Le nom de l'automatisation pour la nouvelle pièce
alias: Planning Chauffage Cuisine - Pilotage Cuisine (PID)
description: Change la consigne de température de la vanne cuisine selon le planning
triggers:
- trigger: state
# À MODIFIER : Le capteur de planning de la pièce
entity_id: sensor.planning_chauffage_cuisine
- trigger: state
entity_id:
# À MODIFIER : Les 3 consignes (Boost, Eco, Confort) de la pièce
- input_number.consigne_cuisine_boost
- input_number.consigne_cuisine_eco
- input_number.consigne_cuisine_confort
conditions:
- condition: template
value_template: >
{# À MODIFIER : Le capteur de planning de la pièce ci-dessous #}
{% set temp = states('sensor.planning_chauffage_cuisine') | float(-999) %}
{{ temp >= 4 and temp <= 35 }}
actions:
- action: climate.set_temperature
target:
# À MODIFIER : La vanne thermostatique (TRV) de la pièce
entity_id: climate.cuisine_sonoff_trvzb
data:
temperature: >
{# À MODIFIER : Le capteur de planning de la pièce ci-dessous #}
{% set temp = states('sensor.planning_chauffage_cuisine') | float(19) %}
{{ [[4, temp] | max, 35] | min }}
hvac_mode: heat
- if:
- condition: state
# À MODIFIER : Le sélecteur de mode PID de la vanne de la pièce
entity_id: select.cuisine_sonoff_trvzb_smart_temperature_control
state:
- smart
- precision
then:
- action: select.select_option
metadata: {}
target:
entity_id:
# À MODIFIER : Le sélecteur de mode PID de la vanne de la pièce
- select.cuisine_sonoff_trvzb_smart_temperature_control
data:
option: "off"
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- action: select.select_option
metadata: {}
target:
entity_id:
# À MODIFIER : Le sélecteur de mode PID de la vanne de la pièce
- select.cuisine_sonoff_trvzb_smart_temperature_control
data:
option: "off"
mode: restart
Option automatisation ‹ Chauffage Cuisine - Gestion Portes ›
Code Automatisation
# À MODIFIER : Le nom de l'automatisation pour la nouvelle pièce
alias: Chauffage Cuisine - Gestion Portes
description: Coupe le chauffage si ouvert > 5 min et relance le planning à la fermeture
triggers:
- trigger: state
# À MODIFIER : Le capteur d'ouverture (porte/fenêtre) de la pièce
entity_id: binary_sensor.rdc_ouvertures_groupe_chauffage
to: "on"
for:
minutes: 5
id: ouverture
- trigger: state
# À MODIFIER : Le même capteur d'ouverture que ci-dessus
entity_id: binary_sensor.rdc_ouvertures_groupe_chauffage
to: "off"
id: fermeture
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: ouverture
sequence:
- action: climate.set_temperature
data:
temperature: 7
target:
# À MODIFIER : La vanne thermostatique (TRV) de la pièce
entity_id: climate.cuisine_sonoff_trvzb
- conditions:
- condition: trigger
id: fermeture
sequence:
- action: automation.trigger
target:
entity_id:
# À MODIFIER : L'automatisation de pilotage (PID) créée à l'étape 1 pour cette pièce
- automation.00_planning_chauffage_pilotage_cuisine
data:
skip_condition: true
mode: restart
Synchronisation de la Température Externe de la Pièce avec la vanne Sonoff TRVZB
Le plus simple et le plus fiable est d’utiliser ce blueprint
blueprint-external-temperature-synchronization
Vous aurez à renseigner:
-
Votre thermostat climate entity, dans mon
exemple : climate.cuisine_sonoff_trvzb -
External Temperature Input de votre vanne
exemple : number.cuisine_sonoff_trvzb_external_temperature_input -
External Temperature sensor
l’entité de votre capteur de température de la pièce que j’ai mis en prérequis
exemple pour moi : sensor.cuisine_temperature_median -
Temperature Sensor mode select de votre vanne
exemple : select.cuisine_sonoff_trvzb_temperature_sensor_select
Ce point 4 justifie d’utiliser le blueprint plutôt que de faire une simple automatisation car il force external sur la vanne, et évite un petit bug qui fait que la vanne passe de internal à external external_1 etc …
Vous pouvez bien sûr concevoir une automatisation en intégrant ce paramètre et ne pas utiliser le blueprint.
Affichage sur le dashboard
1. Le planning de @Pulpy-Luke
je vous laisse voir la mise en place sur son github ou sur le sujet dédié sur ce forum
2. Exemples de carte avec les consignes interactives
Via l’automatisation les consignes horaires changent avec le planning de schedule-state, mais vous pouvez modifier la consigne en cours sur le dashboard, c’est interactif via l’automatisation.
Optionnel mais je l’utilise, donc il est présent dans la carte pour le badge consigne :
Créer une Entréé - Template - capteur
# à adapter en fonction des vannes
{{state_attr('climate.cuisine_sonoff_trvzb', 'temperature')}}
Nommée chez moi Consigne Cuisine TRVZB
Code de la carte avec decluttering-card
type: custom:vertical-stack-in-card
cards:
- type: vertical-stack
cards:
- type: custom:decluttering-card
template: mushroom-card_consigne
variables:
- entity: input_number.consigne_cuisine_eco
- name: Eco
- icon: leaf
- color: green
- type: custom:decluttering-card
template: mushroom-card_consigne
variables:
- entity: input_number.consigne_cuisine_confort
- name: Confort
- icon: fire
- color: orange
- type: custom:decluttering-card
template: mushroom-card_consigne
variables:
- entity: input_number.consigne_cuisine_boost
- name: Boost
- icon: rocket-launch
- color: red
- type: vertical-stack
cards:
- type: custom:decluttering-card
template: mushroom-card_sonoff
variables:
- entity1: climate.cuisine_sonoff_trvzb
- name: Cuisine
- entity2: sensor.consigne_cuisine_trvzb
- entity3: select.cuisine_sonoff_trvzb_smart_temperature_control
- entity4: sensor.cuisine_temperature_median
- icon: countertop-outline
Code decluttering_templates
decluttering_templates:
mushroom-card_consigne:
card:
type: custom:vertical-stack-in-card
cards:
- type: custom:mushroom-number-card
entity: '[[entity]]'
display_mode: buttons
layout: horizontal
name: '[[name]]'
secondary_info: none
icon: mdi:[[icon]]
icon_color: '[[color]]'
mushroom-card_sonoff:
card:
type: custom:vertical-stack-in-card
cards:
- type: custom:mushroom-climate-card
entity: '[[entity1]]'
name: '[[name]]'
icon: ''
primary_info: name
secondary_info: none
layout: vertical
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
- type: horizontal-stack
cards:
- type: custom:mushroom-chips-card
chips:
- type: entity
entity: '[[entity2]]'
tap_action:
action: none
hold_action:
action: none
double_tap_action:
action: none
icon_color: accent
content_info: state
use_entity_picture: false
icon: mdi:bullseye-arrow
alignment: start
- type: custom:mushroom-chips-card
chips:
- type: entity
entity: '[[entity3]]'
tap_action:
action: none
hold_action:
action: none
double_tap_action:
action: none
icon_color: accent
content_info: state
use_entity_picture: false
icon: null
alignment: center
- type: custom:mushroom-chips-card
chips:
- type: entity
entity: '[[entity4]]'
tap_action:
action: none
hold_action:
action: none
double_tap_action:
action: none
icon_color: accent
content_info: state
use_entity_picture: false
icon: mdi:[[icon]]
alignment: end
Dernier prérequis concernant les vannes sonoff avant l’activation de ce qui prècède
-
Si vous avez fait des essais d’autres configuration précédemment, je préconise de faire un « reset » sur les vannes, pour cela enlevez les batteries et remettez les en restant appuyé sur le bouton de la vanne et attendez la fin du cycle de « reset » avant de relâcher le bouton (elles vont rester connectée à zigbee2mqtt mais vont « resetter » les paramètres).
-
Dans l’interface de zigbee2mqtt sur votre vanne allez dans « Expositions » et vérifiez les points suivants :
Local temperature calibration doit être à 0
System mode doit être sur heat
Temperature sensor doit être sur external (de toute façon le blueprint va le forcer)
Valve opening degree doit être à 100%
Valve closing degree doit être à 100%
Temperature accuracy par défaut il est à -1, vous pouvez le mettre à -0,4 dans un 1er temps si ça vous convient
(Précision de la régulation de température. La plage est de -0,2 à -1 °C, par incréments de 0,2 °C. La valeur par défaut est -1 °C. Si la précision de régulation est de -1 °C (valeur par défaut) et que la température cible est de 26 °C, le régulateur TRVZB fermera la vanne lorsque la température ambiante atteindra 26 °C et l’ouvrira à 25 °C. Si la précision est de -0,4 °C, la vanne se fermera à 26 °C et s’ouvrira à 25,6 °C. Remarque : Seule la version 1.3.0 ou supérieure est prise en charge.)
Je me suis relu, mais il peut manquer quelque chose …




