diff --git a/README-fr.md b/README-fr.md index 92c55e6a..205bdf63 100644 --- a/README-fr.md +++ b/README-fr.md @@ -49,7 +49,7 @@ - [Modifier la température des préréglages](#modifier-la-température-des-préréglages) - [Modifier les paramètres de sécurité](#modifier-les-paramètres-de-sécurité) - [ByPass Window Check](#bypass-window-check) -- [Notifications](#notifications) +- [Evènements](#evènements) - [Attributs personnalisés](#attributs-personnalisés) - [Quelques résultats](#quelques-résultats) - [Encore mieux](#encore-mieux) @@ -64,6 +64,10 @@ - [Utilisation d'un radiateur avec un fil pilote](#utilisation-dun-radiateur-avec-un-fil-pilote) - [Seul le premier radiateur chauffe](#seul-le-premier-radiateur-chauffe) - [Régler les paramètres de détection d'ouverture de fenêtre en mode auto](#régler-les-paramètres-de-détection-douverture-de-fenêtre-en-mode-auto) + - [Pourquoi mon Versatile Thermostat se met en Securite ?](#pourquoi-mon-versatile-thermostat-se-met-en-securite-) + - [Comment détecter le mode sécurité ?](#comment-détecter-le-mode-sécurité-) + - [Comment être averti lorsque cela se produit ?](#comment-être-averti-lorsque-cela-se-produit-) + - [Comment réparer ?](#comment-réparer-) Ce composant personnalisé pour Home Assistant est une mise à niveau et est une réécriture complète du composant "Awesome thermostat" (voir [Github](https://github.com/dadge/awesome_thermostat)) avec l'ajout de fonctionnalités. @@ -496,69 +500,69 @@ Voir [exemple de réglages](#examples-tuning) pour avoir des exemples de réglag ## Synthèse des paramètres -| Paramètre | Libellé | "over switch" | "over climate" | over valve | -| - | - | - | - | - | -| ``name`` | Nom | X | X | X | -| ``thermostat_type`` | Type de thermostat | X | X | X | -| ``temperature_sensor_entity_id`` | Temperature sensor entity id | X | X (auto-regulation) | X | -| ``external_temperature_sensor_entity_id`` | Température de l'exterieur sensor entity id | X | X (auto-regulation) | X | -| ``cycle_min`` | Durée du cycle (minutes) | X | X | X | -| ``temp_min`` | Température minimale permise | X | X | X | -| ``temp_max`` | Température maximale permise | X | X | X | -| ``device_power`` | Puissance de l'équipement | X | X | X | -| ``use_window_feature`` | Avec détection des ouvertures | X | X | X | -| ``use_motion_feature`` | Avec détection de mouvement | X | X | X | -| ``use_power_feature`` | Avec gestion de la puissance | X | X | X | -| ``use_presence_feature`` | Avec détection de présence | X | X | X | -| ``heater_entity1_id`` | 1er radiateur | X | - | - | -| ``heater_entity2_id`` | 2ème radiateur | X | - | - | -| ``heater_entity3_id`` | 3ème radiateur | X | - | - | -| ``heater_entity4_id`` | 4ème radiateur | X | - | - | -| ``proportional_function`` | Algorithme | X | - | - | -| ``climate_entity1_id`` | Thermostat sous-jacent | - | X | - | -| ``climate_entity2_id`` | 2ème thermostat sous-jacent | - | X | - | -| ``climate_entity3_id`` | 3ème thermostat sous-jacent | - | X | - | -| ``climate_entity4_id`` | 4ème thermostat sous-jacent | - | X | - | -| ``valve_entity1_id`` | Vanne sous-jacente | - | - | X | -| ``valve_entity2_id`` | 2ème vanne sous-jacente | - | - | X | -| ``valve_entity3_id`` | 3ème vanne sous-jacente | - | - | X | -| ``valve_entity4_id`` | 4ème vanne sous-jacente | - | - | X | -| ``ac_mode`` | utilisation de l'air conditionné (AC) ? | X | X | X | -| ``tpi_coef_int`` | Coefficient à utiliser pour le delta de température interne | X | - | X | -| ``tpi_coef_ext`` | Coefficient à utiliser pour le delta de température externe | X | - | X | -| ``eco_temp`` | Température en preset Eco | X | X | X | -| ``comfort_temp`` | Température en preset Confort | X | X | X | -| ``boost_temp`` | Température en preset Boost | X | X | X | -| ``eco_ac_temp`` | Température en preset Eco en mode AC | X | X | X | -| ``comfort_ac_temp`` | Température en preset Confort en mode AC | X | X | X | -| ``boost_ac_temp`` | Température en preset Boost en mode AC | X | X | X | -| ``window_sensor_entity_id`` | Détecteur d'ouverture (entity id) | X | X | X | -| ``window_delay`` | Délai avant extinction (secondes) | X | X | X | -| ``window_auto_open_threshold`` | Seuil haut de chute de température pour la détection automatique (en °/min) | X | X | X | -| ``window_auto_close_threshold`` | Seuil bas de chute de température pour la fin de détection automatique (en °/min) | X | X | X | -| ``window_auto_max_duration`` | Durée maximum d'une extinction automatique (en min) | X | X | X | -| ``motion_sensor_entity_id`` | Détecteur de mouvement entity id | X | X | X | -| ``motion_delay`` | Délai avant prise en compte du mouvement (seconds) | X | X | X | -| ``motion_off_delay`` | Délai avant prise en compte de la fin de mouvement (seconds) | X | X | X | -| ``motion_preset`` | Preset à utiliser si mouvement détecté | X | X | X | -| ``no_motion_preset`` | Preset à utiliser si pas de mouvement détecté | X | X | X | -| ``power_sensor_entity_id`` | Capteur de puissance totale (entity id) | X | X | X | -| ``max_power_sensor_entity_id`` | Capteur de puissance Max (entity id) | X | X | X | -| ``power_temp`` | Température si délestaqe | X | X | X | -| ``presence_sensor_entity_id`` | Capteur de présence entity id (true si quelqu'un est présent) | X | X | X | -| ``eco_away_temp`` | Température en preset Eco en cas d'absence | X | X | X | -| ``comfort_away_temp`` | Température en preset Comfort en cas d'absence | X | X | X | -| ``boost_away_temp`` | Température en preset Boost en cas d'absence | X | X | X | -| ``eco_ac_away_temp`` | Température en preset Eco en cas d'absence en mode AC | X | X | X | -| ``comfort_ac_away_temp`` | Température en preset Comfort en cas d'absence en mode AC | X | X | X | -| ``boost_ac_away_temp`` | Température en preset Boost en cas d'absence en mode AC | X | X | X | -| ``minimal_activation_delay`` | Délai minimal d'activation | X | - | - | -| ``security_delay_min`` | Délai maximal entre 2 mesures de températures | X | - | X | -| ``security_min_on_percent`` | Pourcentage minimal de puissance pour passer en mode sécurité | X | - | X | -| ``auto_regulation_mode`` | Le mode d'auto-régulation | - | X | - | -| ``auto_regulation_dtemp`` | La seuil d'auto-régulation | - | X | - | -| ``auto_regulation_period_min`` | La période minimale d'auto-régulation | - | X | - | -| ``inverse_switch_command`` | Inverse la commande du switch (pour switch avec fil pilote) | X | - | - | +| Paramètre | Libellé | "over switch" | "over climate" | over valve | +| ----------------------------------------- | --------------------------------------------------------------------------------- | ------------- | ------------------- | ---------- | +| ``name`` | Nom | X | X | X | +| ``thermostat_type`` | Type de thermostat | X | X | X | +| ``temperature_sensor_entity_id`` | Temperature sensor entity id | X | X (auto-regulation) | X | +| ``external_temperature_sensor_entity_id`` | Température de l'exterieur sensor entity id | X | X (auto-regulation) | X | +| ``cycle_min`` | Durée du cycle (minutes) | X | X | X | +| ``temp_min`` | Température minimale permise | X | X | X | +| ``temp_max`` | Température maximale permise | X | X | X | +| ``device_power`` | Puissance de l'équipement | X | X | X | +| ``use_window_feature`` | Avec détection des ouvertures | X | X | X | +| ``use_motion_feature`` | Avec détection de mouvement | X | X | X | +| ``use_power_feature`` | Avec gestion de la puissance | X | X | X | +| ``use_presence_feature`` | Avec détection de présence | X | X | X | +| ``heater_entity1_id`` | 1er radiateur | X | - | - | +| ``heater_entity2_id`` | 2ème radiateur | X | - | - | +| ``heater_entity3_id`` | 3ème radiateur | X | - | - | +| ``heater_entity4_id`` | 4ème radiateur | X | - | - | +| ``proportional_function`` | Algorithme | X | - | - | +| ``climate_entity1_id`` | Thermostat sous-jacent | - | X | - | +| ``climate_entity2_id`` | 2ème thermostat sous-jacent | - | X | - | +| ``climate_entity3_id`` | 3ème thermostat sous-jacent | - | X | - | +| ``climate_entity4_id`` | 4ème thermostat sous-jacent | - | X | - | +| ``valve_entity1_id`` | Vanne sous-jacente | - | - | X | +| ``valve_entity2_id`` | 2ème vanne sous-jacente | - | - | X | +| ``valve_entity3_id`` | 3ème vanne sous-jacente | - | - | X | +| ``valve_entity4_id`` | 4ème vanne sous-jacente | - | - | X | +| ``ac_mode`` | utilisation de l'air conditionné (AC) ? | X | X | X | +| ``tpi_coef_int`` | Coefficient à utiliser pour le delta de température interne | X | - | X | +| ``tpi_coef_ext`` | Coefficient à utiliser pour le delta de température externe | X | - | X | +| ``eco_temp`` | Température en preset Eco | X | X | X | +| ``comfort_temp`` | Température en preset Confort | X | X | X | +| ``boost_temp`` | Température en preset Boost | X | X | X | +| ``eco_ac_temp`` | Température en preset Eco en mode AC | X | X | X | +| ``comfort_ac_temp`` | Température en preset Confort en mode AC | X | X | X | +| ``boost_ac_temp`` | Température en preset Boost en mode AC | X | X | X | +| ``window_sensor_entity_id`` | Détecteur d'ouverture (entity id) | X | X | X | +| ``window_delay`` | Délai avant extinction (secondes) | X | X | X | +| ``window_auto_open_threshold`` | Seuil haut de chute de température pour la détection automatique (en °/min) | X | X | X | +| ``window_auto_close_threshold`` | Seuil bas de chute de température pour la fin de détection automatique (en °/min) | X | X | X | +| ``window_auto_max_duration`` | Durée maximum d'une extinction automatique (en min) | X | X | X | +| ``motion_sensor_entity_id`` | Détecteur de mouvement entity id | X | X | X | +| ``motion_delay`` | Délai avant prise en compte du mouvement (seconds) | X | X | X | +| ``motion_off_delay`` | Délai avant prise en compte de la fin de mouvement (seconds) | X | X | X | +| ``motion_preset`` | Preset à utiliser si mouvement détecté | X | X | X | +| ``no_motion_preset`` | Preset à utiliser si pas de mouvement détecté | X | X | X | +| ``power_sensor_entity_id`` | Capteur de puissance totale (entity id) | X | X | X | +| ``max_power_sensor_entity_id`` | Capteur de puissance Max (entity id) | X | X | X | +| ``power_temp`` | Température si délestaqe | X | X | X | +| ``presence_sensor_entity_id`` | Capteur de présence entity id (true si quelqu'un est présent) | X | X | X | +| ``eco_away_temp`` | Température en preset Eco en cas d'absence | X | X | X | +| ``comfort_away_temp`` | Température en preset Comfort en cas d'absence | X | X | X | +| ``boost_away_temp`` | Température en preset Boost en cas d'absence | X | X | X | +| ``eco_ac_away_temp`` | Température en preset Eco en cas d'absence en mode AC | X | X | X | +| ``comfort_ac_away_temp`` | Température en preset Comfort en cas d'absence en mode AC | X | X | X | +| ``boost_ac_away_temp`` | Température en preset Boost en cas d'absence en mode AC | X | X | X | +| ``minimal_activation_delay`` | Délai minimal d'activation | X | - | - | +| ``security_delay_min`` | Délai maximal entre 2 mesures de températures | X | - | X | +| ``security_min_on_percent`` | Pourcentage minimal de puissance pour passer en mode sécurité | X | - | X | +| ``auto_regulation_mode`` | Le mode d'auto-régulation | - | X | - | +| ``auto_regulation_dtemp`` | La seuil d'auto-régulation | - | X | - | +| ``auto_regulation_period_min`` | La période minimale d'auto-régulation | - | X | - | +| ``inverse_switch_command`` | Inverse la commande du switch (pour switch avec fil pilote) | X | - | - | # Exemples de réglage @@ -743,7 +747,7 @@ target: entity_id : climate.my_thermostat ``` -# Notifications +# Evènements Les évènements marquant du thermostat sont notifiés par l'intermédiaire du bus de message. Les évènements notifiés sont les suivants: @@ -769,46 +773,46 @@ Pour régler l'algorithme, vous avez accès à tout le contexte vu et calculé p Les attributs personnalisés sont les suivants : -| Attribut | Signification | -| ----------| --------| -| ``hvac_modes`` | La liste des modes supportés par le thermostat | -| ``temp_min`` | La température minimale | -| ``temp_max`` | La température maximale | -| ``preset_modes`` | Les préréglages visibles pour ce thermostat. Les préréglages cachés ne sont pas affichés ici | -| ``temperature_actuelle`` | La température actuelle telle que rapportée par le capteur | -| ``temperature`` | La température cible | -| ``action_hvac`` | L'action en cours d'exécution par le réchauffeur. Peut être inactif, chauffage | -| ``preset_mode`` | Le préréglage actuellement sélectionné. Peut être l'un des 'preset_modes' ou un préréglage caché comme power | -| ``[eco/confort/boost]_temp`` | La température configurée pour le préréglage xxx | -| ``[eco/confort/boost]_away_temp`` | La température configurée pour le préréglage xxx lorsque la présence est désactivée ou not_home | -| ``temp_power`` | La température utilisée lors de la détection de la perte | -| ``on_percent`` | Le pourcentage sur calculé par l'algorithme TPI | -| ``on_time_sec`` | La période On en sec. Doit être ```on_percent * cycle_min``` | -| ``off_time_sec`` | La période d'arrêt en sec. Doit être ```(1 - on_percent) * cycle_min``` | -| ``cycle_min`` | Le cycle de calcul en minutes | -| ``function`` | L'algorithme utilisé pour le calcul du cycle | -| ``tpi_coef_int`` | Le ``coef_int`` de l'algorithme TPI | -| ``tpi_coef_ext`` | Le ``coef_ext`` de l'algorithme TPI | -| ``saved_preset_mode`` | Le dernier preset utilisé avant le basculement automatique du preset | -| ``saved_target_temp`` | La dernière température utilisée avant la commutation automatique | -| ``window_state`` | Le dernier état connu du capteur de fenêtre. Aucun si la fenêtre n'est pas configurée | -| ``window_bypass_state`` | True si le bypass de la détection d'ouverture et activé | -| ``motion_state`` | Le dernier état connu du capteur de mouvement. Aucun si le mouvement n'est pas configuré | -| ``overpowering_state`` | Le dernier état connu du capteur surpuissant. Aucun si la gestion de l'alimentation n'est pas configurée | -| ``presence_state`` | Le dernier état connu du capteur de présence. Aucun si la gestion de présence n'est pas configurée | -| ``security_delay_min`` | Le délai avant de régler le mode de sécurité lorsque le capteur de température est éteint | -| ``security_min_on_percent`` | Pourcentage de chauffe en dessous duquel le thermostat ne passera pas en sécurité | -| ``security_default_on_percent`` | Pourcentage de chauffe utilisé lorsque le thermostat est en sécurité | -| ``last_temperature_datetime`` | La date et l'heure au format ISO8866 de la dernière réception de température interne | -| ``last_ext_temperature_datetime`` | La date et l'heure au format ISO8866 de la dernière réception de température extérieure | -| ``security_state`` | L'état de sécurité. vrai ou faux | -| ``minimal_activation_delay_sec`` | Le délai d'activation minimal en secondes | -| ``last_update_datetime`` | La date et l'heure au format ISO8866 de cet état | -| ``friendly_name`` | Le nom du thermostat | -| ``supported_features`` | Une combinaison de toutes les fonctionnalités prises en charge par ce thermostat. Voir la documentation officielle sur l'intégration climatique pour plus d'informations | -| ``valve_open_percent`` | Le pourcentage d'ouverture de la vanne | -| ``regulated_target_temperature`` | La température de consigne calculée par l'auto-régulation | -| ``is_inversed`` | True si la commande est inversée (fil pilote avec diode) | +| Attribut | Signification | +| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ``hvac_modes`` | La liste des modes supportés par le thermostat | +| ``temp_min`` | La température minimale | +| ``temp_max`` | La température maximale | +| ``preset_modes`` | Les préréglages visibles pour ce thermostat. Les préréglages cachés ne sont pas affichés ici | +| ``temperature_actuelle`` | La température actuelle telle que rapportée par le capteur | +| ``temperature`` | La température cible | +| ``action_hvac`` | L'action en cours d'exécution par le réchauffeur. Peut être inactif, chauffage | +| ``preset_mode`` | Le préréglage actuellement sélectionné. Peut être l'un des 'preset_modes' ou un préréglage caché comme power | +| ``[eco/confort/boost]_temp`` | La température configurée pour le préréglage xxx | +| ``[eco/confort/boost]_away_temp`` | La température configurée pour le préréglage xxx lorsque la présence est désactivée ou not_home | +| ``temp_power`` | La température utilisée lors de la détection de la perte | +| ``on_percent`` | Le pourcentage sur calculé par l'algorithme TPI | +| ``on_time_sec`` | La période On en sec. Doit être ```on_percent * cycle_min``` | +| ``off_time_sec`` | La période d'arrêt en sec. Doit être ```(1 - on_percent) * cycle_min``` | +| ``cycle_min`` | Le cycle de calcul en minutes | +| ``function`` | L'algorithme utilisé pour le calcul du cycle | +| ``tpi_coef_int`` | Le ``coef_int`` de l'algorithme TPI | +| ``tpi_coef_ext`` | Le ``coef_ext`` de l'algorithme TPI | +| ``saved_preset_mode`` | Le dernier preset utilisé avant le basculement automatique du preset | +| ``saved_target_temp`` | La dernière température utilisée avant la commutation automatique | +| ``window_state`` | Le dernier état connu du capteur de fenêtre. Aucun si la fenêtre n'est pas configurée | +| ``window_bypass_state`` | True si le bypass de la détection d'ouverture et activé | +| ``motion_state`` | Le dernier état connu du capteur de mouvement. Aucun si le mouvement n'est pas configuré | +| ``overpowering_state`` | Le dernier état connu du capteur surpuissant. Aucun si la gestion de l'alimentation n'est pas configurée | +| ``presence_state`` | Le dernier état connu du capteur de présence. Aucun si la gestion de présence n'est pas configurée | +| ``security_delay_min`` | Le délai avant d'activer le mode de sécurité lorsque un des 2 capteurs de température n'envoie plus de mesures | +| ``security_min_on_percent`` | Pourcentage de chauffe en dessous duquel le thermostat ne passera pas en sécurité | +| ``security_default_on_percent`` | Pourcentage de chauffe utilisé lorsque le thermostat est en sécurité | +| ``last_temperature_datetime`` | La date et l'heure au format ISO8866 de la dernière réception de température interne | +| ``last_ext_temperature_datetime`` | La date et l'heure au format ISO8866 de la dernière réception de température extérieure | +| ``security_state`` | L'état de sécurité. vrai ou faux | +| ``minimal_activation_delay_sec`` | Le délai d'activation minimal en secondes | +| ``last_update_datetime`` | La date et l'heure au format ISO8866 de cet état | +| ``friendly_name`` | Le nom du thermostat | +| ``supported_features`` | Une combinaison de toutes les fonctionnalités prises en charge par ce thermostat. Voir la documentation officielle sur l'intégration climatique pour plus d'informations | +| ``valve_open_percent`` | Le pourcentage d'ouverture de la vanne | +| ``regulated_target_temperature`` | La température de consigne calculée par l'auto-régulation | +| ``is_inversed`` | True si la commande est inversée (fil pilote avec diode) | # Quelques résultats @@ -1150,6 +1154,54 @@ versatile_thermostat: Ces paramètres sont sensibles et assez difficiles à régler. Merci de ne les utiliser que si vous savez ce que vous faites et que vos mesures de température ne sont pas déjà lisses. +## Pourquoi mon Versatile Thermostat se met en Securite ? +Le mode sécurité n'est possible que sur les VTherm `over_switch` et `over_valve`. Il survient lorsqu'un des 2 thermomètres qui donne la température de la pièce ou la température extérieure n'a pas envoyé de valeur depuis plus de `security_delay_min` minutes et que le radiateur chauffait à au moins `security_min_on_percent`. + +Comme l'algorithme est basé sur les mesures de température, si elles ne sont plus reçues par le VTherm, il y a un risque de surchauffe et d'incendie. Pour éviter ça, lorsque les conditions rappelées ci-dessus sont détectées, la chauffe est limité au paramètre `security_default_on_percent`. Cette valeur doit donc être raisonnablement faible (10% est une bonne valeur). Elle permet d'éviter un incendie tout en évitant de couper totalement le radiateur (risque de gel). + +Tous ces paramètres se règlent dans la dernière page de la configuration du VTherm : "Paramètres avancés". + +### Comment détecter le mode sécurité ? +Le premier symptôme est une température anormalement basse avec un temps de chauffe faible à chaque cycle et régulier. +Exemple: + +[security mode](https://github.com/jmcollin78/versatile_thermostat/blob/main/images/security-mode-symptome1.png?raw=true) + +Si vous avez installé la carte [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card), le VTherm en question aura cette forme là : + +[security mode UI Card](https://github.com/jmcollin78/versatile_thermostat/blob/main/images/security-mode-symptome2.png?raw=true) + +Vous pouvez aussi vérifier dans les attributs du VTherm les dates de réception des différentes dates. **Les attributs sont disponibles dans les Outils de développement / Etats**. + +Exemple : +``` +security_state: true +last_temperature_datetime: "2023-12-06T18:43:28.346010+01:00" +last_ext_temperature_datetime: "2023-12-06T13:04:35.164367+01:00" +last_update_datetime: "2023-12-06T18:43:28.351103+01:00" +... +security_delay_min: 60 +``` + +On voit que : +1. le VTherm est bien en mode sécurité (`security_state: true`), +2. l'heure courante est le 06/12/2023 à 18h43:28 (`last_update_datetime: "2023-12-06T18:43:28.351103+01:00"`), +3. l'heure de dernière réception de la température intérieure est le 06/12/2023 à 18h43:28 (`last_temperature_datetime: "2023-12-06T18:43:28.346010+01:00"`). Elle est donc récente, +4. l'heure de dernière réception de la température extérieure est le 06/12/2023 à 13h04:35 (`last_ext_temperature_datetime: "2023-12-06T13:04:35.164367+01:00`). C'est donc l'heure extérieure qui a plus de 5 h de retard et qui a provoquée le passage en mode sécurité, car le seuil est limité à 60 min (`security_delay_min: 60`). + +### Comment être averti lorsque cela se produit ? +Pour être averti, le VTherm envoie un évènement dès que ça se produit et un en fin d'alerte sécurité. Vous pouvez capter ces évènements dans une automatisation et envoyer une notification par exemple, faire clignoter un voyant, déclencher une sirène, ... A vous de voir. + +Pour manipuler les évènements générés par le VTherm, cf. [Eveènements](#evènements). + +### Comment réparer ? +Cela va dépendre de la cause du problème : +1. Si un capteur est en défaut, il faut le réparer (remettre des piles, le changer, vérifier l'intégration Météo qui donne la température extérieure, ...), +2. Si le paramètre `security_delay_min` est trop petit, cela rsique de générer beaucoup de fausses alertes. Une valeur correcte est de l'ordre de 60 min, surtout si vous avez des capteurs de température à pile. +3. Certains capteurs de température, n'envoie pas de mesure si la température n'a pas changée. Donc en cas de température très stable pendant longtemps, le mode sécurité peut se déclencher. Ce n'est pas très grave puisqu'il s'enlève dès que le VTherm reçoit à nouveau une température. Sur certain thermomètre (TuYA par exemple), on peut forcer le délai max entre 2 mesures. Il conviendra de mettre un délai max < `security_delay_min`, +4. Dès que la température sera a nouveau reçue le mode sécurité s'enlèvera et les valeurs précédentes de preset, température cible et mode seront restaurées. + + *** [versatile_thermostat]: https://github.com/jmcollin78/versatile_thermostat diff --git a/README.md b/README.md index a0e3db98..8ee58e47 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ - [Change the temperature of presets](#change-the-temperature-of-presets) - [Change security settings](#change-security-settings) - [ByPass Window Check](#bypass-window-check) -- [Notifications](#notifications) +- [Events](#events) - [Custom attributes](#custom-attributes) - [Some results](#some-results) - [Even better](#even-better) @@ -63,6 +63,10 @@ - [Using a Heatsink with a Pilot Wire](#using-a-heatsink-with-a-pilot-wire) - [Only the first radiator heats](#only-the-first-radiator-heats) - [Adjust window opening detection parameters in auto mode](#adjust-window-opening-detection-parameters-in-auto-mode) + - [Why does my Versatile Thermostat go into Safety?](#why-does-my-versatile-thermostat-go-into-safety) + - [How to detect security mode?](#how-to-detect-security-mode) + - [How can I be notified when this happens?](#how-can-i-be-notified-when-this-happens) + - [How to repair?](#how-to-repair) This custom component for Home Assistant is an upgrade and is a complete rewrite of the component "Awesome thermostat" (see [Github](https://github.com/dadge/awesome_thermostat)) with addition of features. @@ -479,70 +483,70 @@ See [example tuning](#examples-tuning) for common tuning examples ## Parameters synthesis -| Paramètre | Libellé | "over switch" | "over climate" | "over valve" | -| ----------| --------| --- | --- | -- | -| ``name`` | Name | X | X | X | -| ``thermostat_type`` | Thermostat type | X | X | X | -| ``temperature_sensor_entity_id`` | Temperature sensor entity id | X | X (self-regulation) | X | -| ``external_temperature_sensor_entity_id`` | External temperature sensor entity id | X | X (self-regulation) | X | -| ``cycle_min`` | Cycle duration (minutes) | X | X | X | -| ``temp_min`` | Minimal temperature allowed | X | X | X | -| ``temp_max`` | Maximal temperature allowed | X | X | X | -| ``device_power`` | Device power | X | X | X | -| ``use_window_feature`` | Use window detection | X | X | X | -| ``use_motion_feature`` | Use motion detection | X | X | X | -| ``use_power_feature`` | Use power management | X | X | X | -| ``use_presence_feature`` | Use presence detection | X | X | X | -| ``heater_entity1_id`` | 1rst heater switch | X | - | - | -| ``heater_entity2_id`` | 2nd heater switch | X | - | - | -| ``heater_entity3_id`` | 3rd heater switch | X | - | - | -| ``heater_entity4_id`` | 4th heater switch | X | - | - | -| ``proportional_function`` | Algorithm | X | - | X | -| ``climate_entity1_id`` | 1rst underlying climate | - | X | - | -| ``climate_entity2_id`` | 2nd underlying climate | - | X | - | -| ``climate_entity3_id`` | 3rd underlying climate | - | X | - | -| ``climate_entity4_id`` | 4th underlying climate | - | X | - | -| ``valve_entity1_id`` | 1rst underlying valve | - | - | X | -| ``valve_entity2_id`` | 2nd underlying valve | - | - | X | -| ``valve_entity3_id`` | 3rd underlying valve | - | - | X | -| ``valve_entity4_id`` | 4th underlying valve | - | - | X | -| ``ac_mode`` | Use the Air Conditioning (AC) mode | X | X | X | -| ``tpi_coef_int`` | Coefficient to use for internal temperature delta | X | - | X | -| ``tpi_coef_ext`` | Coefficient to use for external temperature delta | X | - | X | -| ``eco_temp`` | Temperature in Eco preset | X | X | X | -| ``comfort_temp`` | Temperature in Comfort preset | X | X | X | -| ``boost_temp`` | Temperature in Boost preset | X | X | X | -| ``eco_ac_temp`` | Temperature in Eco preset for AC mode | X | X | X | -| ``comfort_ac_temp`` | Temperature in Comfort preset for AC mode | X | X | X | -| ``boost_ac_temp`` | Temperature in Boost preset for AC mode | X | X | X | -| ``window_sensor_entity_id`` | Window sensor entity id | X | X | X | -| ``window_delay`` | Window sensor delay (seconds) | X | X | X | -| ``window_auto_open_threshold`` | Temperature decrease threshold for automatic window open detection (in °/min) | X | X | X | -| ``window_auto_close_threshold`` | Temperature increase threshold for end of automatic detection (in °/min) | X | X | X | -| ``window_auto_max_duration`` | Maximum duration of automatic window open detection (in min) | X | X | X | -| ``motion_sensor_entity_id`` | Motion sensor entity id | X | X | X | -| ``motion_delay`` | Delay before considering the motion (seconds) | X | X | X | -| ``motion_off_delay`` | Delay before considering the end of motion (seconds) | X | X | X | -| ``motion_preset`` | Preset to use when motion is detected | X | X | X | -| ``no_motion_preset`` | Preset to use when no motion is detected | X | X | X | -| ``power_sensor_entity_id`` | Power sensor entity id | X | X | X | -| ``max_power_sensor_entity_id`` | Max power sensor entity id | X | X | X | -| ``power_temp`` | Temperature for Power shedding | X | X | X | -| ``presence_sensor_entity_id`` | Presence sensor entity id | X | X | X | -| ``eco_away_temp`` | Temperature in Eco preset when no presence | X | X | X | -| ``comfort_away_temp`` | Temperature in Comfort preset when no presence | X | X | X | -| ``boost_away_temp`` | Temperature in Boost preset when no presence | X | X | X | -| ``eco_ac_away_temp`` | Temperature in Eco preset when no presence in AC mode | X | X | X | -| ``comfort_ac_away_temp`` | Temperature in Comfort preset when no presence in AC mode | X | X | X | -| ``boost_ac_away_temp`` | Temperature in Boost preset when no presence in AC mode | X | X | X | -| ``minimal_activation_delay`` | Minimal activation delay | X | - | X | -| ``security_delay_min`` | Security delay (in minutes) | X | - | X | -| ``security_min_on_percent`` | Minimal power percent to enable security mode | X | - | X | -| ``security_default_on_percent`` | Power percent to use in security mode | X | - | X | -| ``auto_regulation_mode`` | Le mode d'auto-régulation | - | X | - | -| ``auto_regulation_dtemp`` | La seuil d'auto-régulation | - | X | - | -| ``auto_regulation_period_min`` | La période minimale d'auto-régulation | - | X | - | -| ``inverse_switch_command`` | Inverse the switch command (for pilot wire switch) | X | - | - | +| Paramètre | Libellé | "over switch" | "over climate" | "over valve" | +| ----------------------------------------- | ----------------------------------------------------------------------------- | ------------- | ------------------- | ------------ | +| ``name`` | Name | X | X | X | +| ``thermostat_type`` | Thermostat type | X | X | X | +| ``temperature_sensor_entity_id`` | Temperature sensor entity id | X | X (self-regulation) | X | +| ``external_temperature_sensor_entity_id`` | External temperature sensor entity id | X | X (self-regulation) | X | +| ``cycle_min`` | Cycle duration (minutes) | X | X | X | +| ``temp_min`` | Minimal temperature allowed | X | X | X | +| ``temp_max`` | Maximal temperature allowed | X | X | X | +| ``device_power`` | Device power | X | X | X | +| ``use_window_feature`` | Use window detection | X | X | X | +| ``use_motion_feature`` | Use motion detection | X | X | X | +| ``use_power_feature`` | Use power management | X | X | X | +| ``use_presence_feature`` | Use presence detection | X | X | X | +| ``heater_entity1_id`` | 1rst heater switch | X | - | - | +| ``heater_entity2_id`` | 2nd heater switch | X | - | - | +| ``heater_entity3_id`` | 3rd heater switch | X | - | - | +| ``heater_entity4_id`` | 4th heater switch | X | - | - | +| ``proportional_function`` | Algorithm | X | - | X | +| ``climate_entity1_id`` | 1rst underlying climate | - | X | - | +| ``climate_entity2_id`` | 2nd underlying climate | - | X | - | +| ``climate_entity3_id`` | 3rd underlying climate | - | X | - | +| ``climate_entity4_id`` | 4th underlying climate | - | X | - | +| ``valve_entity1_id`` | 1rst underlying valve | - | - | X | +| ``valve_entity2_id`` | 2nd underlying valve | - | - | X | +| ``valve_entity3_id`` | 3rd underlying valve | - | - | X | +| ``valve_entity4_id`` | 4th underlying valve | - | - | X | +| ``ac_mode`` | Use the Air Conditioning (AC) mode | X | X | X | +| ``tpi_coef_int`` | Coefficient to use for internal temperature delta | X | - | X | +| ``tpi_coef_ext`` | Coefficient to use for external temperature delta | X | - | X | +| ``eco_temp`` | Temperature in Eco preset | X | X | X | +| ``comfort_temp`` | Temperature in Comfort preset | X | X | X | +| ``boost_temp`` | Temperature in Boost preset | X | X | X | +| ``eco_ac_temp`` | Temperature in Eco preset for AC mode | X | X | X | +| ``comfort_ac_temp`` | Temperature in Comfort preset for AC mode | X | X | X | +| ``boost_ac_temp`` | Temperature in Boost preset for AC mode | X | X | X | +| ``window_sensor_entity_id`` | Window sensor entity id | X | X | X | +| ``window_delay`` | Window sensor delay (seconds) | X | X | X | +| ``window_auto_open_threshold`` | Temperature decrease threshold for automatic window open detection (in °/min) | X | X | X | +| ``window_auto_close_threshold`` | Temperature increase threshold for end of automatic detection (in °/min) | X | X | X | +| ``window_auto_max_duration`` | Maximum duration of automatic window open detection (in min) | X | X | X | +| ``motion_sensor_entity_id`` | Motion sensor entity id | X | X | X | +| ``motion_delay`` | Delay before considering the motion (seconds) | X | X | X | +| ``motion_off_delay`` | Delay before considering the end of motion (seconds) | X | X | X | +| ``motion_preset`` | Preset to use when motion is detected | X | X | X | +| ``no_motion_preset`` | Preset to use when no motion is detected | X | X | X | +| ``power_sensor_entity_id`` | Power sensor entity id | X | X | X | +| ``max_power_sensor_entity_id`` | Max power sensor entity id | X | X | X | +| ``power_temp`` | Temperature for Power shedding | X | X | X | +| ``presence_sensor_entity_id`` | Presence sensor entity id | X | X | X | +| ``eco_away_temp`` | Temperature in Eco preset when no presence | X | X | X | +| ``comfort_away_temp`` | Temperature in Comfort preset when no presence | X | X | X | +| ``boost_away_temp`` | Temperature in Boost preset when no presence | X | X | X | +| ``eco_ac_away_temp`` | Temperature in Eco preset when no presence in AC mode | X | X | X | +| ``comfort_ac_away_temp`` | Temperature in Comfort preset when no presence in AC mode | X | X | X | +| ``boost_ac_away_temp`` | Temperature in Boost preset when no presence in AC mode | X | X | X | +| ``minimal_activation_delay`` | Minimal activation delay | X | - | X | +| ``security_delay_min`` | Security delay (in minutes) | X | - | X | +| ``security_min_on_percent`` | Minimal power percent to enable security mode | X | - | X | +| ``security_default_on_percent`` | Power percent to use in security mode | X | - | X | +| ``auto_regulation_mode`` | Le mode d'auto-régulation | - | X | - | +| ``auto_regulation_dtemp`` | La seuil d'auto-régulation | - | X | - | +| ``auto_regulation_period_min`` | La période minimale d'auto-régulation | - | X | - | +| ``inverse_switch_command`` | Inverse the switch command (for pilot wire switch) | X | - | - | # Examples tuning @@ -725,7 +729,7 @@ target: entity_id : climate.my_thermostat ``` -# Notifications +# Events Significant thermostat events are notified via the message bus. The notified events are as follows: @@ -751,46 +755,46 @@ To tune the algorithm you have access to all context seen and calculted by the t Custom attributes are the following: -| Attribute | Meaning | -| ----------| --------| -| ``hvac_modes`` | The list of modes supported by the thermostat | -| ``min_temp`` | The minimal temperature | -| ``max_temp`` | The maximal temperature | -| ``preset_modes`` | The presets visible for this thermostat. Hidden presets are not showed here | -| ``current_temperature`` | The current temperature as reported by the sensor | -| ``temperature`` | The target temperature | -| ``hvac_action`` | The action currently running by the heater. Can be idle, heating | -| ``preset_mode`` | The currently selected preset. Can be one of the 'preset_modes' or a hidden preset like power | -| ``[eco/comfort/boost]_temp`` | The temperature configured for the preset xxx | -| ``[eco/comfort/boost]_away_temp`` | The temperature configured for the preset xxx when presence is off or not_home | -| ``power_temp`` | The temperature used when shedding is detected | -| ``on_percent`` | The percentage on calculated by the TPI algorithm | -| ``on_time_sec`` | The On period in sec. Should be ```on_percent * cycle_min``` | -| ``off_time_sec`` | The Off period in sec. Should be ```(1 - on_percent) * cycle_min``` | -| ``cycle_min`` | The calculation cycle in minutes | -| ``function`` | The algorithm used for cycle calculation | -| ``tpi_coef_int`` | The ``coef_int`` of the TPI algorithm | -| ``tpi_coef_ext`` | The ``coef_ext`` of the TPI algorithm | -| ``saved_preset_mode`` | The last preset used before automatic switch of the preset | -| ``saved_target_temp`` | The last temperature used before automatic switching | -| ``window_state`` | The last known state of the window sensor. None if window is not configured | -| ``window_bypass_state`` | True if the bypass of the window detection is activated | -| ``motion_state`` | The last known state of the motion sensor. None if motion is not configured | -| ``overpowering_state`` | The last known state of the overpowering sensor. None if power management is not configured | -| ``presence_state`` | The last known state of the presence sensor. None if presence management is not configured | -| ``security_delay_min`` | The delay before setting the security mode when temperature sensor are off | -| ``security_min_on_percent`` | The minimal on_percent below which security preset won't be trigger | -| ``security_default_on_percent`` | The on_percent used when thermostat is in ``security`` | -| ``last_temperature_datetime`` | The date and time in ISO8866 format of the last internal temperature reception | -| ``last_ext_temperature_datetime`` | The date and time in ISO8866 format of the last external temperature reception | -| ``security_state`` | The security state. true or false | -| ``minimal_activation_delay_sec`` | The minimal activation delay in seconds | -| ``last_update_datetime`` | The date and time in ISO8866 format of this state | -| ``friendly_name`` | The name of the thermostat | -| ``supported_features`` | A combination of all features supported by this thermostat. See official climate integration documentation for more informations | -| ``valve_open_percent`` | The opening percentage of the valve | -| ``regulated_target_temperature`` | The self-regulated target temperature calculated | -| ``is_inversed`` | True if the command is inversed (pilot wire with diode) | +| Attribute | Meaning | +| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| ``hvac_modes`` | The list of modes supported by the thermostat | +| ``min_temp`` | The minimal temperature | +| ``max_temp`` | The maximal temperature | +| ``preset_modes`` | The presets visible for this thermostat. Hidden presets are not showed here | +| ``current_temperature`` | The current temperature as reported by the sensor | +| ``temperature`` | The target temperature | +| ``hvac_action`` | The action currently running by the heater. Can be idle, heating | +| ``preset_mode`` | The currently selected preset. Can be one of the 'preset_modes' or a hidden preset like power | +| ``[eco/comfort/boost]_temp`` | The temperature configured for the preset xxx | +| ``[eco/comfort/boost]_away_temp`` | The temperature configured for the preset xxx when presence is off or not_home | +| ``power_temp`` | The temperature used when shedding is detected | +| ``on_percent`` | The percentage on calculated by the TPI algorithm | +| ``on_time_sec`` | The On period in sec. Should be ```on_percent * cycle_min``` | +| ``off_time_sec`` | The Off period in sec. Should be ```(1 - on_percent) * cycle_min``` | +| ``cycle_min`` | The calculation cycle in minutes | +| ``function`` | The algorithm used for cycle calculation | +| ``tpi_coef_int`` | The ``coef_int`` of the TPI algorithm | +| ``tpi_coef_ext`` | The ``coef_ext`` of the TPI algorithm | +| ``saved_preset_mode`` | The last preset used before automatic switch of the preset | +| ``saved_target_temp`` | The last temperature used before automatic switching | +| ``window_state`` | The last known state of the window sensor. None if window is not configured | +| ``window_bypass_state`` | True if the bypass of the window detection is activated | +| ``motion_state`` | The last known state of the motion sensor. None if motion is not configured | +| ``overpowering_state`` | The last known state of the overpowering sensor. None if power management is not configured | +| ``presence_state`` | The last known state of the presence sensor. None if presence management is not configured | +| ``security_delay_min`` | The delay before setting the security mode when temperature sensor are off | +| ``security_min_on_percent`` | The minimal on_percent below which security preset won't be trigger | +| ``security_default_on_percent`` | The on_percent used when thermostat is in ``security`` | +| ``last_temperature_datetime`` | The date and time in ISO8866 format of the last internal temperature reception | +| ``last_ext_temperature_datetime`` | The date and time in ISO8866 format of the last external temperature reception | +| ``security_state`` | The security state. true or false | +| ``minimal_activation_delay_sec`` | The minimal activation delay in seconds | +| ``last_update_datetime`` | The date and time in ISO8866 format of this state | +| ``friendly_name`` | The name of the thermostat | +| ``supported_features`` | A combination of all features supported by this thermostat. See official climate integration documentation for more informations | +| ``valve_open_percent`` | The opening percentage of the valve | +| ``regulated_target_temperature`` | The self-regulated target temperature calculated | +| ``is_inversed`` | True if the command is inversed (pilot wire with diode) | # Some results @@ -1130,6 +1134,54 @@ versatile_thermostat: These parameters are sensitive and quite difficult to adjust. Please only use them if you know what you are doing and your temperature measurements are not already smooth. +## Why does my Versatile Thermostat go into Safety? +Safety mode is only possible on VTherm `over_switch` and `over_valve`. It occurs when one of the 2 thermometers which gives the room temperature or the outside temperature has not sent a value for more than `security_delay_min` minutes and the radiator was heating at least `security_min_on_percent`. + +As the algorithm is based on temperature measurements, if they are no longer received by the VTherm, there is a risk of overheating and fire. To avoid this, when the conditions mentioned above are detected, heating is limited to the `security_default_on_percent` parameter. This value must therefore be reasonably low. It helps prevent a fire while avoiding completely cutting off the radiator (risk of freezing). + +All these parameters are adjusted on the last page of the VTherm configuration: “Advanced parameters”. + +### How to detect security mode? +The first symptom is an abnormally low temperature with a slow and regular heating time in each cycle. +Example: + +[security mode](https://github.com/jmcollin78/versatile_thermostat/blob/main/images/security-mode-symptome1.png?raw=true) + +If you installed the [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card), the VTherm in question will have this shape: + +[security mode UI Card](https://github.com/jmcollin78/versatile_thermostat/blob/main/images/security-mode-symptome2.png?raw=true) + +You can also check in the VTherm attributes the dates of receipt of the different dates. Attributes are available in Development Tools / Reports. + +Example : +``` +security_state: true +last_temperature_datetime: "2023-12-06T18:43:28.346010+01:00" +last_ext_temperature_datetime: "2023-12-06T13:04:35.164367+01:00" +last_update_datetime: "2023-12-06T18:43:28.351103+01:00" +... +security_delay_min: 60 +``` + +We see that : +1. the VTherm is in security mode (`security_state: true`), +2. the current time is 06/12/2023 at 18:43:28 (`last_update_datetime: "2023-12-06T18:43:28.351103+01:00"`), +3. the last received time of indoor temperature is 06/12/2023 at 18:43:28 (`last_temperature_datetime: "2023-12-06T18:43:28.346010+01:00"`). So she's on time, +4. the last reception time of the outdoor temperature is 06/12/2023 at 1:04:35 p.m. (`last_ext_temperature_datetime: "2023-12-06T13:04:35.164367+01:00`). external time which is more than 5 hours late and which caused the switch to security mode, because the threshold is limited to 60 min (`security_delay_min: 60`) + +### How can I be notified when this happens? +To be notified, the VTherm sends an event as soon as it happens and one at the end of the security alert. You can capture these events in an automation and send a notification for example, flash a light, trigger a siren, etc. It's up to you. + +To manipulate the events generated by VTherm, cf. [Events](#events). + +### How to repair? +This will depend on the cause of the problem: +1. If a sensor is faulty, it must be repaired (replace batteries, change it, check the Weather integration which gives the outside temperature, etc.), +2. If the `security_delay_min` parameter is too small, it risks generating a lot of false alerts. A correct value is around 60 min, especially if you have battery-powered temperature sensors. +3. Some temperature sensors do not send a measurement if the temperature has not changed. So in the event of a very stable temperature for a long time, the safety mode may be triggered. This is not very serious since it is removed as soon as the VTherm receives a temperature again. On certain thermometers (TuYA for example), you can force the maximum delay between 2 measurements. It will be appropriate to set a max delay < `security_delay_min`, +4. As soon as the temperature is received again the security mode will be removed and the previous values of preset, target temperature and mode will be restored. + + *** [versatile_thermostat]: https://github.com/jmcollin78/versatile_thermostat diff --git a/images/security-mode-symptome1.png b/images/security-mode-symptome1.png new file mode 100644 index 00000000..f1cfd02a Binary files /dev/null and b/images/security-mode-symptome1.png differ diff --git a/images/security-mode-symptome2.png b/images/security-mode-symptome2.png new file mode 100644 index 00000000..272b1313 Binary files /dev/null and b/images/security-mode-symptome2.png differ