diff --git a/README-fr.md b/README-fr.md index be1f9bd..f812399 100644 --- a/README-fr.md +++ b/README-fr.md @@ -7,7 +7,7 @@ [En](README.md)|[Fr](README-fr.md) ![Tip](images/icon.png) -> ![Tip](images/tips.png) Cette intégration de thermostat vise à simplifier considérablement vos automatisations autour de la gestion du chauffage. Parce que tous les événements autour du chauffage classiques sont gérés nativement par le thermostat (personne à la maison ?, activité détectée dans une pièce ?, fenêtre ouverte ?, délestage de courant ?), vous n'avez pas à vous encombrer de scripts et d'automatismes compliqués pour gérer vos thermostats. ;-). +> ![Tip](images/tips.png) Cette intégration de thermostat vise à simplifier considérablement vos automatisations autour de la gestion du chauffage. Parce que tous les événements autour du chauffage classiques sont gérés nativement par le thermostat (personne à la maison ?, activité détectée dans une pièce ?, fenêtre ouverte ?, délestage de puissance ?), vous n'avez pas à vous encombrer de scripts et d'automatismes compliqués pour gérer vos thermostats. ;-). Ce composant personnalisé pour Home Assistant est une mise à niveau et une réécriture complète du composant "Awesome thermostat" (voir [Github](https://github.com/dadge/awesome_thermostat)) avec l'ajout de fonctionnalités. diff --git a/README.md b/README.md index b4f65ca..2e890af 100644 --- a/README.md +++ b/README.md @@ -5,1680 +5,89 @@ [![BuyMeCoffee][buymecoffeebadge]][buymecoffee] [En](README.md)|[Fr](README-fr.md) - ![Tip](images/icon.png) -> ![Tip](images/tips.png) This thermostat integration aims to drastically simplify your automations around climate management. Because all classical events in climate are natively handled by the thermostat (nobody at home ?, activity detected in a room ?, window open ?, power shedding ?), you don't have to build over complicated scripts and automations to manage your climates ;-). +> ![Tip](images/tips.png) This thermostat integration aims to greatly simplify your heating management automations. Since all typical heating events (nobody home?, activity detected in a room?, window open?, power load shedding?), are natively managed by the thermostat, you don’t need to deal with complicated scripts and automations to manage your thermostats. ;-). -- [Changes in version 6.0](#changes-in-version-60) - - [Temperature entities for presets](#temperature-entities-for-presets) - - [In the case of a central configuration](#in-the-case-of-a-central-configuration) - - [Redesign of the configuration menu](#redesign-of-the-configuration-menu) - - [The 'Incomplete configuration' and 'Finalize' menu options](#the-incomplete-configuration-and-finalize-menu-options) -- [Changes in release 5.0](#changes-in-release-50) -- [Thanks for the beer buymecoffee](#thanks-for-the-beer-buymecoffee) -- [When to use / not use](#when-to-use--not-use) - - [Incompatibilities](#incompatibilities) -- [Why another thermostat implementation ?](#why-another-thermostat-implementation-) -- [How to install this incredible Versatile Thermostat ?](#how-to-install-this-incredible-versatile-thermostat-) - - [HACS installation (recommended)](#hacs-installation-recommended) - - [Manual installation](#manual-installation) -- [Configuration](#configuration) - - [Creation of a new Versatile Thermostat](#creation-of-a-new-versatile-thermostat) - - [Minimal configuration update](#minimal-configuration-update) - - [Select the driven entity](#select-the-driven-entity) - - [For a ```thermostat_over_switch``` type thermostat](#for-a-thermostat_over_switch-type-thermostat) - - [For a thermostat of type ```thermostat_over_climate```:](#for-a-thermostat-of-type-thermostat_over_climate) - - [Self-regulation](#self-regulation) - - [Internal temperature compensation](#internal-temperature-compensation) - - [synthesis of the self-regulation algorithm](#synthesis-of-the-self-regulation-algorithm) - - [Auto-fan mode](#auto-fan-mode) - - [Automatic start/stop](#automatic-startstop) - - [For a thermostat of type ```thermostat_over_valve```:](#for-a-thermostat-of-type-thermostat_over_valve) - - [Configure the TPI algorithm coefficients](#configure-the-tpi-algorithm-coefficients) - - [Configure the preset temperature](#configure-the-preset-temperature) - - [Configure the doors/windows turning on/off the thermostats](#configure-the-doorswindows-turning-onoff-the-thermostats) - - [The sensor mode](#the-sensor-mode) - - [Auto mode](#auto-mode) - - [Configure the activity mode or motion detection](#configure-the-activity-mode-or-motion-detection) - - [Configure the power management](#configure-the-power-management) - - [Configure presence or occupancy](#configure-presence-or-occupancy) - - [Advanced configuration](#advanced-configuration) - - [Centralized control](#centralized-control) - - [Control of a central boiler](#control-of-a-central-boiler) - - [Setup](#setup) - - [How to find the right service?](#how-to-find-the-right-service) - - [The events](#the-events) - - [Warning](#warning) - - [Expert Mode Settings](#expert-mode-settings) - - [Self-regulation in Expert mode](#self-regulation-in-expert-mode) - - [On Time Clamping (max\_on\_percent)](#on-time-clamping-max_on_percent) - - [Parameter summary](#parameter-summary) -- [Tuning examples](#tuning-examples) - - [Electrical heater](#electrical-heater) - - [Central heating (gaz or fuel heating system)](#central-heating-gaz-or-fuel-heating-system) - - [Temperature sensor will battery](#temperature-sensor-will-battery) - - [Reactive temperature sensor (on mains)](#reactive-temperature-sensor-on-mains) - - [My preset configuration](#my-preset-configuration) -- [Algorithm](#algorithm) - - [TPI algorithm](#tpi-algorithm) -- [Sensors](#sensors) -- [Services](#services) - - [Force the presence / occupancy](#force-the-presence--occupancy) - - [Change the temperature of presets](#change-the-temperature-of-presets) - - [Change safety settings](#change-safety-settings) - - [ByPass Window Check](#bypass-window-check) -- [Events](#events) -- [Custom attributes](#custom-attributes) -- [Some results](#some-results) -- [Even better](#even-better) - - [Much better with the Veersatile Thermostat UI Card](#much-better-with-the-veersatile-thermostat-ui-card) - - [Even Better with Scheduler Component !](#even-better-with-scheduler-component-) - - [Even-even better with custom:simple-thermostat front integration](#even-even-better-with-customsimple-thermostat-front-integration) - - [Even better with Plotly to tune your Thermostat](#even-better-with-plotly-to-tune-your-thermostat) - - [And always better and better with the NOTIFIER daemon app to notify events](#and-always-better-and-better-with-the-notifier-daemon-app-to-notify-events) -- [Contributions are welcome!](#contributions-are-welcome) -- [Troubleshooting](#troubleshooting) - - [Using a Heatzy](#using-a-heatzy) - - [Using a Heatsink with a Pilot Wire](#using-a-heatsink-with-a-pilot-wire) - - [Using a heater with a Nodon module](#using-a-heater-with-a-nodon-module) - - [Only the first radiator heats](#only-the-first-radiator-heats) - - [The radiator heats up even though the setpoint temperature is exceeded or does not heat up even though the room temperature is well below the setpoint](#the-radiator-heats-up-even-though-the-setpoint-temperature-is-exceeded-or-does-not-heat-up-even-though-the-room-temperature-is-well-below-the-setpoint) - - [Type `over_switch` or `over_valve`](#type-over_switch-or-over_valve) - - [Type `over_climate`](#type-over_climate) - - [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 safety mode?](#how-to-detect-safety-mode) - - [How can I be notified when this happens?](#how-can-i-be-notified-when-this-happens) - - [How to repair?](#how-to-repair) - - [Using a group of people as a presence sensor](#using-a-group-of-people-as-a-presence-sensor) - - [Enable Versatile Thermostat logs](#enable-versatile-thermostat-logs) +This custom component for Home Assistant is an upgrade and a complete rewrite of the "Awesome thermostat" component (see [Github](https://github.com/dadge/awesome_thermostat)) with added features. - -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. - ->![New](images/new-icon.png) _*Latest releases*_ -> * **Release 6.5** : -> - Added a new function allowing the automatic shutdown and restart of a VTherm `over_climate` [585](https://github.com/jmcollin78/versatile_thermostat/issues/585) -> - Improved management of openings at startup. Allows to memorize and recalculate the state of an opening when restarting Home Assistant [504](https://github.com/jmcollin78/versatile_thermostat/issues/504) -> * **Release 6.0**: -> - Added entities from the Number domain to configure preset temperatures [354](https://github.com/jmcollin78/versatile_thermostat/issues/354) -> - Complete redesign of the configuration menu to remove temperatures and use a menu instead of a configuration tunnel [354](https://github.com/jmcollin78/versatile_thermostat/issues/354) -> * **Release 5.4**: -> - Added temperature step [#311](https://github.com/jmcollin78/versatile_thermostat/issues/311), -> - addition of regulation thresholds for the `over_valve` to avoid draining the TRV battery too much [#338](https://github.com/jmcollin78/versatile_thermostat/issues/338), -> - added an option allowing the internal temperature of a TRV to be used to force self-regulation [#348](https://github.com/jmcollin78/versatile_thermostat/issues/348), -> - added a keep-alive function for VTherm `over_switch` [#345](https://github.com/jmcollin78/versatile_thermostat/issues/345) -
-Others releases - -> * **Release 5.3**: Added a central boiler control function [#234](https://github.com/jmcollin78/versatile_thermostat/issues/234) - more information here: [Controlling a central boiler](#controlling-a-central-boiler). Added the ability to disable security mode for outdoor thermometer [#343](https://github.com/jmcollin78/versatile_thermostat/issues/343) -> * **Release 5.2**: Added a `central_mode` allowing all VTherms to be controlled centrally [#158](https://github.com/jmcollin78/versatile_thermostat/issues/158). -> * **Release 5.1**: Limitation of the values sent to the valves and the temperature sent to the underlying climate. -> * **Release 5.0**: Added a central configuration allowing the sharing of attributes that can be shared [#239](https://github.com/jmcollin78/versatile_thermostat/issues/239). -> * **Release 4.3**: Added an auto-fan mode for the `over_climate` type allowing ventilation to be activated if the temperature difference is significant [#223](https://github.com/jmcollin78/versatile_thermostat/issues/223). -> * **Release 4.2**: The calculation of the slope of the temperature curve is now done in °/hour and no longer in °/min [#242](https://github.com/jmcollin78/versatile_thermostat/issues/242). Correction of automatic detection of openings by adding smoothing of the temperature curve. -> * **Release 4.1**: Added an **Expert** regulation mode in which the user can specify their own auto-regulation parameters instead of using the pre-programmed ones [#194]( https://github.com/jmcollin78/versatile_thermostat/issues/194). -> * **Release 4.0**: Added the support of **Versatile Thermostat UI Card**. See [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card). Added a **Slow** regulation mode for slow latency heating devices [#168](https://github.com/jmcollin78/versatile_thermostat/issues/168). Change the way **the power is calculated** in case of VTherm with multi-underlying equipements [#146](https://github.com/jmcollin78/versatile_thermostat/issues/146). Added the support of AC and Heat for VTherm over switch alse [#144](https://github.com/jmcollin78/versatile_thermostat/pull/144) -> * **Release 3.8**: Added a **self-regulation function** for `over climate` thermostats whose regulation is done by the underlying climate. See [Self-regulation](#self-regulation) and [#129](https://github.com/jmcollin78/versatile_thermostat/issues/129). Added the possibility of **inverting the command** for an `over switch` thermostat to address installations with pilot wire and diode [#124](https://github.com/jmcollin78/versatile_thermostat/issues/124). -> * **Release 3.7**: Addition of the **Versatile Thermostat type `over valve`** to control a TRV valve directly or any other dimmer type equipment for heating. Regulation is then done directly by acting on the opening percentage of the underlying entity: 0 the valve is cut off, 100: the valve is fully opened. See [#131](https://github.com/jmcollin78/versatile_thermostat/issues/131). Added a function allowing the bypass of opening detection [#138](https://github.com/jmcollin78/versatile_thermostat/issues/138). Added Slovak language -> * **Release 3.6**: Added the `motion_off_delay` parameter to improve motion management [#116](https://github.com/jmcollin78/versatile_thermostat/issues/116), [#128](https://github.com/jmcollin78/versatile_thermostat/issues/128). Added AC (air conditioning) mode for a VTherm over switch. Preparing the Github project to facilitate contributions [#127](https://github.com/jmcollin78/versatile_thermostat/issues/127) -> * **Release 3.5**: Multiple thermostats when using "thermostat over another thermostat" mode [#113](https://github.com/jmcollin78/versatile_thermostat/issues/113) -> * **Release 3.4**: bug fixes and expose preset temperatures for AC mode [#103](https://github.com/jmcollin78/versatile_thermostat/issues/103) -> * **Release 3.3**: add the Air Conditionned mode (AC). This feature allow to use the eventual AC mode of your underlying climate entity. You have to check the "Use AC mode" checkbox in configuration and give preset temperature value for AC mode and AC mode when absent if absence is configured -> * **Release 3.2**: add the ability to control multiple switches from the same thermostat. In this mode, the switches are triggered with a delay to minimize the power required at one time (we minimize the recovery periods). See [Configuration](#select-the-driven-entity) -> * **Release 3.1**: added detection of open windows/doors by temperature drop. This new function makes it possible to automatically stop a radiator when the temperature drops suddenly. See [Auto mode](#auto-mode) -> * **Major release 3.0**: addition of thermostat equipment and associated sensors (binary and non-binary). Much closer to the Home Assistant philosophy, you now have direct access to the energy consumed by the radiator controlled by the thermostat and many other sensors that will be useful in your automations and dashboard. -> * **release 2.3**: addition of the power and energy measurement of the radiator controlled by the thermostat. -> * **release 2.2**: addition of a safety function allowing a radiator not to be left heating forever in the event of a thermometer failure -> * **major release 2.0**: addition of the "over climate" thermostat allowing you to transform any thermostat into a Versatile Thermostat and add all the functions of the latter. -
- - -
-Changes in version 6.0 - -# Changes in version 6.0 - -## Temperature entities for presets -Preset temperatures are now directly accessible in the form of entities linked to VTherm. -Example : - -![Temperature entities](images/temp-entities-1.png) - -The Boost, Comfort, Eco and Frost Protection entities allow you to directly adjust the temperatures of these presets without having to reconfigure the VTHerm in the configuration screens. -These modifications persist after a restart and are taken into account immediately by VTherm. - -Depending on the functions activated, the list of temperatures may be more or less complete: -1. If presence management is activated, absence presets are created. They are suffixed with 'abs' for absence, -2. If air conditioning management (AC Mode) is activated, air conditioning mode presets are created. They are suffixed with 'clim' for air conditioning. Only the Frost protection preset has no equivalent in air conditioning mode, -3. The different absent and air conditioning combinations can be created depending on the configuration of the VTherm - -If a VTherm uses the presets of the central configuration, these entities are not created, because the temperatures of the presets are managed by the central configuration. - -### In the case of a central configuration -If you have configured a central configuration, this also has its own presets which meet the same rules as stated above. -Example of a central configuration with presence management and AC (air conditioning) mode: - -![Temperature entities](images/temp-entities-2.png) - -In the case of a change of a central configuration temperature, all VTherms that use this preset are immediately updated. - -## Redesign of the configuration menu -The configuration menu has been completely revised. It dynamically adapts to the user's choices and allows direct access to the settings of the desired function without having to go through the entire configuration tunnel. - -To create a new VTherm, you will first need to choose the type of VTherm: - -![VTherm choice](images/config-main0.png) - -Then, you now access the following configuration menu: - -![VTherm menu](images/config-menu.png) - -Each part to be configured is directly accessible, without having to go through the entire configuration tunnel as before. - -You will note the menu option named `Functions` which allows you to choose which functions will be implemented for this VTherm: - -![VTherm features](images/config-features.png) - -Depending on your choices, the main menu will adapt to add the necessary options. - -Example of menu with all functions checked: - -![VTherm menu](images/config-menu-all-options.png) -You can see that the 'Opening detection', 'Motion detection', 'Power management' and 'Presence management' options have been added. You can then configure them. - -### The 'Incomplete configuration' and 'Finalize' menu options - -The last menu option is special. It allows you to validate the creation of the VTherm when all the functions have been correctly configured. -If one option is not configured correctly, the last option is: - -![Incomplete configuration](images/config-not-complete.png) - -Its selection does nothing but prevents you from finalizing the creation (resp. modification) of the VTherm. -**You must then search in the options which one is missing**. - -Once all configuration is valid, the last option changes to: - -![Complete configuration](images/config-complete.png) - -Click on this option to create (resp. modify) the VTherm: - -![Configuration Complete](images/config-terminate.png) -
- -
-Changes in release 5.0 - -# Changes in release 5.0 - -You can now define a central configuration which will allow you to share certain attributes on all your VTherms (or only part of them). To use this possibility, you must: -1. Create a VTherm of type “Central Configuration”, -2. Enter the attributes of this central configuration - -To then use it in the other VTherms, you must reconfigure them and whenever possible check the "Use central configuration" box. This check box appears in all attribute groups that can use central configuration: main attributes, TPI, openings, movement, power, presence and advanced parameters. - -The configurable attributes in the central configuration are listed here: [Parameter summary](#parameter-synthesis). - -When changing the central configuration, all VTherms will be reloaded to take these changes into account. - -Consequently, the entire configuration phase of a VTherm has been profoundly modified to be able to use the central configuration or overload the values of the central configuration with values specific to the VTherm being configured. -
- -# Thanks for the beer [buymecoffee](https://www.buymeacoffee.com/jmcollin78) -Many thanks to @salabur, @pvince83, @bergoglio, @EPicLURcher, @ecolorado66, @Kriss1670, @maia, @f.maymil, @moutte69, @Jerome, @Gunnar M, @Greg.o, @John Burgess, @abyssmal, @capinfo26, @Helge, @MattG, @MattG, @Mexx62, @Someone, @Lajull, @giopeco, @fredericselier, @philpagan, @studiogriffanti, @Edwin, @Sebbou, @Gerard R., @John Burgess, @Sylvoliv, @cdenfert, @stephane.l, @jms92100 for the beers. It's very nice and encourages me to continue! - -# When to use / not use -This thermostat can control 3 types of equipment: -1. a radiator that only operates in on/off mode (called ``thermostat_over_switch```). The minimum configuration necessary to use this type thermostat is: - 1. equipment such as a radiator (a ``switch``` or equivalent), - 2. a temperature probe for the room (or an input_number), - 3. an outdoor temperature sensor (consider weather integration if you don't have one) -2. another thermostat which has its own operating modes (named ``thermostat_over_climate```). For this type of thermostat the minimum configuration requires: - 1. equipment - such as air conditioning, a thermostatic valve - which is controlled by its own ``climate'' type entity, -3. equipment which can take a value from 0 to 100% (called `thermostat_over_valve`). At 0 the heating is cut off, 100% it is fully opened. This type allows you to control a thermostatic valve (see Shelly valve) which exposes an entity of type `number.` allowing you to directly control the opening of the valve. Versatile Thermostat regulates the room temperature by adjusting the opening percentage, using the interior and exterior temperature sensors using the TPI algorithm described below. - -The ```thermostat_over_climate``` type allows you to add all the functionality provided by VersatileThermostat to your existing equipment. The climate VersatileThermostat entity will control your existing climate entity, turning it off if the windows are open, switching it to Eco mode if no one is present, etc. See [here](#why-a-new-implementation-of-the-thermostat). For this type of thermostat, any heating cycles are controlled by the underlying climate entity and not by the Versatile Thermostat itself. An optional self-regulation function allows the Versatile Thermostat to adjust the temperature given as a setpoint to the underlying in order to reach the setpoint. - -Installations with pilot wire and activation diode benefit from an option which allows the on/off control of the underlying radiator to be reversed. To do this, use the `over switch` type and check the command inversion option. - -## Incompatibilities - -Some TRV type thermostats are known to be incompatible with the Versatile Thermostat. This is the case for the following valves: -1. Danfoss POPP valves with temperature feedback. It is impossible to turn off this valve and it self-regulates, causing conflicts with the VTherm, -2. "Homematic" (and possible Homematic IP) thermostats are known to have problems with Versatile Thermostats because of limitations of the underlying RF protocol. This problem especially occurs when trying to control several Homematic thermostats at once in one Versatile Thermostat instance. In order to reduce duty cycle load, you may e.g. group thermostats with Homematic-specific procedures (e.g. using a wall thermostat) and let Versatile Thermostat only control the wall thermostat directly. Another option is to control only one thermostat and propagate the changes in HVAC mode and temperature by an automation. -3. Thermostat of type Heatzy which doesn't supports the set_temperature command. -4. Thermostats of type Rointe tends to awake alone even if VTherm turns it off. Others functions works fine. -5. TRV of type Aqara SRTS-A01 and MOES TV01-ZB which doesn't have the return state `hvac_action` allowing to know if it is heating or not. So return states are not available. Others features, seems to work normally. -6. The Airwell with the "Midea AC LAN" integration. If two orders are too close, the device shut off. -7. System based on intégration Overkiz don't work as expected. It seems not possible to turn off nor sending setpoint on those systems. - -# Why another thermostat implementation ? - -This component named __Versatile thermostat__ manage the following use cases : -- Configuration through standard integration GUI (using Config Entry flow), -- Full uses of **presets mode**, -- Unset the preset mode when the temperature is **manually defined** on a thermostat, -- Turn off/on a thermostat when a **door or windows is opened/closed** after a certain delay, -- Change preset when an **activity is detected** or not in a room for a defined time, -- Use a **TPI (Time Proportional Interval) algorithm** thank's to [[Argonaute](https://forum.hacf.fr/u/argonaute/summary)] algorithm , -- Add **power shedding management** or regulation to avoid exceeding a defined total power. When max power is exceeded, a hidden 'power' preset is set on the climate entity. When power goes below the max, the previous preset is restored. -- Add **home presence management**. This feature allows you to dynamically change the temperature of preset considering a occupancy sensor of your home. -- Add **services to interact with the thermostat** from others integration: you can force the presence / un-presence using a service, and you can dynamically change the temperature of the presets and change dynamically the safety parameters. -- Add sensors to see the internal states of the thermostat, -- Centralized control of all Versatile Thermostats to stop them all, switch them all to frost protection, force them into Heating mode (winter), force them into Cooling mode (summer). -- Control of a central boiler and the VTherms which must control this boiler. - -# How to install this incredible Versatile Thermostat ? - -## HACS installation (recommended) - -1. Install [HACS](https://hacs.xyz/). That way you get updates automatically. -2. The Versatile Thermostat integration is now offered directly from the HACF interface (integration tab). -3. search and install "Versatile Thermostat" in HACS and click `install`. -4. Restart Home Assistant, -5. Then you can add an Versatile Thermostat integration in the integration page. You add as many Versatile Thermostat that you need (typically one per heater that should be managed) - -## Manual installation - -1. Using the tool of choice open the directory (folder) for your HA configuration (where you find `configuration.yaml`). -2. If you do not have a `custom_components` directory (folder) there, you need to create it. -3. In the `custom_components` directory (folder) create a new folder called `versatile_thermostat`. -4. Download _all_ the files from the `custom_components/versatile_thermostat/` directory (folder) in this repository. -5. Place the files you downloaded in the new directory (folder) you created. -6. Restart Home Assistant -7. Configure new Versatile Thermostat integration - - -# Configuration - --- VTherm = Versatile Thermostat in the remainder of this document -- - -> ![Tip](images/tips.png) _*Notes*_ +# What's new? +![New](images/new-icon.png) +> * **Release 6.8**: > -> Three ways to configure VTherms are available: -> 1. Each Versatile Thermostat is completely independently configured. Choose this option if you do not want to have any central configuration or management. -> 2. Some aspects are configured centrally. This allows e.g. define the min/max temperature, open window detection, etc. at the level of a single central instance. For each VTherm you configure, you can then choose to use the central configuration or override it with custom settings. -> 3. In addition to this centralized configuration, all VTherms can be controlled by a single entity of type `select`. This function is named `central_mode`. This allows you to stop / start / freeze / etc. all VTherms at once. For each VTherm, the user indicates whether he is affected by this `central_mode`. - - -## Creation of a new Versatile Thermostat - -Click on Add integration button in the integration page -![image](images/add-an-integration.png) - -The configuration can be change through the same interface. Simply select the thermostat to change, hit "Configure" and you will be able to change some parameters or configuration. - -Then choose the type of VTherm you want to create: -![image](images/config-main0.png) - -## Minimal configuration update - -Then choose the “Main attributes” menu. - -![image](images/config-main.png) - -Give the main mandatory attributes: -1. a name (will be the name of the integration and also the name of the climate entity) -2. the thermostat type ```thermostat_over_switch``` to control a radiator controlled by a switch or ```thermostat_over_climate``` to control another thermostat, or ```thermostat_over_valve``` Cf. [above](# why-a-new-thermostat-implementation) -4. a temperature sensor entity identifier which gives the temperature of the room in which the radiator is installed, -5. a temperature sensor entity giving the outside temperature. If you don't have an external sensor, you can use local weather integration -6. a cycle duration in minutes. On each cycle, the heater will cycle on and then off for a calculated time to reach the target temperature (see [preset](#configure-the-preset-temperature) below). In ```over_climate``` mode, the cycle is only used to carry out basic controls but does not directly regulate the temperature. It's the underlying climate that does it, -7. minimum and maximum thermostat temperatures, -8. the power of the l'équipement which will activate the power and energy sensors of the device, -9. the possibility of controlling the thermostat centrally. Cf [centralized control](#centralized-control), -10. the list of features that will be used for this thermostat. Depending on your choices, the following configuration screens will appear or not. - -> ![Tip](images/tips.png) _*Notes*_ -> 1. With the ```thermostat_over_switch``` type, calculation are done at each cycle. So in case of conditions change, you will have to wait for the next cycle to see a change. For this reason, the cycle should not be too long. **5 min is a good value**, -> 2. if the cycle is too short, the heater could never reach the target temperature. For the storage radiator for example it will be used unnecessarily. - -## Select the driven entity - -Depending on your choice of thermostat type, you will need to choose one or more `switch`, `climate` or `number` type entities. Only entities compatible with the type are presented. - -> ![Tip](images/tips.png) _*How to choose the type*_ -> The choice of type is important. Even if it is always possible to modify it afterwards via the configuration HMI, it is preferable to ask yourself the following few questions: -> 1. **what type of equipment am I going to pilot?** In order, here is what to do: -> 1. if you have a thermostatic valve (TRV) that can be controlled in Home Assistant via a ```number``` type entity (for example a _Shelly TRV_), choose the `over_valve` type. It is the most direct type and which ensures the best regulation, -> 2. if you have an electric radiator (with or without pilot wire) and a ```switch``` type entity allows you to turn it on or off, then the ```over_switch``` type is preferable. Regulation will be done by the Versatile Thermostat according to the temperature measured by your thermometer, where you have placed it, -> 3. in all other cases, use the ```over_climate``` mode. You keep your original `climate` entity and the Versatile Thermostat "only" controls the on/off and the target temperature of your original thermostat. Regulation is done by your original thermostat in this case. This mode is particularly suitable for all-in-one reversible air conditioning systems whose exposure in Home Assistant is limited to a `climate` type entity. -> 2. **what type of regulation do I want?** If the controlled equipment has its own regulation mechanism (air conditioning, certain TRV valve) and this regulation works well, opt for an ``over_climate``` -It is possible to choose an over switch thermostat which controls air conditioning by checking the "AC Mode" box. In this case, only the cooling mode will be visible. - -### For a ```thermostat_over_switch``` type thermostat -![image](images/en/config-linked-entity.png) - -Some heater switches require regular "keep-alive messages" to prevent them from triggering a failsafe switch off. This feature can be enabled through the switch keep-alive interval configuration field. - -The algorithm to use is currently limited to TPI is available. See [algorithm](#algorithm). -If several type entities are configured, the thermostat shifts the activations in order to minimize the number of switches active at a time t. This allows for better power distribution since each radiator will turn on in turn. -Example of synchronized triggering: -![image](images/multi-switch-activation.png) - -It is possible to choose an over switch thermostat which controls air conditioning by checking the "AC Mode" box. In this case, only the cooling mode will be visible. - -If your equipment is controlled by a pilot wire with a diode, you will certainly need to check the "Invert Check" box. It allows you to set the switch to On when you need to turn the equipment off and to Off when you need to turn it on. - -### For a thermostat of type ```thermostat_over_climate```: -![image](images/config-linked-entity2.png) - -It is possible to choose an over climate thermostat which controls reversible air conditioning by checking the “AC Mode” box. In this case, depending on the equipment ordered, you will have access to heating and/or cooling. - -#### Self-regulation -Since release 3.8, you have the possibility to activate the self-regulation function. This function allows VersatileThermostat to adapt the temperature setpoint given to the underlying climate so that the room temperature actually reaches the setpoint. -To do this, the VersatileThermostat calculates an offset based on the following information: -1. the current difference between the actual temperature and the set temperature, -2. the accumulation of past differences, -3. the difference between the outside temperature and the setpoint - -These three pieces of information are combined to calculate the offset which will be added to the current setpoint and sent to the underlying climate. - -The self-regulation function is configured with: -1. a degree of regulation: - 1. Light - for low self-regulation needs. In this mode, the maximum offset will be 1.5°, - 2. Medium - for average self-regulation. A maximum offset of 2° is possible in this mode, - 3. Strong - for a strong need for self-regulation. The maximum offset is 3° in this mode and the auto-regulation will react strongly to temperature changes. -2. A self-regulation threshold: value below which new regulation will not be applied. Let us imagine that at a time t, the offset is 2°. If in the next calculation, the offset is 2.4°, it will not be applied. It will only be applied that the difference between 2 offsets will be at least equal to this threshold, -3. Minimum period between 2 self-regulation changes: this number, expressed in minutes, indicates the duration between 2 regulation changes. - -These three parameters make it possible to modulate the regulation and avoid multiplying the regulation sendings. Some equipment such as TRVs and boilers do not like the temperature setpoint to be changed too often. - -> ![Tip](images/tips.png) _*Implementation tip*_ -> 1. Do not start self-regulation straight away. Watch how the natural regulation of your equipment works. If you notice that the set temperature is not reached or that it is taking too long to be reached, start the regulation, -> 2. First start with a slight self-regulation and keep both parameters at their default values. Wait a few days and check if the situation has improved, -> 3. If this is not sufficient, switch to Medium self-regulation, wait for stabilization, -> 4. If this is still not sufficient, switch to Strong self-regulation, -> 5. If it is still not good, you will have to switch to expert mode to be able to finely adjust the regulation parameters. See below. - -Self-regulation consists of forcing the equipment to go further by forcing its set temperature regularly. Its consumption can therefore be increased, as well as its wear. - -#### Internal temperature compensation -Sometimes, a device’s internal temperature sensor (like in a TRV or AC) can give inaccurate readings, especially if it’s too close to a heat source. This can cause the device to stop heating too soon. -For example: -1. target temperature: 20 °C, room temperature: 18 °C, -2. device’s internal sensor: 22 °C -3. If the target temperature is increased to 21 °C, the device won’t heat because it thinks it’s already warm (internal temperature is 22°C). - -The Adjust Setpoint for Room vs. TRV Temperature feature fixes this by adding the temperature difference between the room and the device’s internal reading to the target. In this case, VTherm would adjust the target to 25°C (21°C + 4°C difference), forcing the device to continue heating. - -This adjustment is specific to each device, making the heating system more accurate and avoiding issues from faulty sensor readings. -See ![Use of internal temperature](images/config-use-internal-temp.png) - -#### synthesis of the self-regulation algorithm -The self-regulation algorithm can be summarized as follows: - -1. initialize the target temperature as the VTherm setpoint, -1. If self-regulation is activated, - 1. calculates the regulated temperature (valid for a VTherm), - 2. take this temperature as a target, -2. For each underlying of the VTherm, - 1. If "use internal temperature" is checked, - 1. calculates the offset (trv internal temp - room temp), - 2. Adding the offset to the target temperature, - 3. sends the target temperature (= regulated temp + (internal temp - room temp)) to the underlying - -#### Auto-fan mode -This mode introduced in 4.3 makes it possible to force the use of ventilation if the temperature difference is significant. In fact, by activating ventilation, distribution occurs more quickly, which saves time in reaching the target temperature. -You can choose which ventilation you want to activate between the following settings: Low, Medium, High, Turbo. - -Obviously your underlying equipment must be equipped with ventilation and be controllable for this to work. -If your equipment does not include Turbo mode, Forte` mode will be used as a replacement. -Once the temperature difference becomes low again, the ventilation will go into a "normal" mode which depends on your equipment, namely (in order): `Silence (mute)`, `Auto (auto)`, `Low (low)`. The first value that is possible for your equipment will be chosen. - -#### Automatic start/stop -This function was introduced in 6.5.0. It allows VTherm to stop equipment that does not need to be turned on and to restart it when conditions require it. This function has 3 settings that allow the equipment to be stopped/restarted more or less quickly. - -To use it, you must: -1. Add the `Use the auto start and stop feature` function in the 'Features' menu, -2. Set the detection level in the `Auto start and stop` option that is displayed when the function has been activated. You choose the detection level between 'Slow', 'Medium' and 'Fast'. The 'Fast' level will result in more shutdowns/restarts. - -Once configured, you will now have a new entity of type `switch` that allows you to authorize or not the automatic shutdown/restart without touching the configuration. This entity is available on the VTherm device and is called `switch._enable_auto_start_stop`. Check it to authorize the automatic startup and shutdown. - -The detection algorithm is described [here](https://github.com/jmcollin78/versatile_thermostat/issues/585). - -### For a thermostat of type ```thermostat_over_valve```: -![image](images/config-linked-entity3.png) -You can choose up to domain entity ```number``` or ```ìnput_number``` which will control the valves. -The algorithm to use is currently limited to TPI is available. See [algorithm](#algorithm). - -It is possible to choose an over valve thermostat which controls air conditioning by checking the "AC Mode" box. In this case, only the cooling mode will be visible. - -## Configure the TPI algorithm coefficients - -Ff you choose a ```over_switch``` or ```over_valve``` thermostat and select the "TPI" menu option, you will get there: -![image](images/config-tpi.png) - -For more informations on the TPI algorithm and tuned please refer to [algorithm](#algorithm). - -## Configure the preset temperature - -The preset mode allows you to pre-configurate targeted temperature. Used in conjonction with Scheduler (see [scheduler](#even-better-with-scheduler-component) you will have a powerfull and simple way to optimize the temperature vs electrical consumption of your hous. Preset handled are the following : - - **Eco** : device is running an energy-saving mode - - **Comfort** : device is in comfort mode - - **Boost** : device turn all valve full up - - If AC mode is used, you will also be able to configure temperatures when the equipment is in cooling mode. - -**None** is always added in the list of modes, as it is a way to not use the presets modes but a **manual temperature** instead. - -The pre-settings are made (since v6.0) directly from the VTherm entities or from the central configuration if you use the central configuration. - -> ![Tip](images/tips.png) _*Notes*_ -> 1. Changing manually the target temperature, set the preset to None (no preset). This way you can always set a target temperature even if no preset are available. -> 2. standard ``Away`` preset is a hidden preset which is not directly selectable. Versatile Thermostat uses the presence management or movement management to set automatically and dynamically the target temperature depending on a presence in the home or an activity in the room. See [presence management](#configure-the-presence-management). -> 3. if you uses the power shedding management, you will see a hidden preset named ``power``. The heater preset is set to ``power`` when overpowering conditions are encountered and shedding is active for this heater. See [power management](#configure-the-power-management). -> 4. if you uses the advanced configuration you will see the preset set to ``safety`` if the temperature could not be retrieved after a certain delay -> 5. ff you don't want to use the preseet, give 0 as temperature. The preset will then been ignored and will not displayed in the front component - -## Configure the doors/windows turning on/off the thermostats - -You must have chosen the ```With opening detection``` feature on the first page to arrive on this page. -The detection of openings can be done in 2 ways: -1. either with a sensor placed on the opening (sensor mode), -2. either by detecting a sudden drop in temperature (auto mode) - -### The sensor mode -In sensor mode, you must fill in the following information: -![image](images/config-window-sensor.png) - -1. an entity ID of a **window/door sensor**. It should be a binary_sensor or an input_boolean. The state of the entity must be 'on' when the window is open or 'off' when it is closed -2. a **delay in seconds** before any change. This allows a window to be opened quickly without stopping the heating. - -### Auto mode -In auto mode, the configuration is as follows: -![image](images/config-window-auto.png) - -1. a detection threshold in degrees per minute. When the temperature drops below this threshold, the thermostat will turn off. The lower this value, the faster the detection will be (in return for a risk of false positives), -2. an end of detection threshold in degrees per minute. When the temperature drop goes above this value, the thermostat will go back to the previous mode (mode and preset), -3. maximum detection time. Beyond this time, the thermostat will return to its previous mode and preset even if the temperature continues to drop. - -To set the thresholds it is advisable to start with the reference values ​​and adjust the detection thresholds. A few tries gave me the following values ​​(for a desktop): -- detection threshold: 0.05°C/min -- non-detection threshold: 0 °C/min -- maximum duration: 60 min. - -A new "slope" sensor has been added for all thermostats. It gives the slope of the temperature curve in °C/min (or °K/min). This slope is smoothed and filtered to avoid aberrant values ​​from the thermometers which would interfere with the measurement. -![image](images/temperature-slope.png) - -To properly adjust it is advisable to display on the same historical graph the temperature curve and the slope of the curve (the "slope"): -![image](images/window-auto-tuning.png) - -And that's all ! your thermostat will turn off when the windows are open and turn back on when closed. - -> ![Tip](images/tips.png) _*Notes*_ -> 1. If you want to use **multiple door/window sensors** to automate your thermostat, just create a group with the usual behavior (https://www.home-assistant.io/integrations/binary_sensor.group/) -> 2. If you don't have a window/door sensor in your room, just leave the sensor entity id blank, -> 3. **Only one mode is allowed**. You cannot configure a thermostat with a sensor and automatic detection. The 2 modes may contradict each other, it is not possible to have the 2 modes at the same time, -> 4. It is not recommended to use the automatic mode for equipment subject to frequent and normal temperature variations (corridors, open areas, ...) - -## Configure the activity mode or motion detection -If you choose the ```Motion management``` feature, lick on 'Validate' on the previous page and you will get there: -![image](images/config-motion.png) - -We will now see how to configure the new Activity mode. -What we need: -- a **motion sensor**. The entity id of a motion sensor. Motion sensor states should be 'on' (motion detected) or 'off' (no motion detected) -- a **motion delay** (in seconds) duration defining how long we wait for motion confirmation before considering the motion -- a **end of motion delay** (in seconds) duration defining how long we wait for end of motion confirmation before considering the end of motion -- a **target "motion" preset**. We will used the temperature of this preset when an activity is detected. -- a **target "no motion" preset**. We will used the temperature of this second preset when no activity is detected. - -- we have a room with a thermostat set to activity mode, the "movement" mode chosen is comfort (21.5°C), the "no movement" mode chosen is Eco (18.5°C) and the movement delay is 30 sec during detection and 5 minutes at the end of detection. -- the room has been empty for a while (no activity detected), the temperature of this room is 18.5° -- someone enters the room, activity is detected if movement is present for at least 30 seconds. The temperature then rises to 21.5° -- if the movement is present for less than 30 seconds (rapid passage), the temperature remains at 18.5°, -- imagine that the temperature has risen to 21.5°, when the person leaves the room, after 5 minutes the temperature is reduced to 18.5°. -- if the person returns before 5 minutes, the temperature remains at 21.5° - -For this to work, the climate thermostat should be in ``Activity`` preset mode. - -> ![Tip](images/tips.png) _*Notes*_ -> 1. Be aware that as for the others preset modes, ``Activity`` will only be proposed if it's correctly configure. In other words, the 4 configuration keys have to be set if you want to see Activity in home assistant Interface - -## Configure the power management - -If you choose the ```Power management``` feature, click on 'Validate' on the previous page and you will get there: -![image](images/config-power.png) - -This feature allows you to regulate the power consumption of your radiators. Known as shedding, this feature allows you to limit the electrical power consumption of your heater if overpowering conditions are detected. Give a **sensor to the current power consumption of your house**, a **sensor to the max power** that should not be exceeded, the **power consumption of your heaters linked to the VTherm** (in the first step of the configuration) and the algorithm will not start a radiator if the max power will be exceeded after radiator starts. - - -Note that all power values should have the same units (kW or W for example). -This allows you to change the max power along time using a Scheduler or whatever you like. - -> ![Tip](images/tips.png) _*Notes*_ -> 1. When shedding is encountered, the heater is set to the preset named ``power``. This is a hidden preset, you cannot select it manually. -> 2. I use this to avoid exceeded the limit of my electrical power contract when an electrical vehicle is charging. This makes a kind of auto-regulation. -> 3. Always keep a margin, because max power can be briefly exceeded while waiting for the next cycle calculation typically or by not regulated equipement. -> 4. If you don't want to use this feature, just leave the entities id empty -> 5. If you control several heaters, the **power consumption of your heater** setup should be the sum of the power. - -## Configure presence or occupancy - -If selected on the first page, this feature allows you to dynamically change the temperature of all configured thermostat presets when no one is home or when someone comes home. To do this, you must configure the temperature that will be used for each preset when presence is disabled. When the presence sensor turns off, these temperatures will be used. When it turns back on, the "normal" temperature configured for the preset is used. See [preset management](#configure-the-preset-temperature). -To configure presence, complete this form: - -![image](images/config-presence.png) - -To do this, you must configure: -1. An **occupancy sensor** whose state must be 'on' or 'home' if someone is present or 'off' or 'not_home' otherwise, -2. The **temperature used in Eco** predefined in the event of absence, -3. The **temperature used in Comfort** preset in case of absence, -4. The **temperature used in Boost** preset in case of absence - -If AC mode is used, you will also be able to configure temperatures when the equipment is in cooling mode. - -ATTENTION: groups of people do not function as a presence sensor. They are not recognized as a presence sensor. You must use a template as described here [Using a group of people as a presence sensor](#using-a-group-of-people-as-a-presence-sensor). - -> ![Tip](images/tips.png) _*Notes*_ -> 1. the change in temperature is immediate and is reflected on the front shutter. The calculation will take into account the new target temperature at the next calculation of the cycle, -> 2. you can use the person.xxxx direct sensor or a group of Home Assistant sensors. The presence sensor manages the ``on`` or ``home`` states as present and the ``off`` or ``not_home`` states as absent. - -## Advanced configuration - -Those parameters allows to fine tune the thermostat. -The advanced configuration form is the following: - -![image](images/config-advanced.png) - -The first delay (minimal_activation_delay_sec) in sec in the minimum delay acceptable for turning on the heater. When calculation gives a power on delay below this value, the heater will stays off. - -The second delay (security_delay_min) is the maximal delay between two temperature measure before setting the preset to ``safety`` and turning off the thermostat. If the temperature sensor is no more giving temperature measures, the thermostat and heater will turns off after this delay and the preset of the thermostat will be set to ``safety``. This is useful to avoid overheating is the battery of your temperature sensor is too low. - -The third parameter (``security_min_on_percent``) is the minimum value of ``on_percent`` below which the safety preset will not be activated. This parameter makes it possible not to put a thermostat in safety, if the controlled radiator does not heat sufficiently. -Setting this parameter to ``0.00`` will trigger the safety preset regardless of the last heating setpoint, conversely ``1.00`` will never trigger the safety preset (which amounts to disabling the function). - -The fourth parameter (``security_default_on_percent``) is the ``on_percent`` value that will be used when the thermostat enters ``safety`` mode. If you put ``0`` then the thermostat will be cut off when it goes into ``safety`` mode, putting 0.2% for example allows you to keep a little heating (20% in this case), even in mode ``safety``. It avoids finding your home totally frozen during a thermometer failure. - -Note: parameters `security_min_on_percent` et `security_default_on_percent` are not used by `over_climate` VTherm. - -Since version 5.3 it is possible to deactivate the safety device following a lack of data from the outdoor thermometer. Indeed, this most of the time having a low impact on regulation (depending on your settings), it is possible that it is absent without endangering the home. To do this, you must add the following lines to your `configuration.yaml`: -``` -versatile_thermostat: -... - safety_mode: - check_outdoor_sensor: false -``` -By default, the outdoor thermometer can trigger a trip if it no longer sends a value. - -See [example tuning](#examples-tuning) for common tuning examples - ->![Tip](images/tips.png) _*Notes*_ -> 1. When the temperature sensor comes to life and returns the temperatures, the preset will be restored to its previous value, -> 2. Attention, two temperatures are needed: internal temperature and external temperature and each must give the temperature, otherwise the thermostat will be in "safety" preset, -> 3. A service is available that allows you to set the 3 safety parameters. This can be used to adapt the safety function to your use. -> 4. For natural usage, the ``security_default_on_percent`` should be less than ``security_min_on_percent``, -> 5. Thermostat of type ``thermostat_over_climate`` are not concerned by the safety feature. - -## Centralized control - -Since release 5.2, if you have defined a centralized configuration, you have a new entity named `select.central_mode` which allows you to control all VTherms with a single action. For a VTherm to be centrally controllable, its configuration attribute named `use_central_mode` must be true. - -This entity is presented in the form of a list of choices which contains the following choices: -1. `Auto`: the 'normal' mode in which each VTherm behaves as in previous versions, -2. `Stooped`: all VTherms are turned off (`hvac_off`), -3. `Heat only`: all VTherms are put in heating mode when this mode is supported by the VTherm, otherwise it is stopped, -3. `Cool only`: all VTherms are put in cooling mode when this mode is supported by the VTherm, otherwise it is stopped, -4. `Frost protection`: all VTherms are put in frost protection preset when this preset is supported by the VTherm, otherwise it is stopped. - -It is therefore possible to control all VTherms (only those explicitly designated) with a single control. -Example rendering: - -![central_mode](images/central_mode.png) - -## Control of a central boiler - -Since release 5.3, you have the possibility of controlling a centralized boiler. From the moment it is possible to start or stop this boiler from Home Assistant, then Versatile Thermostat will be able to control it directly. - -The principle put in place is generally as follows: -1. a new entity of type `binary_sensor` and named by default `binary_sensor.central_boiler` is added, -2. in the VTherms configuration you indicate whether the VTherm should control the boiler. Indeed, in a heterogeneous installation, some VTherm must control the boiler and others not. You must therefore indicate in each VTherm configuration whether it controls the boiler or not, -3. the `binary_sensor.central_boiler` listens for changes in state of VTherm equipment marked as controlling the boiler, -4. as soon as the number of devices controlled by the VTherm requesting heating (ie its `hvac_action` goes to `Heating`) exceeds a configurable threshold, then the `binary_sensor.central_boiler` goes to `on` and **if a activation service has been configured, then this service is called**, -5. if the number of devices requiring heating falls below the threshold again, then the `binary_sensor.central_boiler` goes to `off` and if **a deactivation service has been configured, then this service is called**, -6. you have access to two entities: - - one of type `number` named by default `number.boiler_activation_threshold`, gives the trigger threshold. This threshold is in number of equipment (radiators) which requires heating. - - one of type `sensor` named by default `sensor.nb_device_active_for_boiler`, gives the number of devices requiring heating. For example, a VTherm having 4 valves including 3 heating requests will increase this sensor to 3. Only VTherm equipment that is marked to control the central boiler is counted. - -You therefore always have the information which allows you to control and adjust the activation of the boiler. - -All these entities are attached to the central configuration service: -![The entities controlling the boiler](images/entitites-central-boiler.png) - -### Setup -To configure this function, you must have a centralized configuration (see [Configuration](#configuration)) and check the 'Add a central boiler' box: - -![Adding a central boiler](images/config-central-boiler-1.png) - -On the following page you can configure the services to be called when switching the boiler on/off: - -![Adding a central boiler](images/config-central-boiler-2.png) - -The services are configured as indicated on the page: -1. the general format is `entity_id/service_id[/attribute:value]` (where `/attribute:value` is optional), -2. `entity_id` is the name of the entity that controls the boiler in the form `domain.entity_name`. For example: `switch.boiler` for boilers controlled by a switch or `climate.boiler` for a boiler controlled by a thermostat or any other entity which allows control of the boiler (there is no limitation). We can also switch inputs (`helpers`) like `input_boolean` or `input_number`. -3. `service_id` is the name of the service to call in the form `domain.service_name`. For example: `switch.turn_on`, `switch.turn_off`, `climate.set_temperature`, `climate.set_hvac_mode` are valid examples. -4. For some service you will need a parameter. This can be the 'HVAC Mode' `climate.set_hvac_mode` or the target temperature for `climate.set_temperature`. This parameter must be configured in the form `attribute:value` at the end of the string. - -Examples (to be adjusted to your case): -- `climate.chaudiere/climate.set_hvac_mode/hvac_mode:heat`: to turn on the boiler thermostat in heating mode, -- `climate.chaudiere/climate.set_hvac_mode/hvac_mode:off`: to stop the boiler thermostat, -- `switch.pompe_chaudiere/switch.turn_on`: to turn on the switch which powers the boiler pump, -- `switch.pompe_chaudiere/switch.turn_off`: to turn on the switch which powers the boiler pump, -- ... - -### How to find the right service? -To find the service to use, the best is to go to "Development tools / Services", look for the service called, the entity to order and the possible parameter to give. -Click on 'Call Service'. If your boiler lights up you have the correct configuration. Then switch to Yaml mode and copy the parameters. - -Example: - -Under "Development Tools / Service": - -![Service configuration](images/dev-tools-turnon-boiler-1.png) - -In yaml mode: - -![Service configuration](images/dev-tools-turnon-boiler-2.png) - -The service to configure is then the following: `climate.empty_thermostast/climate.set_hvac_mode/hvac_mode:heat` (note the removal of the blank in `hvac_mode:heat`) - -Then do the same for the extinguishing service and you are all set. - -### The events - -Each time the boiler is successfully switched on or off, an event is sent by Versatile Thermostat. It can advantageously be captured by automation, for example to notify a change. -The events look like this: - -An ignition event: -``` -event_type: versatile_thermostat_central_boiler_event -data: - central_boiler: true - entity_id: binary_sensor.central_boiler - name: Central boiler - state_attributes: null -origin: LOCAL -time_fired: "2024-01-14T11:33:52.342026+00:00" -context: - id: 01HM3VZRJP3WYYWPNSDAFARW1T - parent_id: null - user_id: null -``` - -An extinction event: -``` -event_type: versatile_thermostat_central_boiler_event -data: - central_boiler: false - entity_id: binary_sensor.central_boiler - name: Central boiler - state_attributes: null -origin: LOCAL -time_fired: "2024-01-14T11:43:52.342026+00:00" -context: - id: 01HM3VZRJP3WYYWPNSDAFBRW1T - parent_id: null - user_id: null -``` - -### Warning - -> ![Tip](images/tips.png) _*Notes*_ -> Controlling a central boiler using software or hardware such as home automation can pose risks to its proper functioning. Before using these functions, make sure that your boiler has safety functions and that they are working. Turning on a boiler if all the taps are closed can generate excess pressure, for example. - - -## Expert Mode Settings - -Expert Mode settings refer to Settings made in the Home Assistant `configuration.yaml` file under the `versatile_thermostat` section. You might have to add this section by yourself to the `configuration.yaml` file. - -These settings are meant to be used only in **specific niche cases and with careful considerations**. - - -The following sections describe the available export mode settings in detail with examples on how to configure them. Be aware that these settings require a **complete restart** of Home Assistant or a **reload of Versatile Thermostat integration** (Dev tools / Yaml / reloading the configuration / Versatile Thermostat) to take effect. - - -### Self-regulation in Expert mode - -In **Expert** mode you can finely adjust the auto-regulation parameters to achieve your objectives and optimize as best as possible. The algorithm calculates the difference between the setpoint and the actual temperature of the room. This discrepancy is called error. -The adjustable parameters are as follows: -1. `kp`: the factor applied to the raw error, -2. `ki`: the factor applied to the accumulation of errors, -3. `k_ext`: the factor applied to the difference between the interior temperature and the exterior temperature, -4. `offset_max`: the maximum correction (offset) that the regulation can apply, -5. `stabilization_threshold`: a stabilization threshold which, when reached by the error, resets the accumulation of errors to 0, -6. `accumulated_error_threshold`: the maximum for error accumulation. - -For tuning, these observations must be taken into account: -1. `kp * error` will give the offset linked to the raw error. This offset is directly proportional to the error and will be 0 when the target is reached, -2. the accumulation of the error makes it possible to correct the stabilization of the curve while there remains an error. The error accumulates and the offset therefore gradually increases which should eventually stabilize at the target temperature. For this fundamental parameter to have an effect it must not be too small. An average value is 30 -3. `ki * accumulated_error_threshold` will give the maximum offset linked to the accumulation of the error, -4. `k_ext` allows a correction to be applied immediately (without waiting for errors to accumulate) when the outside temperature is very different from the target temperature. If the stabilization is done too high when the temperature differences are significant, it is because this parameter is too high. It should be possible to cancel completely to let the first 2 offsets take place - -The pre-programmed values are as follows: - -Slow régulation : - - kp: 0.2 # 20% of the current internal regulation offset are caused by the current difference of target temperature and room temperature - ki: 0.8 / 288.0 # 80% of the current internal regulation offset are caused by the average offset of the past 24 hours - k_ext: 1.0 / 25.0 # this will add 1°C to the offset when it's 25°C colder outdoor than indoor - offset_max: 2.0 # limit to a final offset of -2°C to +2°C - stabilization_threshold: 0.0 # this needs to be disabled as otherwise the long term accumulated error will always be reset when the temp briefly crosses from/to below/above the target - accumulated_error_threshold: 2.0 * 288 # this allows up to 2°C long term offset in both directions - -Light régulation : - - kp: 0.2 - ki: 0.05 - k_ext: 0.05 - offset_max: 1.5 - stabilization_threshold: 0.1 - accumulated_error_threshold: 10 - -Medium régulation : - - kp: 0.3 - ki: 0.05 - k_ext: 0.1 - offset_max: 2 - stabilization_threshold: 0.1 - accumulated_error_threshold: 20 - -Strong régulation : - - """Strong parameters for regulation - A set of parameters which doesn't take into account the external temp - and concentrate to internal temp error + accumulated error. - This should work for cold external conditions which else generates - high external_offset""" - - kp: 0.4 - ki: 0.08 - k_ext: 0.0 - offset_max: 5 - stabilization_threshold: 0.1 - accumulated_error_threshold: 50 - -To use Expert mode you must declare the values you want to use for each of these parameters in your `configuration.yaml` in the following form: -``` -versatile_thermostat: - auto_regulation_expert: - kp: 0.4 - ki: 0.08 - k_ext: 0.0 - offset_max: 5 - stabilization_threshold: 0.1 - accumulated_error_threshold: 50 -``` -and of course, configure the VTherm's self-regulation mode in **Expert** mode. All VTherms in Expert mode will use these same settings. - -For the changes to be taken into account, you must either **completely restart Home Assistant** or just the **Versatile Thermostat integration** (Dev tools / Yaml / reloading the configuration / Versatile Thermostat). - - -### On Time Clamping (max_on_percent) - - -The calculated on time percent can be limited to a maximum percentage of the cycle duration. This setting has to be made in expert mode and will be used for all Versatile Thermostats. - -``` -versatile_thermostat: - max_on_percent: 0.8 -``` - -The example above limits the maximum ON time to 80% (0.8) of the cycle length. If the cycle length is for example 600 seconds (10min), the maximum ON time will be limited to 480 seconds (8min). The remaining 120 seconds of the cycle will always remain in the OFF state. - -There are three debug attributes of interest regarding this feature: - -* `max_on_percent` # clamping setting as configured in expert mode -* `calculated_on_percent` # calculated on percent without clamping applied -* `on_percent` # used on percent with clamping applied - - -
-Parameter summary - -## Parameter summary - -| Parameter | Description | "over switch" | "over climate" | "over valve" | "central configuration" | -| ----------------------------------------- | ----------------------------------------------------------------------------- | ------------- | ------------------- | ------------ | ----------------------- | -| ``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 | X | -| ``cycle_min`` | Cycle duration (minutes) | X | X | X | - | -| ``temp_min`` | Minimal temperature allowed | X | X | X | X | -| ``temp_max`` | Maximal temperature allowed | X | X | X | X | -| ``device_power`` | Total device power | X | X | X | - | -| ``use_central_mode`` | Allow the centralized control | 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 | - | - | - | -| ``heater_keep_alive`` | Switch keep-alive interval | 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 | X | -| ``tpi_coef_ext`` | Coefficient to use for external temperature delta | X | - | X | X | -| ``window_sensor_entity_id`` | Window sensor entity id | X | X | X | - | -| ``window_delay`` | Window sensor delay (seconds) | X | X | X | X | -| ``window_auto_open_threshold`` | Temperature decrease threshold for automatic window open detection (in °/min) | X | X | X | X | -| ``window_auto_close_threshold`` | Temperature increase threshold for end of automatic detection (in °/min) | X | X | X | X | -| ``window_auto_max_duration`` | Maximum duration of automatic window open detection (in min) | X | 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 | X | -| ``motion_off_delay`` | Delay before considering the end of motion (seconds) | X | X | X | X | -| ``motion_preset`` | Preset to use when motion is detected | X | X | X | X | -| ``no_motion_preset`` | Preset to use when no motion is detected | X | X | X | X | -| ``power_sensor_entity_id`` | Power sensor entity id | X | X | X | X | -| ``max_power_sensor_entity_id`` | Max power sensor entity id | X | X | X | X | -| ``power_temp`` | Temperature for Power shedding | X | X | X | X | -| ``presence_sensor_entity_id`` | Presence sensor entity id | X | X | X | X | -| ``minimal_activation_delay`` | Minimal activation delay | X | - | X | X | -| ``security_delay_min`` | Safety delay (in minutes) | X | - | X | X | -| ``security_min_on_percent`` | Minimal power percent to enable safety mode | X | - | X | X | -| ``security_default_on_percent`` | Power percent to use in safety mode | X | - | 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 | - | - | - | -| ``auto_fan_mode`` | Auto fan mode | - | X | - | - | -| ``auto_regulation_use_device_temp`` | Use the internal temperature of the underlying device | - | X | - | - | -| ``use_central_boiler_feature`` | Add the control of a central boiler | - | - | - | X | -| ``central_boiler_activation_service`` | Activation service of the boiler | - | - | - | X | -| ``central_boiler_deactivation_service`` | Deactivaiton service of the boiler | - | - | - | X | -| ``used_by_controls_central_boiler`` | Indicate if the VTherm control the central boiler | X | X | X | - | -| ``use_auto_start_stop_feature`` | Indique si la fonction de démarrage/extinction automatique est activée | - | X | - | - | -| ``auto_start_stop_lvel`` | Le niveau de détection de l'auto start/stop | - | X | - | - | -
- -# Tuning examples - -## Electrical heater -- cycle: between 5 and 10 minutes, -- minimal_activation_delay_sec: 30 seconds - -## Central heating (gaz or fuel heating system) -- cycle: between 30 and 60 min, -- minimal_activation_delay_sec: 300 seconds (because of the response time) - -## Temperature sensor will battery -- security_delay_min: 60 min (because these sensors are lazy) -- security_min_on_percent: 0.5 (50% - we go to the ``safety`` preset if the radiator was heating more than 50% of the time) -- security_default_on_percent: 0.1 (10% - in preset ``safety``, we keep a heating background 20% of the time) - -These settings should be understood as follows: - -> If the thermometer no longer sends the temperature for 1 hour and the heating percentage (``on_percent``) was greater than 50%, then this heating percentage is reduced to 10%. - -It's up to you to adapt these settings to your case! - -What is important is not to take too many risks with these parameters: suppose you are away for a long period, that the batteries of your thermometer reach the end of their life, your radiator will heat up 10% of the time for the whole the duration of the outage. - -Versatile Thermostat allows you to be notified when an event of this type occurs. Set up the alerts that go well as soon as you use this thermostat. See (#notifications) - -## Reactive temperature sensor (on mains) -- security_delay_min: 15min -- security_min_on_percent: 0.7 (70% - we go to the ``safety`` preset if the radiator was heating more than 70% of the time) -- security_default_on_percent: 0.25 (25% - in preset ``safety``, we keep a heating background 25% of the time) - -## My preset configuration -This is just an example of how I use the preset. It up to you to adapt to your configuration but it can be useful to understand how it works. -``Frost``: 10 °C -``Eco``: 17 °C -``Comfort``: 19 °C -``Boost``: 20 °C - -When presence if off: -``Frost``: 10 °C -``Eco``: 16.5 °C -``Comfort``: 17 °C -``Boost``: 18 °C - -Motion detector in my office is set to use ``Boost`` when motion is detected and ``Eco`` if not. - -# Algorithm -This integration uses a proportional algorithm. A Proportional algorithm is useful to avoid the oscillation around the target temperature. This algorithm is based on a cycle which alternate heating and stop heating. The proportion of heating vs not heating is determined by the difference between the temperature and the target temperature. Bigger the difference is and bigger is the proportion of heating inside the cycle. - -This algorithm make the temperature converge and stop oscillating. - -## TPI algorithm -The TPI algorithm consist in the calculation at each cycle of a percentage of On state vs Off state for the heater using the target temperature, the current temperature in the room and the current external temperature. This algorithm is therefore only valid for Versatile Thermostats which regulate: `over_switch` and `over_valve`. - -The percentage is calculated with this formula: - - on_percent = coef_int * (target temperature - current temperature) + coef_ext * (target temperature - external temperature) - Then make 0 <= on_percent <= 1 - -Defaults values for coef_int and coef_ext are respectively: ``0.6`` and ``0.01``. Those defaults values are suitable for a standard well isolated room. - -To tune those coefficients keep in mind that: -1. **if target temperature is not reach** after stable situation, you have to augment the ``coef_ext`` (the ``on_percent`` is too low), -2. **if target temperature is exceeded** after stable situation, you have to decrease the ``coef_ext`` (the ``on_percent`` is too high), -3. **if reaching the target temperature is too slow**, you can increase the ``coef_int`` to give more power to the heater, -4. **if reaching the target temperature is too fast and some oscillations appears** around the target, you can decrease the ``coef_int`` to give less power to the heater - -In type `over_valve` the `on_percent` is reduced to a value between 0 and 100% and is used directly to control the opening of the valve. - -See some situations at [examples](#some-results). - -# Sensors - -With the thermostat are available sensors that allow you to view the alerts and the internal status of the thermostat. They are available in the entities of the device associated with the thermostat: - -![image](images/thermostat-sensors.png) - -In order, there are: -1. the main climate thermostat command entity, -2. the energy consumed by the thermostat (value which continuously increases), -3. the time of receipt of the last outside temperature, -4. the time of receipt of the last indoor temperature, -5. the average power of the device over the cycle (for TPIs only), -6. the time spent in the off state in the cycle (TPI only), -7. the time spent in the on state in the cycle (TPI only), -8. load shedding status, -9. cycle power percentage (TPI only), -10. presence status (if presence management is configured), -11. safety status, -12. opening status (if opening management is configured), -13. motion status (if motion management is configured), -14. the valve opening percentage (for the `over_valve` type) - -To color the sensors, add these lines and customize them as needed, in your configuration.yaml: - -``` -frontend: - themes: - versatile_thermostat_theme: - state-binary_sensor-safety-on-color: "#FF0B0B" - state-binary_sensor-power-on-color: "#FF0B0B" - state-binary_sensor-window-on-color: "rgb(156, 39, 176)" - state-binary_sensor-motion-on-color: "rgb(156, 39, 176)" - state-binary_sensor-presence-on-color: "lightgreen" - state-binary_sensor-running-on-color: "orange" -``` -and choose the ```versatile_thermostat_theme``` theme in the panel configuration. You will get something that will look like this: - -![image](images/colored-thermostat-sensors.png) - -# Services - -This custom implementation offers some specific services to facilitate integration with others Home Assisstant components. - -## Force the presence / occupancy -This service allows you to force the presence status independantly of the presence sensor. This can be useful if you want to manage the presence through a service and not through a sensor. For example, you could use your alarm to force the absence when it is switched on. - -The code to call this service is the following: -``` -service: versatile_thermostat.set_presence -data: - presence: "off" -target: - entity_id: climate.my_thermostat -``` - -## Change the temperature of presets -This services is useful if you want to dynamically change the preset temperature. Instead of changing preset, some use-case need to change the temperature of the preset. So you can keep the Scheduler unchanged to manage the preset and adjust the temperature of the preset. -If the changed preset is currently selectionned, the modification of the target temperature is immediate and will be taken into account at the next calculation cycle. - -You can change the one or the both temperature (when present or when absent) of each preset. - -Use the following code the set the temperature of the preset: -``` -service: versatile_thermostat.set_preset_temperature -data: - preset: boost - temperature: 17.8 - temperature_away: 15 -target: - entity_id: climate.my_thermostat -``` - -Or to change the preset of the AC mode, add _ac to the preset name like this: -``` -service: versatile_thermostat.set_preset_temperature -data: - preset: boost_ac - temperature: 25 - temperature_away: 30 -target: - entity_id: climate.my_thermostat -``` - -> ![Tip](images/tips.png) _*Notes*_ - - after a restart the preset are resetted to the configured temperature. If you want your change to be permanent you should modify the temperature preset into the confguration of the integration. - -## Change safety settings -This service is used to dynamically modify the safety parameters described here [Advanced configuration](#configuration-avanced). -If the thermostat is in ``safety`` mode the new settings are applied immediately. - -To change the safety settings use the following code: -``` -service : thermostat_polyvalent.set_security -data: - min_on_percent: "0.5" - default_on_percent: "0.1" - delay_min: 60 -target: - entity_id : climate.my_thermostat -``` -## ByPass Window Check -This service is used to bypass the window check implemented to stop thermostat when an open window is detected. -When set to ``true`` window event won't have any effect on the thermostat, when set back to ``false`` it will make sure to disable the thermostat if window is still open. - -To change the bypass setting use the following code: -``` -service : thermostat_polyvalent.set_window_bypass -data: - window_bypass: true -target: - entity_id : climate.my_thermostat -``` - -# Events -Significant thermostat events are notified via the message bus. -The notified events are as follows: - -- ``versatile_thermostat_security_event``: a thermostat enters or exits the ``safety`` preset -- ``versatile_thermostat_power_event``: a thermostat enters or exits the ``power`` preset -- ``versatile_thermostat_temperature_event``: one or both temperature measurements of a thermostat have not been updated for more than ``security_delay_min`` minutes -- ``versatile_thermostat_hvac_mode_event``: the thermostat is on or off. This event is also broadcast when the thermostat starts up -- ``versatile_thermostat_preset_event``: a new preset is selected on the thermostat. This event is also broadcast when the thermostat starts up -- ``versatile_thermostat_central_boiler_event``: an event indicating a change in the state of the central boiler. - -If you have followed correctly, when a thermostat goes into safety mode, 3 events are triggered: -1. ``versatile_thermostat_temperature_event`` to indicate that a thermometer has become unresponsive, -2. ``versatile_thermostat_preset_event`` to indicate the switch to ```safety``` preset, -3. ``versatile_thermostat_hvac_mode_event`` to indicate the possible extinction of the thermostat - -Each event carries the key values ​​of the event (temperatures, current preset, current power, etc.) as well as the states of the thermostat. - -You can very easily capture its events in an automation, for example to notify users. - -# Custom attributes - -To tune the algorithm you have access to all context seen and calculted by the thermostat through dedicated attributes. You can see (and use) those attributes in the "Development tools / states" HMI of HA. Enter your thermostat and you will see something like this: -![image](images/dev-tools-climate.png) - -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 safety mode when temperature sensor are off | -| ``security_min_on_percent`` | The minimal on_percent below which safety preset won't be trigger | -| ``security_default_on_percent`` | The on_percent used when thermostat is in ``safety`` | -| ``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 safety 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) | -| ``is_controlled_by_central_mode`` | True if the VTherm can be centrally controlled | -| ``last_central_mode`` | The last central mode used (None if the VTherm is not centrally controlled) | -| ``is_used_by_central_boiler`` | Indicate if the VTherm can control the central boiler | -| ``auto_start_stop_enable`` | Indicate if the VTherm is allowed to do auto start and stop | -| ``auto_start_stop_level`` | Give the level of auto start/stop | -| ``hvac_off_reason`` | Give the reason of stop of the VTherm. This could be Window, Auto-start/stop or Manual | +> Added a new regulation method for `over_climate` type Versatile Thermostats. This method, called 'Direct control of valve', allows direct control of a TRV valve and optionally a calibration offset for the internal thermometer of your TRV. This new method has been tested with Sonoff TRVZB and generalized for other TRV types whose valves can be directly controlled via `number` entities. +> +> More information [here](documentation/fr/over-climate.md) and [here](documentation/fr/self-regulation.md). +> +> * **Documentation overhaul**: +> +> With all the developments since the start of the integration, the documentation needed a major reorganization, which has been completed in this version. All feedback on this new organization is welcome. + +# 🍻 Thanks for the beers [buymecoffee](https://www.buymeacoffee.com/jmcollin78) 🍻 +A big thank you to all my beer sponsors for their donations and encouragements. It means a lot to me and motivates me to keep going! If this integration has saved you money, buy me a beer in return; I would greatly appreciate it! + +# Glossary + + _VTherm_: Versatile Thermostat as referred to in this document + + _TRV_: Thermostatic Radiator Valve equipped with a valve. The valve opens or closes to allow hot water to pass. + + _AC_: Air Conditioning. An AC device cools instead of heats. Temperatures are reversed: Eco is warmer than Comfort, which is warmer than Boost. The algorithms take this information into account. + +# Documentation + +The documentation is now divided into several pages for easier reading and searching: +1. [Introduction](documentation/fr/presentation.md), +2. [Choosing a VTherm type](documentation/fr/creation.md), +3. [Basic attributes](documentation/fr/base-attributes.md) +3. [Configuring a VTherm on a `switch`](documentation/fr/over-switch.md) +3. [Configuring a VTherm on a `climate`](documentation/fr/over-climate.md) +3. [Configuring a VTherm on a valve](documentation/fr/over-valve.md) +4. [Presets](documentation/fr/feature-presets.md) +5. [Window management](documentation/fr/feature-window.md) +6. [Presence management](documentation/fr/feature-presence.md) +7. [Motion management](documentation/fr/feature-motion.md) +8. [Power management](documentation/fr/feature-power.md) +9. [Auto start and stop](documentation/fr/feature-auto-start-stop.md) +10. [Centralized control of all VTherms](documentation/fr/feature-central-mode.md) +11. [Central heating control](documentation/fr/feature-central-boiler.md) +12. [Advanced aspects, security mode](documentation/fr/feature-advanced.md) +12. [Self-regulation](documentation/fr/self-regulation.md) +13. [Tuning examples](documentation/fr/tuning-examples.md) +14. [Algorithms](documentation/fr/algorithms.md) +15. [Reference documentation](documentation/fr/reference.md) +16. [Tuning examples](documentation/fr/tuning-examples.md) +17. [Troubleshooting](documentation/fr/troubleshooting.md) +18. [Release notes](documentation/fr/releases.md) # Some results -**Convergence of temperature to target configured by preset:** -![image](images/results-1.png) +**Temperature stability around the target configured by preset:** -[Cycle of on/off calculated by the integration:](https://) -![image](images/results-2.png) +![image](documentation/fr/images/results-1.png) -**Coef_int too high (oscillations around the target)** -![image](images/results-3.png) +On/off cycles calculated by the integration (`over_climate`): +![image](documentation/fr/images/results-2.png) -**Algorithm calculation evolution** -![image](images/results-4.png) -See the code of this component [[below](#even-better-with-apex-chart-to-tune-your-thermostat)] +**Regulation with an `over_switch`** -**Fine tuned thermostat** -Thank's [impuR_Shozz](https://forum.hacf.fr/u/impur_shozz/summary) ! -We can see stability around the target temperature (consigne) and when at target the on_percent (puissance) is near 0.3 which seems a very good value. +![image](documentation/fr/images/results-4.png) -![image](images/results-fine-tuned.png) +See the component's code [[below](#even-better-with-apex-chart-to-tune-your-thermostat)] -Enjoy ! +**Strong regulation in `over_climate`** -# Even better +![image](documentation/fr/images/results-over-climate-1.png) -## Much better with the Veersatile Thermostat UI Card -A special card for the Versatile Thermostat has been developed (based on the Better Thermostat). It is available here [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card) and offers a modern vision of all the VTherm statuses: +**Regulation with direct valve control in `over_climate`** -![image](https://github.com/jmcollin78/versatile-thermostat-ui-card/blob/master/assets/1.png?raw=true) +![image](documentation/fr/images/results-over-climate-2.png) -## Even Better with Scheduler Component ! - -In order to enjoy the full power of Versatile Thermostat, I invite you to use it with https://github.com/nielsfaber/scheduler-component -Indeed, the scheduler component porpose a management of the climate base on the preset modes. This feature has limited interest with the generic thermostat but it becomes highly powerfull with Awesome thermostat : - -Starting here, I assume you have installed Awesome Thermostat and Scheduler Component. - -In Scheduler, add a schedule : - -![image](https://user-images.githubusercontent.com/1717155/119146454-ee1a9d80-ba4a-11eb-80ae-3074c3511830.png) - -Choose "climate" group, choose one (or multiple) entity/ies, select "MAKE SCHEME" and click next : -(it is possible to choose "SET PRESET", but I prefer to use "MAKE SCHEME") - -![image](https://user-images.githubusercontent.com/1717155/119147210-aa746380-ba4b-11eb-8def-479a741c0ba7.png) - -Set your mode scheme and save : - - -![image](https://user-images.githubusercontent.com/1717155/119147784-2f5f7d00-ba4c-11eb-9de4-5e62ff5e71a8.png) - -In this example I set ECO mode during the night and the day when nobody's at home BOOST in the morning and COMFORT in the evening. - - -I hope this example helps you, don't hesitate to give me your feedbacks ! - -## Even-even better with custom:simple-thermostat front integration -The ``custom:simple-thermostat`` [here](https://github.com/nervetattoo/simple-thermostat) is a great integration which allow some customisation which fits well with this thermostat. -You can have something like that very easily ![image](images/simple-thermostat.png) -Example configuration: - -``` - type: custom:simple-thermostat - entity: climate.thermostat_sam2 - layout: - step: row - label: - temperature: T° - state: Etat - hide: - state: false - control: - hvac: - _name: Mode - preset: - _name: Preset - sensors: - - entity: sensor.total_puissance_radiateur_sam2 - icon: mdi:lightning-bolt-outline - header: - toggle: - entity: input_boolean.etat_ouverture_porte_sam - name: Porte sam -``` -You can customize this component using the HACS card-mod component to adjust the alert colors. Example for displaying safety and load shedding alerts in red: - -``` - card_mod: - style: | - {% if is_state('binary_sensor.thermostat_chambre_security_state', 'on') %} - ha-card .body .sensor-heading ha-icon[icon="mdi:alert-outline"] { - color: red; - } - {% endif %} - {% if is_state('binary_sensor.thermostat_chambre_overpowering_state', 'on') %} - ha-card .body .sensor-heading ha-icon[icon="mdi:flash"] { - color: red; - } - {% endif %} -``` -![image](images/custom-css-thermostat.png) - -## Even better with Plotly to tune your Thermostat -You can get curve like presented in [some results](#some-results) with kind of Plotly configuration only using the custom attributes of the thermostat described [here](#custom-attributes): - -Replace values in [[ ]] by yours. -``` -- type: custom:plotly-graph - entities: - - entity: '[[climate]]' - attribute: temperature - yaxis: y1 - name: Consigne - - entity: '[[climate]]' - attribute: current_temperature - yaxis: y1 - name: T° - - entity: '[[climate]]' - attribute: ema_temp - yaxis: y1 - name: Ema - - entity: '[[climate]]' - attribute: on_percent - yaxis: y2 - name: Power percent - fill: tozeroy - fillcolor: rgba(200, 10, 10, 0.3) - line: - color: rgba(200, 10, 10, 0.9) - - entity: '[[slope]]' - name: Slope - fill: tozeroy - yaxis: y9 - fillcolor: rgba(100, 100, 100, 0.3) - line: - color: rgba(100, 100, 100, 0.9) - hours_to_show: 4 - refresh_interval: 10 - height: 800 - config: - scrollZoom: true - layout: - margin: - r: 50 - legend: - x: 0 - 'y': 1.2 - groupclick: togglegroup - title: - side: top right - yaxis: - visible: true - position: 0 - yaxis2: - visible: true - position: 0 - fixedrange: true - range: - - 0 - - 1 - yaxis9: - visible: true - fixedrange: false - range: - - -2 - - 2 - position: 1 - xaxis: - rangeselector: - 'y': 1.1 - x: 0.7 - buttons: - - count: 1 - step: hour - - count: 12 - step: hour - - count: 1 - step: day - - count: 7 - step: day -``` - -Example of graph obtained with Plotly : - -![image](images/plotly-curves.png) - - -## And always better and better with the NOTIFIER daemon app to notify events -This automation uses the excellent App Daemon named NOTIFIER developed by Horizon Domotique that you will find in demonstration [here](https://www.youtube.com/watch?v=chJylIK0ASo&ab_channel=HorizonDomotique) and the code is [here](https://github.com/jlpouffier/home-assistant-config/blob/master/appdaemon/apps/notifier.py). It allows you to notify the users of the accommodation when one of the events affecting safety occurs on one of the Versatile Thermostats. - -This is a great example of using the notifications described here [notification](#notifications). - -``` -alias: Surveillance Mode Sécurité chauffage -description: Envoi une notification si un thermostat passe en mode sécurité ou power -trigger: - - platform: event - event_type: versatile_thermostat_security_event - id: versatile_thermostat_security_event - - platform: event - event_type: versatile_thermostat_power_event - id: versatile_thermostat_power_event - - platform: event - event_type: versatile_thermostat_temperature_event - id: versatile_thermostat_temperature_event -condition: [] -action: - - choose: - - conditions: - - condition: trigger - id: versatile_thermostat_security_event - sequence: - - event: NOTIFIER - event_data: - action: send_to_jmc - title: >- - Radiateur {{ trigger.event.data.name }} - {{ - trigger.event.data.type }} Sécurité - message: >- - Le radiateur {{ trigger.event.data.name }} est passé en {{ - trigger.event.data.type }} sécurité car le thermomètre ne répond - plus.\n{{ trigger.event.data }} - callback: - - title: Stopper chauffage - event: stopper_chauffage - image_url: /media/local/alerte-securite.jpg - click_url: /lovelace-chauffage/4 - icon: mdi:radiator-off - tag: radiateur_security_alerte - persistent: true - - conditions: - - condition: trigger - id: versatile_thermostat_power_event - sequence: - - event: NOTIFIER - event_data: - action: send_to_jmc - title: >- - Radiateur {{ trigger.event.data.name }} - {{ - trigger.event.data.type }} Délestage - message: >- - Le radiateur {{ trigger.event.data.name }} est passé en {{ - trigger.event.data.type }} délestage car la puissance max est - dépassée.\n{{ trigger.event.data }} - callback: - - title: Stopper chauffage - event: stopper_chauffage - image_url: /media/local/alerte-delestage.jpg - click_url: /lovelace-chauffage/4 - icon: mdi:radiator-off - tag: radiateur_power_alerte - persistent: true - - conditions: - - condition: trigger - id: versatile_thermostat_temperature_event - sequence: - - event: NOTIFIER - event_data: - action: send_to_jmc - title: >- - Le thermomètre du radiateur {{ trigger.event.data.name }} ne - répond plus - message: >- - Le thermomètre du radiateur {{ trigger.event.data.name }} ne - répond plus depuis longtemps.\n{{ trigger.event.data }} - image_url: /media/local/thermometre-alerte.jpg - click_url: /lovelace-chauffage/4 - icon: mdi:radiator-disabled - tag: radiateur_thermometre_alerte - persistent: true -mode: queued -max: 30 -``` +Enjoy! # Contributions are welcome! -If you want to contribute to this please read the [Contribution guidelines](CONTRIBUTING.md) - -# Troubleshooting - -
-Using a Heatzy - -## Using a Heatzy - -The use of a Heatzy is possible provided you use a virtual switch on this model: -``` -- platform:template - switches: - bathroom_heating: - unique_id: heating_bathroom - friendly_name: Bathroom heating - value_template: "{{ is_state_attr('climate.bathroom', 'preset_mode', 'comfort') }}" - icon_template: >- - {% if is_state_attr('climate.bathroom', 'preset_mode', 'comfort') %} - mdi:radiator - {% elif is_state_attr('climate.bathroom', 'preset_mode', 'away') %} - mdi:snowflake - {% else %} - mdi:radiator-disabled - {% endif %} - turn on: - service: climate.set_preset_mode - entity_id: climate.bathroom - data: - preset_mode: "comfort" - turn_off: - service: climate.set_preset_mode - entity_id: climate.bathroom - data: - preset_mode: "eco" -``` -Thanks to @gael for this example. - -
- -
-Using a Heatsink with a Pilot Wire - -## Using a Heatsink with a Pilot Wire -As with the Heatzy above you can use a virtual switch which will change the preset of your radiator depending on the ignition state of the VTherm. -Example : -``` -- platform:template - switches: - radiator_soan: - friendly_name: radiator_soan_inv - value_template: "{{ is_state('switch.radiateur_soan', 'off') }}" - turn on: - service: switch.turn_off - data: - entity_id: switch.radiateur_soan - turn_off: - service: switch.turn_on - data: - entity_id: switch.radiateur_soan - icon_template: "{% if is_state('switch.radiateur_soan', 'on') %}mdi:radiator-disabled{% else %}mdi:radiator{% endif %}" -``` -
- -
-Using a heater with a Nodon - -## Using a heater with a Nodon module -As for the heatzy module above you can use a virtual switch which will change the preset of your heater depending of the state of the VTherm. -Example : -``` -- platform: template - switches: - chauffage_chb_parents: - unique_id: chauffage_chb_parents - friendly_name: Chauffage chambre parents - value_template: "{{ is_state('select.fp_chb_parents_pilot_wire_mode', 'comfort') }}" - icon_template: >- - {% if is_state('select.fp_chb_parents_pilot_wire_mode', 'comfort') %} - mdi:radiator - {% elif is_state('select.fp_chb_parents_pilot_wire_mode', 'frost_protection') %} - mdi:snowflake - {% else %} - mdi:radiator-disabled - {% endif %} - turn_on: - service: select.select_option - target: - entity_id: select.fp_chb_parents_pilot_wire_mode - data: - option: comfort - turn_off: - service: select.select_option - target: - entity_id: select.fp_chb_parents_pilot_wire_mode - data: - option: eco -``` - -
- -
-Only the first radiator heats - -## Only the first radiator heats - -In `over_switch` mode if several radiators are configured for the same VTherm, switching on will be done sequentially to smooth out consumption peaks as much as possible. -This is completely normal and desired. It is described here: [For a thermostat of type ``thermostat_over_switch```](#for-a-thermostat-of-type-thermostat_over_switch)v -
- -
-The radiator heats up even though the setpoint temperature is exceeded or does not heat up even though the room temperature is well below the setpoint - -## The radiator heats up even though the setpoint temperature is exceeded or does not heat up even though the room temperature is well below the setpoint - -### Type `over_switch` or `over_valve` -With a VTherm of type `over_switch` or `over_valve`, this fault just shows that the parameters of the TPI algorithm are incorrectly set. See [TPI Algorithm](#tpi-algorithm) to optimize the settings. - -### Type `over_climate` -With an `over_climate` type VTherm, the regulation is done by the underlying `climate` directly and VTherm simply transmits the instructions to it. So if the radiator heats up when the set temperature is exceeded, it is certainly because its internal temperature measurement is biased. This happens very often with TRVs and reversible air conditioning units which have an internal temperature sensor, or too close to the heating element (therefore too cold in winter). - -Example of discussion around these topics: [#348](https://github.com/jmcollin78/versatile_thermostat/issues/348), [#316](https://github.com/jmcollin78/versatile_thermostat/issues/316), [#312](https://github.com/jmcollin78/versatile_thermostat/discussions/312 ), [#278](https://github.com/jmcollin78/versatile_thermostat/discussions/278) - -To get around this, VTherm is equipped with a function called self-regulation which allows the instruction sent to the underlying to be adapted until the target temperature is respected. This function compensates for the measurement bias of internal thermometers. If the bias is important the regulation must be important. See [Self-regulation](#self-regulation) to configure self-regulation. -
- -
-Adjust window opening detection parameters in auto mode - -## Adjust window opening detection parameters in auto mode - -If you cannot set the opening detection function in auto mode (see [auto](#auto-mode)), you can try modifying the parameters of the temperature smoothing algorithm. -In fact, automatic opening detection is based on the calculation of the temperature slope. To avoid artifacts due to an imprecise temperature sensor, this slope is calculated on a smoothed temperature with a smoothing algorithm called Exponential Moving Average. -This algorithm has 3 parameters: -1. `lifecycle_sec`: the duration in seconds taken into account for smoothing. The stronger it is, the greater the smoothing will be, but the longer there will be a detection delay, -2. `max_alpha`: if two temperature measurements are separated in time, the second will have a very strong weight. The parameter makes it possible to limit the weight of a measurement which arrives well after the previous one. This value must be between 0 and 1. The lower it is, the less distant values are taken into account. The default is 0.5. This means that when a new temperature value will never weigh more than half of the moving average, -3. `precision`: the number of digits after the decimal point retained for calculating the moving average. - -To change its parameters, you must modify the `configuration.yaml` file and add the following section (the values are the default values): -``` -versatile_thermostat: - short_ema_params: - max_alpha: 0.5 - halflife_sec: 300 - accuracy: 2 -``` - -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? - -## Why does my Versatile Thermostat go into Safety? - -Safety mode is possible on all VTherm's type. 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 safety mode? -The first symptom is an abnormally low temperature with a slow and regular heating time in each cycle. -Example: - -[safety mode](images/security-mode-symptome1.png) - -If you installed the [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card), the VTherm in question will have this shape: - -[safety mode UI Card](images/security-mode-symptome2.png) - -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 safety 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 safety 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 safety 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 safety mode will be removed and the previous values of preset, target temperature and mode will be restored. -
- -
-Using a group of people as a presence sensor - -## Using a group of people as a presence sensor - -Unfortunately, groups of people are not recognized as presence sensors. We cannot therefore use them directly in VTherm. -The workaround is to create a binary_sensor template with the following code: - -`template.yaml` file: -``` -- binary_sensor: - - name: occupied_house - unique_id: occupied_house - state: "{{is_state('person.person1', 'home') or is_state('person.person2', 'home') or is_state('input_boolean.force_presence', 'on')}}" - device_class: occupancy -``` - -You will note in this example, the use of an input_boolean named force_presence which allows you to force the sensor to `True` and thus force the VTherm which uses it with active presence. This allows, for example, to force pre-heating of the home when leaving work, or when a person not natively recognized in HA is present. - -`configuration.yaml` file: -``` -... -template: !include templates.yaml -... -``` -
- -
-Enable Versatile Thermostat logs - -## Enable Versatile Thermostat logs -Sometimes you will need to enable logs to refine the analyses. To do this, edit the `logger.yaml` file of your configuration and configure the logs as follows: -``` -default: xxxx -logs: - custom_components.versatile_thermostat: info -``` -You must reload the yaml configuration (Dev Tools / Yaml / All Yaml configuration) or restart Home Assistant for this change to take effect. -
- +If you wish to contribute, please read the [contribution guidelines](CONTRIBUTING.md). *** @@ -1694,4 +103,4 @@ You must reload the yaml configuration (Dev Tools / Yaml / All Yaml configuratio [license-shield]: https://img.shields.io/github/license/jmcollin78/versatile_thermostat.svg?style=for-the-badge [maintenance-shield]: https://img.shields.io/badge/maintainer-Joakim%20Sørensen%20%40ludeeus-blue.svg?style=for-the-badge [releases-shield]: https://img.shields.io/github/release/jmcollin78/versatile_thermostat.svg?style=for-the-badge -[releases]: https://github.com/jmcollin78/versatile_thermostat/releases +[releases]: https://github.com/jmcollin78/versatile_thermostat/releases \ No newline at end of file diff --git a/documentation/en/additions.md b/documentation/en/additions.md new file mode 100644 index 0000000..0c9e7a4 --- /dev/null +++ b/documentation/en/additions.md @@ -0,0 +1,211 @@ +# Some Essential Add-Ons + +- [Some Essential Add-Ons](#some-essential-add-ons) + - [the Versatile Thermostat UI Card](#the-versatile-thermostat-ui-card) + - [the Scheduler Component!](#the-scheduler-component) + - [Regulation curves with Plotly to Fine-Tune Your Thermostat](#regulation-curves-with-plotly-to-fine-tune-your-thermostat) + - [Event notification with the AppDaemon NOTIFIER](#event-notification-with-the-appdaemon-notifier) + +## the Versatile Thermostat UI Card +A dedicated card for the Versatile Thermostat has been developed (based on Better Thermostat). It is available here: [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card) and offers a modern view of all the VTherm statuses: + +![image](https://github.com/jmcollin78/versatile-thermostat-ui-card/blob/master/assets/1.png?raw=true) + +## the Scheduler Component! + +To make the most out of the Versatile Thermostat, I recommend using it with the [Scheduler Component](https://github.com/nielsfaber/scheduler-component). The scheduler component provides climate scheduling based on predefined modes. While this feature is somewhat limited with the generic thermostat, it becomes very powerful when paired with the Versatile Thermostat. + +Assuming you have installed both the Versatile Thermostat and the Scheduler Component, here’s an example: + +In Scheduler, add a schedule: + +![image](https://user-images.githubusercontent.com/1717155/119146454-ee1a9d80-ba4a-11eb-80ae-3074c3511830.png) + +Choose the "Climate" group, select one (or more) entity, pick "MAKE SCHEME," and click next: +(You can also choose "SET PRESET," but I prefer "MAKE SCHEME.") + +![image](https://user-images.githubusercontent.com/1717155/119147210-aa746380-ba4b-11eb-8def-479a741c0ba7.png) + +Define your mode scheme and save: + +![image](https://user-images.githubusercontent.com/1717155/119147784-2f5f7d00-ba4c-11eb-9de4-5e62ff5e71a8.png) + +In this example, I set ECO mode during the night and when no one is home during the day, BOOST in the morning, and COMFORT in the evening. + +I hope this example helps; feel free to share your feedback! + +## Regulation curves with Plotly to Fine-Tune Your Thermostat +You can obtain a curve similar to the one shown in [some results](#some-results) using a Plotly graph configuration by leveraging the thermostat's custom attributes described [here](#custom-attributes): + +Replace the values between `[[ ]]` with your own. +
+ +```yaml +- type: custom:plotly-graph + entities: + - entity: '[[climate]]' + attribute: temperature + yaxis: y1 + name: Consigne + - entity: '[[climate]]' + attribute: current_temperature + yaxis: y1 + name: T° + - entity: '[[climate]]' + attribute: ema_temp + yaxis: y1 + name: Ema + - entity: '[[climate]]' + attribute: on_percent + yaxis: y2 + name: Power percent + fill: tozeroy + fillcolor: rgba(200, 10, 10, 0.3) + line: + color: rgba(200, 10, 10, 0.9) + - entity: '[[slope]]' + name: Slope + fill: tozeroy + yaxis: y9 + fillcolor: rgba(100, 100, 100, 0.3) + line: + color: rgba(100, 100, 100, 0.9) + hours_to_show: 4 + refresh_interval: 10 + height: 800 + config: + scrollZoom: true + layout: + margin: + r: 50 + legend: + x: 0 + 'y': 1.2 + groupclick: togglegroup + title: + side: top right + yaxis: + visible: true + position: 0 + yaxis2: + visible: true + position: 0 + fixedrange: true + range: + - 0 + - 1 + yaxis9: + visible: true + fixedrange: false + range: + - -2 + - 2 + position: 1 + xaxis: + rangeselector: + 'y': 1.1 + x: 0.7 + buttons: + - count: 1 + step: hour + - count: 12 + step: hour + - count: 1 + step: day + - count: 7 + step: day +``` +
+ +Example of curves obtained with Plotly: + +![image](images/plotly-curves.png) + +## Event notification with the AppDaemon NOTIFIER +This automation leverages the excellent AppDaemon app named NOTIFIER, developed by Horizon Domotique, demonstrated [here](https://www.youtube.com/watch?v=chJylIK0ASo&ab_channel=HorizonDomotique), and the code is available [here](https://github.com/jlpouffier/home-assistant-config/blob/master/appdaemon/apps/notifier.py). It allows users to be notified of security-related events occurring on any Versatile Thermostat. + +This is a great example of using the notifications described here: [notification](#notifications). +
+ +```yaml +alias: Surveillance Mode Sécurité chauffage +description: Envoi une notification si un thermostat passe en mode sécurité ou power +trigger: + - platform: event + event_type: versatile_thermostat_security_event + id: versatile_thermostat_security_event + - platform: event + event_type: versatile_thermostat_power_event + id: versatile_thermostat_power_event + - platform: event + event_type: versatile_thermostat_temperature_event + id: versatile_thermostat_temperature_event +condition: [] +action: + - choose: + - conditions: + - condition: trigger + id: versatile_thermostat_security_event + sequence: + - event: NOTIFIER + event_data: + action: send_to_jmc + title: >- + Radiateur {{ trigger.event.data.name }} - {{ + trigger.event.data.type }} Sécurité + message: >- + Le radiateur {{ trigger.event.data.name }} est passé en {{ + trigger.event.data.type }} sécurité car le thermomètre ne répond + plus.\n{{ trigger.event.data }} + callback: + - title: Stopper chauffage + event: stopper_chauffage + image_url: /media/local/alerte-securite.jpg + click_url: /lovelace-chauffage/4 + icon: mdi:radiator-off + tag: radiateur_security_alerte + persistent: true + - conditions: + - condition: trigger + id: versatile_thermostat_power_event + sequence: + - event: NOTIFIER + event_data: + action: send_to_jmc + title: >- + Radiateur {{ trigger.event.data.name }} - {{ + trigger.event.data.type }} Délestage + message: >- + Le radiateur {{ trigger.event.data.name }} est passé en {{ + trigger.event.data.type }} délestage car la puissance max est + dépassée.\n{{ trigger.event.data }} + callback: + - title: Stopper chauffage + event: stopper_chauffage + image_url: /media/local/alerte-delestage.jpg + click_url: /lovelace-chauffage/4 + icon: mdi:radiator-off + tag: radiateur_power_alerte + persistent: true + - conditions: + - condition: trigger + id: versatile_thermostat_temperature_event + sequence: + - event: NOTIFIER + event_data: + action: send_to_jmc + title: >- + Le thermomètre du radiateur {{ trigger.event.data.name }} ne + répond plus + message: >- + Le thermomètre du radiateur {{ trigger.event.data.name }} ne + répond plus depuis longtemps.\n{{ trigger.event.data }} + image_url: /media/local/thermometre-alerte.jpg + click_url: /lovelace-chauffage/4 + icon: mdi:radiator-disabled + tag: radiateur_thermometre_alerte + persistent: true +mode: queued +max: 30 +``` +
\ No newline at end of file diff --git a/documentation/en/algorithms.md b/documentation/en/algorithms.md new file mode 100644 index 0000000..515560a --- /dev/null +++ b/documentation/en/algorithms.md @@ -0,0 +1,67 @@ +# The Different Algorithms Used + +- [The Different Algorithms Used](#the-different-algorithms-used) + - [The TPI Algorithm](#the-tpi-algorithm) + - [Configuring the TPI Algorithm Coefficients](#configuring-the-tpi-algorithm-coefficients) + - [Principle](#principle) + - [The Self-Regulation Algorithm (Without Valve Control)](#the-self-regulation-algorithm-without-valve-control) + - [The Auto-Start/Stop Function Algorithm](#the-auto-startstop-function-algorithm) + +## The TPI Algorithm + +### Configuring the TPI Algorithm Coefficients + +If you have selected a thermostat of type `over_switch`, `over_valve`, or `over_climate` with self-regulation in `Direct Valve Control` mode and choose the "TPI" option in the menu, you will land on this page: + +![image](images/config-tpi.png) + +You need to provide: +1. the coefficient `coef_int` for the TPI algorithm, +2. the coefficient `coef_ext` for the TPI algorithm. + +### Principle + +The TPI algorithm calculates the On vs Off percentage for the radiator at each cycle, using the target temperature, the current room temperature, and the current outdoor temperature. This algorithm is only applicable for Versatile Thermostats operating in `over_switch` and `over_valve` modes. + +The percentage is calculated using this formula: + + on_percent = coef_int * (target_temperature - current_temperature) + coef_ext * (target_temperature - outdoor_temperature) + Then, the algorithm ensures that 0 <= on_percent <= 1. + +The default values for `coef_int` and `coef_ext` are `0.6` and `0.01`, respectively. These default values are suitable for a standard well-insulated room. + +When adjusting these coefficients, keep the following in mind: +1. **If the target temperature is not reached** after stabilization, increase `coef_ext` (the `on_percent` is too low), +2. **If the target temperature is exceeded** after stabilization, decrease `coef_ext` (the `on_percent` is too high), +3. **If reaching the target temperature is too slow**, increase `coef_int` to provide more power to the heater, +4. **If reaching the target temperature is too fast and oscillations occur** around the target, decrease `coef_int` to provide less power to the radiator. + +In `over_valve` mode, the `on_percent` value is converted to a percentage (0 to 100%) and directly controls the valve's opening level. + +## The Self-Regulation Algorithm (Without Valve Control) + +The self-regulation algorithm can be summarized as follows: + +1. Initialize the target temperature as the VTherm setpoint, +2. If self-regulation is enabled: + 1. Calculate the regulated temperature (valid for a VTherm), + 2. Use this temperature as the target, +3. For each underlying device of the VTherm: + 1. If "Use Internal Temperature" is checked: + 1. Calculate the compensation (`trv_internal_temp - room_temp`), + 2. Add the offset to the target temperature, + 3. Send the target temperature (= regulated_temp + (internal_temp - room_temp)) to the underlying device. + +## The Auto-Start/Stop Function Algorithm + +The algorithm used in the auto-start/stop function operates as follows: +1. If "Enable Auto-Start/Stop" is off, stop here. +2. If VTherm is on and in Heating mode, when `error_accumulated` < `-error_threshold` -> turn off and save HVAC mode. +3. If VTherm is on and in Cooling mode, when `error_accumulated` > `error_threshold` -> turn off and save HVAC mode. +4. If VTherm is off and the saved HVAC mode is Heating, and `current_temperature + slope * dt <= target_temperature`, turn on and set the HVAC mode to the saved mode. +5. If VTherm is off and the saved HVAC mode is Cooling, and `current_temperature + slope * dt >= target_temperature`, turn on and set the HVAC mode to the saved mode. +6. `error_threshold` is set to `10 (° * min)` for slow detection, `5` for medium, and `2` for fast. + +`dt` is set to `30 min` for slow, `15 min` for medium, and `7 min` for fast detection levels. + +The function is detailed [here](https://github.com/jmcollin78/versatile_thermostat/issues/585). \ No newline at end of file diff --git a/documentation/en/base-attributes.md b/documentation/en/base-attributes.md new file mode 100644 index 0000000..d63ccf4 --- /dev/null +++ b/documentation/en/base-attributes.md @@ -0,0 +1,45 @@ +- [Choosing Basic Attributes](#choosing-basic-attributes) +- [Choosing the features to Use](#choosing-the-features-to-use) + +# Choosing Basic Attributes + +Select the "Main Attributes" menu. + +![image](images/config-main.png) + +Provide the mandatory main attributes. These attributes are common to all VTherms: +1. A name (this will be both the integration's name and the `climate` entity name), +2. An entity ID of a temperature sensor that provides the room temperature where the radiator is installed, +3. An optional sensor entity providing the last seen date and time of the sensor (`last_seen`). If available, specify it here. It helps prevent safety shutdowns when the temperature is stable, and the sensor stops reporting for a long time (see [here](troubleshooting.md#why-does-my-versatile-thermostat-go-into-safety-mode)), +4. A cycle duration in minutes. At each cycle: + 1. For `over_switch`: VTherm will turn the radiator on/off, modulating the proportion of time it is on, + 2. For `over_valve`: VTherm will calculate a new valve opening level and send it if it has changed, + 3. For `over_climate`: The cycle performs basic controls and recalculates the self-regulation coefficients. The cycle may result in a new setpoint sent to underlying devices or a valve opening adjustment in the case of a controllable TRV. +5. The equipment's power, which will activate power and energy consumption sensors for the device. If multiple devices are linked to the same VTherm, specify the total maximum power of all devices here, +6. The option to use additional parameters from centralized configuration: + 1. Outdoor temperature sensor, + 2. Minimum/maximum temperature and temperature step size, +7. The option to control the thermostat centrally. See [centralized control](#centralized-control), +8. A checkbox if this VTherm is used to trigger a central boiler. + +> ![Tip](images/tips.png) _*Notes*_ +> 1. With the `over_switch` and `over_valve` types, calculations are performed at each cycle. In case of changing conditions, you will need to wait for the next cycle to see a change. For this reason, the cycle should not be too long. **5 minutes is a good value**, but it should be adjusted to your heating type. The greater the inertia, the longer the cycle should be. See [Tuning examples](tuning-examples.md). +> 2. If the cycle is too short, the radiator may never reach the target temperature. For example, with a storage heater, it will be unnecessarily activated. + +# Choosing the features to Use + +Select the "Features" menu. + +![image](images/config-features.png) + +Choose the features you want to use for this VTherm: +1. **Opening detection** (doors, windows) stops heating when an opening is detected. (see [managing openings](feature-window.md)), +2. **Motion detection**: VTherm can adjust the target temperature when motion is detected in the room. (see [motion detection](feature-motion.md)), +3. **Power management**: VTherm can stop a device if the power consumption in your home exceeds a threshold. (see [load-shedding management](feature-power.md)), +4. **Presence detection**: If you have a sensor indicating presence or absence in your home, you can use it to change the target temperature. See [presence management](feature-presence.md). Note the difference between this function and motion detection: presence is typically used at the home level, while motion detection is more room-specific. +5. **Automatic start/stop**: For `over_climate` VTherms only. This function stops a device when VTherm detects it will not be needed for a while. It uses the temperature curve to predict when the device will be needed again and turns it back on at that time. See [automatic start/stop management](feature-auto-start-stop.md). + +> ![Tip](images/tips.png) _*Notes*_ +> 1. The list of available functions adapts to your VTherm type. +> 2. When you enable a function, a new menu entry is added to configure it. +> 3. You cannot validate the creation of a VTherm if all parameters for all enabled functions have not been configured. \ No newline at end of file diff --git a/documentation/en/creation.md b/documentation/en/creation.md new file mode 100644 index 0000000..7925450 --- /dev/null +++ b/documentation/en/creation.md @@ -0,0 +1,71 @@ +# Choosing a VTherm + +- [Choosing a VTherm](#choosing-a-vtherm) + - [Creating a New Versatile Thermostat](#creating-a-new-versatile-thermostat) +- [Choosing a VTherm Type](#choosing-a-vtherm-type) + - [Centralized configuration](#centralized-configuration) + - [VTherm over a switch](#vtherm-over-a-switch) + - [VTherm over another thermostat](#vtherm-over-another-thermostat) + - [VTherm over a valve](#vtherm-over-a-valve) +- [Making the right choice](#making-the-right-choice) +- [Reference Article](#reference-article) + +> ![Tip](images/tips.png) _*Notes*_ +> +> There are three ways to work with VTherms: +> 1. Each Versatile Thermostat is fully configured independently. Choose this option if you do not want any centralized configuration or management. +> 2. Some aspects are configured centrally. For example, you can define the minimum/maximum temperatures, open window detection parameters, etc., at a single central instance. For each VTherm you configure, you can then choose to use the central configuration or override it with custom parameters. +> 3. In addition to centralized configuration, all VTherms can be controlled by a single `select` entity called `central_mode`. This feature allows you to stop/start/set frost protection/etc. for all VTherms at once. For each VTherm, you can specify if it is affected by this `central_mode`. + +## Creating a New Versatile Thermostat + +Click on "Add Integration" on the integration page (or click 'Add device' in the integration page) + +![image](images/add-an-integration.png) + +then: + +![image](images/config-main0.png) + +The configuration can be modified via the same interface. Simply select the thermostat to modify, press "Configure," and you will be able to change some parameters or settings. + +Follow the configuration steps by selecting the menu option to configure. + +# Choosing a VTherm Type + +## Centralized configuration +This option allows you to configure certain repetitive aspects for all VTherms at once, such as: +1. Parameters for different algorithms (TPI, open window detection, motion detection, power sensors for your home, presence detection). These parameters apply across all VTherms. You only need to enter them once in `Centralized Configuration`. This configuration does not create a VTherm itself but centralizes parameters that would be tedious to re-enter for each VTherm. Note that you can override these parameters on individual VTherms to specialize them if needed. +2. Configuration for controlling a central heating system, +3. Certain advanced parameters, such as safety settings. + +## VTherm over a switch +This VTherm type controls a switch that turns a radiator on or off. The switch can be a physical switch directly controlling a radiator (often electric) or a virtual switch that can perform any action when turned on or off. The latter type can, for example, control pilot wire switches or DIY pilot wire solutions with diodes. VTherm modulates the proportion of time the radiator is on (`on_percent`) to achieve the desired temperature. If it is cold, it turns on more frequently (up to 100%); if it is warm, it reduces the on time. + +The underlying entities for this type are `switches` or `input_booleans`. + +## VTherm over another thermostat +When your device is controlled by a `climate` entity in Home Assistant and you only have access to this, you should use this VTherm type. In this case, VTherm simply adjusts the target temperature of the underlying `climate` entity. + +This type also includes advanced self-regulation features to adjust the setpoint sent to the underlying device, helping to achieve the target temperature faster and mitigating poor internal regulation. For example, if the device's internal thermometer is too close to the heating element, it may incorrectly assume the room is warm while the setpoint is far from being achieved in other areas. + +Since version 6.8, this VTherm type can also regulate directly by controlling the valve. Ideal for controllable TRVs, this type is recommended if you have such devices. + +The underlying entities for this VTherm type are exclusively `climate`. + +## VTherm over a valve +If the only entity available to regulate your radiator's temperature is a `number` entity, you should use the `over_valve` type. VTherm adjusts the valve opening based on the difference between the target temperature and the actual room temperature (and the outdoor temperature, if available). + +This type can be used for TRVs without an associated `climate` entity or other DIY solutions exposing a `number` entity. + +# Making the right choice +> ![Tip](images/tips.png) _*How to Choose the Type*_ +> Choosing the correct type is crucial. It cannot be changed later via the configuration interface. To make the right choice, consider the following questions: +> 1. **What type of equipment will I control?** Follow this order of preference: +> 1. If you have a controllable thermostatic valve (TRV) in Home Assistant through a `number` entity (e.g., a Shelly TRV), choose the `over_valve` type. This is the most direct type and ensures the best regulation. +> 2. If you have an electric radiator (with or without a pilot wire) controlled by a `switch` entity to turn it on/off, then the `over_switch` type is preferable. Regulation will be managed by the Versatile Thermostat based on the temperature measured by your thermometer at its placement location. +> 3. In all other cases, use the `over_climate` mode. You retain your original `climate` entity, and the Versatile Thermostat "only" controls the on/off state and target temperature of your original thermostat. Regulation is handled by your original thermostat in this case. This mode is particularly suited for all-in-one reversible air conditioning systems exposed as a `climate` entity in Home Assistant. Advanced self-regulation can achieve the setpoint faster by forcing the setpoint or directly controlling the valve when possible. +> 2. **What type of regulation do I want?** If the controlled equipment has its own built-in regulation mechanism (e.g., HVAC systems, certain TRVs) and it works well, choose `over_climate`. For TRVs with a controllable valve in Home Assistant, the `over_climate` type with `Direct Valve Control` self-regulation is the best choice. + +# Reference Article +For more information on these concepts, refer to this article (in French): https://www.hacf.fr/optimisation-versatile-thermostat/#optimiser-vos-vtherm \ No newline at end of file diff --git a/documentation/en/feature-advanced.md b/documentation/en/feature-advanced.md new file mode 100644 index 0000000..158a18b --- /dev/null +++ b/documentation/en/feature-advanced.md @@ -0,0 +1,53 @@ +# Advanced Configuration + +- [Advanced Configuration](#advanced-configuration) + - [Advanced Settings](#advanced-settings) + - [Minimum Activation Delay](#minimum-activation-delay) + - [Safety Mode](#safety-mode) + +These settings refine the thermostat's operation, particularly the safety mechanism for a _VTherm_. Missing temperature sensors (room or outdoor) can pose a risk to your home. For instance, if the temperature sensor gets stuck at 10°C, the `over_climate` or `over_valve` _VTherm_ types will command maximum heating of the underlying devices, which could lead to room overheating or even property damage, at worst resulting in a fire hazard. + +To prevent this, _VTherm_ ensures that thermometers report values regularly. If they don't, the _VTherm_ switches to a special mode called Safety Mode. This mode ensures minimal heating to prevent the opposite risk: a completely unheated home in the middle of winter, for example. + +The challenge lies in that some thermometers—especially battery-operated ones—only send temperature updates when the value changes. It is entirely possible to receive no temperature updates for hours without the thermometer failing. The parameters below allow fine-tuning of the thresholds for activating Safety Mode. + +If your thermometer has a `last seen` attribute indicating the last contact time, you can specify it in the _VTherm_'s main attributes to greatly reduce false Safety Mode activations. See [configuration](base-attributes.md#choosing-base-attributes) and [troubleshooting](troubleshooting.md#why-does-my-versatile-thermostat-switch-to-safety-mode). + +For `over_climate` _VTherms_, which self-regulate, Safety Mode is disabled. In this case, there is no danger, only the risk of an incorrect temperature. + +## Advanced Settings + +The advanced configuration form looks like this: + +![image](images/config-advanced.png) + +### Minimum Activation Delay + +The first delay (`minimal_activation_delay_sec`) in seconds is the minimum acceptable delay to turn on the heating. If the calculated activation time is shorter than this value, the heating remains off. This parameter only applies to _VTherm_ with cyclic triggering `over_switch`. If the activation time is too short, rapid switching will not allow the device to heat up properly. + +### Safety Mode + +The second delay (`security_delay_min`) is the maximum time between two temperature measurements before the _VTherm_ switches to Safety Mode. + +The third parameter (`security_min_on_percent`) is the minimum `on_percent` below which Safety Mode will not be activated. This setting prevents activating Safety Mode if the controlled radiator does not heat sufficiently. In this case, there is no physical risk to the home, only the risk of overheating or underheating. +Setting this parameter to `0.00` will trigger Safety Mode regardless of the last heating setting, whereas `1.00` will never trigger Safety Mode (effectively disabling the feature). This can be useful to adapt the safety mechanism to your specific needs. + +The fourth parameter (`security_default_on_percent`) defines the `on_percent` used when the thermostat switches to `security` mode. Setting it to `0` will turn off the thermostat in Safety Mode, while setting it to a value like `0.2` (20%) ensures some heating remains, avoiding a completely frozen home in case of a thermometer failure. + +It is possible to disable Safety Mode triggered by missing data from the outdoor thermometer. Since the outdoor thermometer usually has a minor impact on regulation (depending on your configuration), it might not be critical if it's unavailable. To do this, add the following lines to your `configuration.yaml`: + +```yaml +versatile_thermostat: +... + safety_mode: + check_outdoor_sensor: false +``` + +By default, the outdoor thermometer can trigger Safety Mode if it stops sending data. Remember that Home Assistant must be restarted for these changes to take effect. This setting applies to all _VTherms_ sharing the outdoor thermometer. + +> ![Tip](images/tips.png) _*Notes*_ +> 1. When the temperature sensor resumes reporting, the preset will be restored to its previous value. +> 2. Two temperature sources are required: the indoor and outdoor temperatures. Both must report values, or the thermostat will switch to "security" preset. +> 3. An action is available to adjust the three safety parameters. This can help adapt Safety Mode to your needs. +> 4. For normal use, `security_default_on_percent` should be lower than `security_min_on_percent`. +> 5. If you use the Versatile Thermostat UI card (see [here](additions.md#better-with-the-versatile-thermostat-ui-card)), a _VTherm_ in Safety Mode is indicated by a gray overlay showing the faulty thermometer and the time since its last value update: ![safety mode](images/safety-mode-icon.png). \ No newline at end of file diff --git a/documentation/en/feature-auto-start-stop.md b/documentation/en/feature-auto-start-stop.md new file mode 100644 index 0000000..05197f8 --- /dev/null +++ b/documentation/en/feature-auto-start-stop.md @@ -0,0 +1,39 @@ +# Auto-start / Auto-stop + +- [Auto-start / Auto-stop](#auto-start--auto-stop) + - [Configure Auto-start/stop](#configure-auto-startstop) + - [Usage](#usage) + +This feature allows _VTherm_ to stop an appliance that doesn't need to be on and restart it when conditions require it. This function includes three settings that control how quickly the appliance is stopped and restarted. +Exclusively reserved for _VTherm_ of type `over_climate`, it applies to the following use case: +1. Your appliance is permanently powered on and consumes electricity even when heating (or cooling) is not needed. This is often the case with heat pumps (_PAC_) that consume power even in standby mode. +2. The temperature conditions are such that heating (or cooling) is not needed for a long period: the setpoint is higher (or lower) than the room temperature. +3. The temperature rises (or falls), remains stable, or falls (or rises) slowly. + +In such cases, it is preferable to ask the appliance to turn off to avoid unnecessary power consumption in standby mode. + +## Configure Auto-start/stop + +To use this feature, you need to: +1. Add the `With auto-start and stop` function in the 'Functions' menu. +2. Set the detection level in the 'Auto-start/stop' option that appears when the function is activated. Choose the detection level between 'Slow', 'Medium', and 'Fast'. With the 'Fast' setting, stops and restarts will occur more frequently. + +![image](images/config-auto-start-stop.png) + +The 'Slow' setting allows about 30 minutes between a stop and a restart, +The 'Medium' setting sets the threshold to about 15 minutes, and the 'Fast' setting puts it at 7 minutes. + +Note that these are not absolute settings since the algorithm takes into account the slope of the room temperature curve to respond accordingly. It is still possible that a restart occurs shortly after a stop if the temperature drops significantly. + +## Usage + +Once the function is configured, you will now have a new `switch` type entity that allows you to enable or disable auto-start/stop without modifying the configuration. This entity is available on the _VTherm_ device and is named `switch._enable_auto_start_stop`. + +![image](images/enable-auto-start-stop-entity.png) + +Check the box to allow auto-start and auto-stop, and leave it unchecked to disable the feature. + +> ![Tip](images/tips.png) _*Notes*_ +> 1. The detection algorithm is described [here](algorithms.md#auto-startstop-algorithm). +> 2. Some appliances (boilers, underfloor heating, _PAC_, etc.) may not like being started/stopped too frequently. If that's the case, it might be better to disable the function when you know the appliance will be used. For example, I disable this feature during the day when presence is detected because I know my _PAC_ will turn on often. I enable auto-start/stop at night or when no one is home, as the setpoint is lowered and it rarely triggers. +> 3. If you use the Versatile Thermostat UI card (see [here](additions.md#better-with-the-versatile-thermostat-ui-card)), a checkbox is directly visible on the card to disable auto-start/stop, and a _VTherm_ stopped by auto-start/stop is indicated by the icon: ![auto-start/stop icon](images/auto-start-stop-icon.png). \ No newline at end of file diff --git a/documentation/en/feature-central-boiler.md b/documentation/en/feature-central-boiler.md new file mode 100644 index 0000000..4b887d2 --- /dev/null +++ b/documentation/en/feature-central-boiler.md @@ -0,0 +1,123 @@ +# Le contrôle d'une chaudière centrale# Controlling a Central Boiler + +- [Le contrôle d'une chaudière centrale# Controlling a Central Boiler](#le-contrôle-dune-chaudière-centrale-controlling-a-central-boiler) + - [Principle](#principle) + - [Configuration](#configuration) + - [How to Find the Right Action?](#how-to-find-the-right-action) + - [Events](#events) + - [Warning](#warning) + +You can control a centralized boiler. As long as it's possible to trigger or stop the boiler from Home Assistant, Versatile Thermostat will be able to control it directly. + +## Principle +The basic principle is as follows: +1. A new entity of type `binary_sensor`, named by default `binary_sensor.central_boiler`, is added. +2. In the configuration of the _VTherms_, you specify whether the _VTherm_ should control the boiler. In a heterogeneous installation, some _VTherms_ should control the boiler, and others should not. Therefore, you need to indicate in each _VTherm_ configuration whether it controls the boiler. +3. The `binary_sensor.central_boiler` listens for state changes in the equipment of the _VTherms_ marked as controlling the boiler. +4. When the number of devices controlled by the _VTherm_ requesting heating (i.e., when its `hvac_action` changes to `Heating`) exceeds a configurable threshold, the `binary_sensor.central_boiler` turns `on`, and **if an activation service has been configured, that service is called**. +5. If the number of devices requesting heating drops below the threshold, the `binary_sensor.central_boiler` turns `off`, and **if a deactivation service has been configured, that service is called**. +6. You have access to two entities: + - A `number` type entity, named by default `number.boiler_activation_threshold`, which gives the activation threshold. This threshold is the number of devices (radiators) requesting heating. + - A `sensor` type entity, named by default `sensor.nb_device_active_for_boiler`, which shows the number of devices requesting heating. For example, a _VTherm_ with 4 valves, 3 of which request heating, will make this sensor show 3. Only the devices from _VTherms_ marked to control the central boiler are counted. + +You therefore always have the information to manage and adjust the triggering of the boiler. + +All these entities are linked to the central configuration service: + +![Boiler Control Entities](images/entitites-central-boiler.png) + +## Configuration +To configure this feature, you need a centralized configuration (see [Configuration](#configuration)) and check the 'Add Central Boiler' box: + +![Add a Central Boiler](images/config-central-boiler-1.png) + +On the next page, you can provide the configuration for the actions (e.g., services) to be called when the boiler is turned on/off: + +![Add a Central Boiler](images/config-central-boiler-2.png) + +The actions (e.g., services) are configured as described on the page: +1. The general format is `entity_id/service_id[/attribute:value]` (where `/attribute:value` is optional). +2. `entity_id` is the name of the entity controlling the boiler in the form `domain.entity_name`. For example: `switch.chaudiere` for a boiler controlled by a switch, or `climate.chaudière` for a boiler controlled by a thermostat, or any other entity that allows boiler control (there is no limitation). You can also toggle inputs (`helpers`) such as `input_boolean` or `input_number`. +3. `service_id` is the name of the service to be called in the form `domain.service_name`. For example: `switch.turn_on`, `switch.turn_off`, `climate.set_temperature`, `climate.set_hvac_mode` are valid examples. +4. Some services require a parameter. This could be the 'HVAC Mode' for `climate.set_hvac_mode` or the target temperature for `climate.set_temperature`. This parameter should be configured in the format `attribute:value` at the end of the string. + +Examples (to adjust to your case): +- `climate.chaudiere/climate.set_hvac_mode/hvac_mode:heat`: to turn the boiler thermostat on in heating mode. +- `climate.chaudiere/climate.set_hvac_mode/hvac_mode:off`: to turn off the boiler thermostat. +- `switch.pompe_chaudiere/switch.turn_on`: to turn on the switch powering the boiler pump. +- `switch.pompe_chaudiere/switch.turn_off`: to turn off the switch powering the boiler pump. +- ... + +### How to Find the Right Action? +To find the correct action to use, it's best to go to "Developer Tools / Services", search for the action to call, the entity to control, and any required parameters. +Click 'Call Service'. If your boiler turns on, you have the correct configuration. Then switch to YAML mode and copy the parameters. + +Example: + +In "Developer Tools / Actions": + +![Service Configuration](images/dev-tools-turnon-boiler-1.png) + +In YAML mode: + +![Service Configuration](images/dev-tools-turnon-boiler-2.png) + +The service to configure will then be: `climate.sonoff/climate.set_hvac_mode/hvac_mode:heat` (note the removal of spaces in `hvac_mode:heat`). + +Do the same for the off service, and you’re ready to go. + +## Events + +Each successful boiler activation or deactivation sends an event from Versatile Thermostat. This can be captured by an automation, for example, to notify you of the change. +The events look like this: + +An activation event: +```yaml +event_type: versatile_thermostat_central_boiler_event +data: + central_boiler: true + entity_id: binary_sensor.central_boiler + name: Central boiler + state_attributes: null +origin: LOCAL +time_fired: "2024-01-14T11:33:52.342026+00:00" +context: + id: 01HM3VZRJP3WYYWPNSDAFARW1T + parent_id: null + user_id: null +```yaml +event_type: versatile_thermostat_central_boiler_event +data: + central_boiler: true + entity_id: binary_sensor.central_boiler + name: Central boiler + state_attributes: null +origin: LOCAL +time_fired: "2024-01-14T11:33:52.342026+00:00" +context: + id: 01HM3VZRJP3WYYWPNSDAFARW1T + parent_id: null + user_id: null +``` + +Un évènement d'extinction : +```yaml +event_type: versatile_thermostat_central_boiler_event +data: + central_boiler: false + entity_id: binary_sensor.central_boiler + name: Central boiler + state_attributes: null +origin: LOCAL +time_fired: "2024-01-14T11:43:52.342026+00:00" +context: + id: 01HM3VZRJP3WYYWPNSDAFBRW1T + parent_id: null + user_id: null +``` + +## Warning + +> ![Astuce](images/tips.png) _*Notes*_ +> +> Software or home automation control of a central boiler may pose risks to its proper operation. Before using these functions, ensure that your boiler has proper safety features and that they are functioning correctly. For example, turning on a boiler with all valves closed can create excessive pressure. diff --git a/documentation/en/feature-central-mode.md b/documentation/en/feature-central-mode.md new file mode 100644 index 0000000..11ecf8c --- /dev/null +++ b/documentation/en/feature-central-mode.md @@ -0,0 +1,31 @@ +# Centralized Control + +- [Centralized Control](#centralized-control) + - [Configuration of Centralized Control](#configuration-of-centralized-control) + - [Usage](#usage) + +This feature allows you to control all your _VTherms_ from a single control point. +A typical use case is when you leave for an extended period and want to set all your _VTherms_ to frost protection, and when you return, you want to set them back to their initial state. + +Centralized control is done from a special _VTherm_ called centralized configuration. See [here](creation.md#centralized-configuration) for more information. + +## Configuration of Centralized Control + +If you have set up a centralized configuration, you will have a new entity named `select.central_mode` that allows you to control all _VTherms_ with a single action. + +![central_mode](images/central-mode.png) + +This entity appears as a list of choices containing the following options: +1. `Auto`: the 'normal' mode where each _VTherm_ operates autonomously, +2. `Stopped`: all _VTherms_ are turned off (`hvac_off`), +3. `Heat only`: all _VTherms_ are set to heating mode if supported, otherwise they are stopped, +4. `Cool only`: all _VTherms_ are set to cooling mode if supported, otherwise they are stopped, +5. `Frost protection`: all _VTherms_ are set to frost protection mode if supported, otherwise they are stopped. + +## Usage + +For a _VTherm_ to be controllable centrally, its configuration attribute named `use_central_mode` must be true. This attribute is available in the configuration page `Main Attributes`. + +![central_mode](images/use-central-mode.png) + +This means you can control all _VTherms_ (those explicitly designated) with a single control. \ No newline at end of file diff --git a/documentation/en/feature-motion.md b/documentation/en/feature-motion.md new file mode 100644 index 0000000..5e0188b --- /dev/null +++ b/documentation/en/feature-motion.md @@ -0,0 +1,40 @@ +# Motion or Activity Detection + +- [Motion or Activity Detection](#motion-or-activity-detection) + - [Configure Activity Mode or Motion Detection](#configure-activity-mode-or-motion-detection) + - [Usage](#usage) + +This feature allows you to change presets when motion is detected in a room. If you don't want to heat your office when the room is occupied and only when the room is occupied, you need a motion (or presence) sensor in the room and configure this feature. + +This function is often confused with the presence feature. They are complementary but not interchangeable. The 'motion' function is local to a room equipped with a motion sensor, while the 'presence' function is designed to be global to the entire home. + +## Configure Activity Mode or Motion Detection + +If you have chosen the `With motion detection` feature: + +![image](images/config-motion.png) + +What we need: +- a **motion sensor**. Entity ID of a motion sensor. The states of the motion sensor must be "on" (motion detected) or "off" (no motion detected), +- a **detection delay** (in seconds) defining how long we wait for confirmation of the motion before considering the motion. This parameter can be **greater than your motion sensor's delay**, otherwise, the detection will happen with every motion detected by the sensor, +- an **inactivity delay** (in seconds) defining how long we wait for confirmation of no motion before no longer considering the motion, +- a **"motion" preset**. We will use the temperature of this preset when activity is detected, +- a **"no motion" preset**. We will use the temperature of this second preset when no activity is detected. + +## Usage + +To tell a _VTherm_ that it should listen to the motion sensor, you must set it to the special 'Activity' preset. If you have installed the Versatile Thermostat UI card (see [here](additions.md#much-better-with-the-versatile-thermostat-ui-card)), this preset is displayed as follows: ![activity preset](images/activity-preset-icon.png). + +You can then, upon request, set a _VTherm_ to motion detection mode. + +The behavior will be as follows: +- we have a room with a thermostat set to activity mode, the "motion" mode chosen is comfort (21.5°C), the "no motion" mode chosen is Eco (18.5°C), and the motion delay is 30 seconds on detection and 5 minutes on the end of detection. +- the room has been empty for a while (no activity detected), the setpoint temperature in this room is 18.5°. +- someone enters the room, and activity is detected if the motion is present for at least 30 seconds. The temperature then goes up to 21.5°. +- if the motion is present for less than 30 seconds (quick passage), the temperature stays at 18.5°. +- imagine the temperature has gone up to 21.5°, when the person leaves the room, after 5 minutes the temperature is returned to 18.5°. +- if the person returns before the 5 minutes, the temperature stays at 21.5°. + +> ![Tip](images/tips.png) _*Notes*_ +> 1. As with other presets, `Activity` will only be offered if it is correctly configured. In other words, all 4 configuration keys must be set. +> 2. If you are using the Versatile Thermostat UI card (see [here](additions.md#much-better-with-the-versatile-thermostat-ui-card)), motion detection is represented as follows: ![motion](images/motion-detection-icon.png). \ No newline at end of file diff --git a/documentation/en/feature-power.md b/documentation/en/feature-power.md new file mode 100644 index 0000000..44b71aa --- /dev/null +++ b/documentation/en/feature-power.md @@ -0,0 +1,46 @@ +# Power Management - Load Shedding + +- [Power Management - Load Shedding](#power-management---load-shedding) + - [Configure Power Management](#configure-power-management) + +This feature allows you to regulate the electricity consumption of your heaters. Known as load shedding, this feature enables you to limit the electrical consumption of your heating device if overcapacity conditions are detected. +You will need a **sensor for the total instantaneous power consumption** of your home, as well as a **sensor for the maximum allowed power**. + +The behavior of this feature is basic: +1. when the _VTherm_ is about to turn on a device, +2. it compares the last known value of the power consumption sensor with the last value of the maximum allowed power. If there is a remaining margin greater than or equal to the declared power of the _VTherm_'s devices, then the _VTherm_ and its devices will be turned on. Otherwise, they will remain off until the next cycle. + +WARNING: This very basic operation **is not a safety function** but more of an optimization feature to manage consumption at the cost of heating performance. Overloads may occur depending on the frequency of updates from your consumption sensors, and the actual power used by your devices. Therefore, you must always maintain a safety margin. + +Typical use case: +1. you have an electricity meter limited to 11 kW, +2. you occasionally charge an electric vehicle at 5 kW, +3. that leaves 6 kW for everything else, including heating, +4. you have 1 kW of other equipment running, +5. you have declared a sensor (`input_number`) for the maximum allowed power at 9 kW (= 11 kW - the reserve for other devices - margin) + +If the vehicle is charging, the total power consumed is 6 kW (5+1), and a _VTherm_ will only turn on if its declared power is 3 kW max (9 kW - 6 kW). +If the vehicle is charging and another _VTherm_ of 2 kW is running, the total power consumed is 8 kW (5+1+2), and a _VTherm_ will only turn on if its declared power is 1 kW max (9 kW - 8 kW). Otherwise, it will wait until the next cycle. + +If the vehicle is not charging, the total power consumed is 1 kW, and a _VTherm_ will only turn on if its declared power is 8 kW max (9 kW - 1 kW). + +## Configure Power Management + +If you have chosen the `With power detection` feature, configure it as follows: + +![image](images/config-power.png) + +1. the entity ID of the **instantaneous power consumption sensor** for your home, +2. the entity ID of the **maximum allowed power sensor**, +3. the temperature to apply if load shedding is activated. + +Note that all power values must have the same units (kW or W, for example). +Having a **maximum allowed power sensor** allows you to adjust the maximum power over time using a scheduler or automation. + +> ![Tip](images/tips.png) _*Notes*_ +> +> 1. In case of load shedding, the radiator is set to the preset named `power`. This is a hidden preset, and you cannot select it manually. +> 2. Always keep a margin, as the maximum power may briefly be exceeded while waiting for the next cycle calculation, or due to unregulated equipment. +> 3. If you don't want to use this feature, uncheck it in the 'Functions' menu. +> 4. If a _VTherm_ controls multiple devices, the **electrical consumption of your heating** must match the sum of the powers. +> 5. If you are using the Versatile Thermostat UI card (see [here](additions.md#much-better-with-the-versatile-thermostat-ui-card)), load shedding is represented as follows: ![load shedding](images/power-exceeded-icon.png). \ No newline at end of file diff --git a/documentation/en/feature-presence.md b/documentation/en/feature-presence.md new file mode 100644 index 0000000..673e9c8 --- /dev/null +++ b/documentation/en/feature-presence.md @@ -0,0 +1,24 @@ +# Presence / Absence Management + +- [Presence / Absence Management](#presence--absence-management) + - [Configure Presence (or Absence)](#configure-presence-or-absence) + +## Configure Presence (or Absence) + +If this feature is selected, it allows you to dynamically adjust the preset temperatures of the thermostat when presence (or absence) is detected. To do this, you need to configure the temperature to be used for each preset when presence is disabled. When the presence sensor turns off, these temperatures will be applied. When it turns back on, the "normal" temperature configured for the preset will be used. See [preset management](feature-presets.md). + +To configure presence, fill out this form: + +![image](images/config-presence.png) + +For this, you simply need to configure an **occupancy sensor** whose state must be 'on' or 'home' if someone is present, or 'off' or 'not_home' otherwise. + +Temperatures are configured in the entities of the device corresponding to your _VTherm_ (Settings/Integration/Versatile Thermostat/the vtherm). + +WARNING: People groups do not work as a presence sensor. They are not recognized as a presence sensor. You need to use a template as described here [Using a People Group as a Presence Sensor](troubleshooting.md#using-a-people-group-as-a-presence-sensor). + +> ![Tip](images/tips.png) _*Notes*_ +> +> 1. The temperature change is immediate and is reflected on the front panel. The calculation will consider the new target temperature at the next cycle calculation. +> 2. You can use the direct person.xxxx sensor or a Home Assistant sensor group. The presence sensor handles the states `on` or `home` as present and `off` or `not_home` as absent. +> 3. To pre-heat your home when everyone is absent, you can add an `input_boolean` entity to your people group. If you set this `input_boolean` to 'On', the presence sensor will be forced to 'On' and the presets with presence will be used. You can also set this `input_boolean` to 'On' via an automation, for example, when you leave a zone to start preheating your home. \ No newline at end of file diff --git a/documentation/en/feature-presets.md b/documentation/en/feature-presets.md new file mode 100644 index 0000000..2962eb6 --- /dev/null +++ b/documentation/en/feature-presets.md @@ -0,0 +1,30 @@ +# Presets (Pre-configured Settings) + +- [Presets (Pre-configured Settings)](#presets-pre-configured-settings) + - [Configure Pre-configured Temperatures](#configure-pre-configured-temperatures) + +## Configure Pre-configured Temperatures + +The preset mode allows you to pre-configure the target temperature. Used in conjunction with Scheduler (see [scheduler](additions#the-scheduler-component)), you'll have a powerful and simple way to optimize the temperature relative to the electricity consumption in your home. The managed presets are as follows: + - **Eco**: the device is in energy-saving mode + - **Comfort**: the device is in comfort mode + - **Boost**: the device fully opens all valves + +If the AC mode is used, you can also configure temperatures when the equipment is in air conditioning mode. + +**None** is always added to the list of modes, as it is a way to not use presets but instead set a **manual temperature**. + +The presets are configured directly from the _VTherm_ entities or the central configuration if you're using centralized control. Upon creating the _VTherm_, you will have different entities that will allow you to set the temperatures for each preset: + +![presets](images/config-preset-temp.png). + +The list of entities varies depending on your feature choices: +1. If the 'presence detection' function is activated, you will have the presets with an "absence" version prefixed with _abs_. +2. If you have selected the _AC_ option, you will also have presets for 'air conditioning' prefixed with _clim_. + +> ![Tip](images/tips.png) _*Notes*_ +> +> 1. When you manually change the target temperature, the preset switches to None (no preset). +> 2. The standard preset `Away` is a hidden preset that cannot be directly selected. Versatile Thermostat uses presence management or motion detection to automatically and dynamically adjust the target temperature based on presence in the home or activity in the room. See [presence management](feature-presence.md). +> 3. If you're using load shedding management, you will see a hidden preset named `power`. The heating element's preset is set to "power" when overload conditions are met and load shedding is active for that heating element. See [power management](feature-power.md). +> 4. If you're using advanced configuration, you will see the preset set to `safety` if the temperature could not be retrieved after a certain delay. See [Safety Mode](feature-advanced.md#safety-mode). \ No newline at end of file diff --git a/documentation/en/feature-window.md b/documentation/en/feature-window.md new file mode 100644 index 0000000..8078cce --- /dev/null +++ b/documentation/en/feature-window.md @@ -0,0 +1,64 @@ +# Door/Window Open Detection + +- [Door/Window Open Detection](#doorwindow-open-detection) + - [Sensor Mode](#sensor-mode) + - [Auto Mode](#auto-mode) + +You must have selected the `With Open Detection` feature on the first page to reach this page. +Open detection can be done in two ways: +1. By using a sensor placed on the opening (sensor mode), +2. By detecting a sudden temperature drop (auto mode) + +## Sensor Mode +To switch to sensor mode, you need to provide an entity of type `binary_sensor` or `input_boolean`. +In this mode, you need to fill in the following information: + +![mode window sensor](images/config-window-sensor.png) + +1. A **delay in seconds** before any change. This allows you to open a window quickly without stopping the heating. +2. The action to take when the opening is detected as open. The possible actions are: + 1. _Turn off_: the _VTherm_ will be turned off. + 2. _Fan only_: heating or cooling will be turned off, but the equipment will continue to ventilate (for compatible equipment). + 3. _Frost protection_: the "Frost Protection" preset temperature will be selected on the _VTherm_ without changing the current preset (see notes below). + 4. _Eco_: the "Eco" preset temperature will be applied to the _VTherm_ without changing the current preset (see notes below). + +When the detector switches to open: +1. _VTherm_ waits for the specified delay. +2. If the window is still open after the delay, the _VTherm_ state (Heating / Cooling / ..., current preset, current target temperature) is saved and the action is performed. + +Similarly, when the detector switches to closed: +1. _VTherm_ waits for the specified delay. +2. If the window is still closed after the delay, the state before the window opening is restored. + +## Auto Mode +In auto mode, the configuration is as follows: + +![image](images/config-window-auto.png) + +1. A **delay in seconds** before any change. This allows you to open a window quickly without stopping the heating. +2. A detection threshold in degrees per hour. When the temperature drops beyond this threshold, the thermostat will turn off. The lower this value, the faster the detection (with a higher risk of false positives). +3. A threshold for ending detection in degrees per hour. When the temperature drop exceeds this value, the thermostat will return to the previous mode (mode and preset). +4. A maximum detection duration. Beyond this duration, the thermostat will return to its previous mode and preset even if the temperature continues to drop. +5. The action to take when the opening is detected as open. The actions are the same as in sensor mode described above. + +To adjust the thresholds, it is recommended to start with the reference values and adjust the detection thresholds. Some tests gave me the following values (for an office): +- Detection threshold: 3°C/hour +- No detection threshold: 0°C/hour +- Max duration: 30 min. + +A new sensor called "slope" has been added for all thermostats. It provides the slope of the temperature curve in °C/hour (or °K/hour). This slope is smoothed and filtered to avoid aberrant thermometer values that could interfere with the measurement. + +![image](images/temperature-slope.png) + +To adjust it properly, it is recommended to display both the temperature curve and the slope of the curve ("slope") on the same historical graph: + +![image](images/window-auto-tuning.png) + +> ![Tip](images/tips.png) _*Notes*_ +> +> 1. If you want to use **multiple door/window sensors** to automate your thermostat, simply create a group with the usual behavior (https://www.home-assistant.io/integrations/binary_sensor.group/) +> 2. If you don't have a door/window sensor in your room, simply leave the sensor entity ID empty. +> 3. **Only one mode is allowed**. You cannot configure a thermostat with both a sensor and auto detection. The two modes might contradict each other, so both modes cannot be active at the same time. +> 4. It is not recommended to use auto mode for equipment subjected to frequent and normal temperature variations (hallways, open areas, etc.). +> 5. To avoid interfering with your current preset settings, the actions _Frost protection_ and _Eco_ change the target temperature without changing the preset. So, you may notice a discrepancy between the selected preset and the setpoint. +> 6. If you use the Versatile Thermostat UI card (see [here](additions.md#even-better-with-the-versatile-thermostat-ui-card)), open detection is represented as follows: ![window](images/window-detection-icon.png). \ No newline at end of file diff --git a/documentation/en/images/activity-preset-icon.png b/documentation/en/images/activity-preset-icon.png new file mode 100644 index 0000000..06a5862 Binary files /dev/null and b/documentation/en/images/activity-preset-icon.png differ diff --git a/documentation/en/images/add-an-integration.png b/documentation/en/images/add-an-integration.png new file mode 100644 index 0000000..3003f69 Binary files /dev/null and b/documentation/en/images/add-an-integration.png differ diff --git a/documentation/en/images/auto-start-stop-icon.png b/documentation/en/images/auto-start-stop-icon.png new file mode 100644 index 0000000..0df9b56 Binary files /dev/null and b/documentation/en/images/auto-start-stop-icon.png differ diff --git a/documentation/en/images/central-mode.png b/documentation/en/images/central-mode.png new file mode 100644 index 0000000..06c0ef7 Binary files /dev/null and b/documentation/en/images/central-mode.png differ diff --git a/images/colored-thermostat-sensors.png b/documentation/en/images/colored-thermostat-sensors.png similarity index 100% rename from images/colored-thermostat-sensors.png rename to documentation/en/images/colored-thermostat-sensors.png diff --git a/documentation/en/images/config-advanced.png b/documentation/en/images/config-advanced.png new file mode 100644 index 0000000..e1bc37b Binary files /dev/null and b/documentation/en/images/config-advanced.png differ diff --git a/documentation/en/images/config-auto-start-stop.png b/documentation/en/images/config-auto-start-stop.png new file mode 100644 index 0000000..7bd1569 Binary files /dev/null and b/documentation/en/images/config-auto-start-stop.png differ diff --git a/documentation/en/images/config-central-boiler-1.png b/documentation/en/images/config-central-boiler-1.png new file mode 100644 index 0000000..c77af31 Binary files /dev/null and b/documentation/en/images/config-central-boiler-1.png differ diff --git a/documentation/en/images/config-central-boiler-2.png b/documentation/en/images/config-central-boiler-2.png new file mode 100644 index 0000000..914b561 Binary files /dev/null and b/documentation/en/images/config-central-boiler-2.png differ diff --git a/documentation/en/images/config-features.png b/documentation/en/images/config-features.png new file mode 100644 index 0000000..b9868ed Binary files /dev/null and b/documentation/en/images/config-features.png differ diff --git a/documentation/en/images/config-linked-entity.png b/documentation/en/images/config-linked-entity.png new file mode 100644 index 0000000..b1ee730 Binary files /dev/null and b/documentation/en/images/config-linked-entity.png differ diff --git a/documentation/en/images/config-linked-entity2.png b/documentation/en/images/config-linked-entity2.png new file mode 100644 index 0000000..37ca795 Binary files /dev/null and b/documentation/en/images/config-linked-entity2.png differ diff --git a/documentation/en/images/config-linked-entity3.png b/documentation/en/images/config-linked-entity3.png new file mode 100644 index 0000000..1755c09 Binary files /dev/null and b/documentation/en/images/config-linked-entity3.png differ diff --git a/documentation/en/images/config-main.png b/documentation/en/images/config-main.png new file mode 100644 index 0000000..8f47048 Binary files /dev/null and b/documentation/en/images/config-main.png differ diff --git a/documentation/en/images/config-main0.png b/documentation/en/images/config-main0.png new file mode 100644 index 0000000..b426c43 Binary files /dev/null and b/documentation/en/images/config-main0.png differ diff --git a/documentation/en/images/config-motion.png b/documentation/en/images/config-motion.png new file mode 100644 index 0000000..e3e0778 Binary files /dev/null and b/documentation/en/images/config-motion.png differ diff --git a/documentation/en/images/config-power.png b/documentation/en/images/config-power.png new file mode 100644 index 0000000..ee352a4 Binary files /dev/null and b/documentation/en/images/config-power.png differ diff --git a/documentation/en/images/config-presence.png b/documentation/en/images/config-presence.png new file mode 100644 index 0000000..5bb1073 Binary files /dev/null and b/documentation/en/images/config-presence.png differ diff --git a/documentation/en/images/config-preset-temp.png b/documentation/en/images/config-preset-temp.png new file mode 100644 index 0000000..7562e79 Binary files /dev/null and b/documentation/en/images/config-preset-temp.png differ diff --git a/documentation/en/images/config-self-regulation-valve-1.png b/documentation/en/images/config-self-regulation-valve-1.png new file mode 100644 index 0000000..8aa5a55 Binary files /dev/null and b/documentation/en/images/config-self-regulation-valve-1.png differ diff --git a/documentation/en/images/config-self-regulation-valve-2.png b/documentation/en/images/config-self-regulation-valve-2.png new file mode 100644 index 0000000..f37ca28 Binary files /dev/null and b/documentation/en/images/config-self-regulation-valve-2.png differ diff --git a/documentation/en/images/config-tpi.png b/documentation/en/images/config-tpi.png new file mode 100644 index 0000000..570ab04 Binary files /dev/null and b/documentation/en/images/config-tpi.png differ diff --git a/documentation/en/images/config-use-internal-temp.png b/documentation/en/images/config-use-internal-temp.png new file mode 100644 index 0000000..4843b0c Binary files /dev/null and b/documentation/en/images/config-use-internal-temp.png differ diff --git a/documentation/en/images/config-window-auto.png b/documentation/en/images/config-window-auto.png new file mode 100644 index 0000000..280a86a Binary files /dev/null and b/documentation/en/images/config-window-auto.png differ diff --git a/documentation/en/images/config-window-sensor.png b/documentation/en/images/config-window-sensor.png new file mode 100644 index 0000000..0d8d94f Binary files /dev/null and b/documentation/en/images/config-window-sensor.png differ diff --git a/images/dev-tools-climate.png b/documentation/en/images/dev-tools-climate.png similarity index 100% rename from images/dev-tools-climate.png rename to documentation/en/images/dev-tools-climate.png diff --git a/documentation/en/images/dev-tools-turnon-boiler-1.png b/documentation/en/images/dev-tools-turnon-boiler-1.png new file mode 100644 index 0000000..5597266 Binary files /dev/null and b/documentation/en/images/dev-tools-turnon-boiler-1.png differ diff --git a/documentation/en/images/dev-tools-turnon-boiler-2.png b/documentation/en/images/dev-tools-turnon-boiler-2.png new file mode 100644 index 0000000..3554b6e Binary files /dev/null and b/documentation/en/images/dev-tools-turnon-boiler-2.png differ diff --git a/documentation/en/images/enable-auto-start-stop-entity.png b/documentation/en/images/enable-auto-start-stop-entity.png new file mode 100644 index 0000000..dc91e2d Binary files /dev/null and b/documentation/en/images/enable-auto-start-stop-entity.png differ diff --git a/images/entitites-central-boiler.png b/documentation/en/images/entitites-central-boiler.png similarity index 100% rename from images/entitites-central-boiler.png rename to documentation/en/images/entitites-central-boiler.png diff --git a/documentation/en/images/motion-detection-icon.png b/documentation/en/images/motion-detection-icon.png new file mode 100644 index 0000000..255141c Binary files /dev/null and b/documentation/en/images/motion-detection-icon.png differ diff --git a/documentation/en/images/multi-switch-activation.png b/documentation/en/images/multi-switch-activation.png new file mode 100644 index 0000000..aaa603d Binary files /dev/null and b/documentation/en/images/multi-switch-activation.png differ diff --git a/documentation/en/images/my-tuning.png b/documentation/en/images/my-tuning.png new file mode 100644 index 0000000..0ed94af Binary files /dev/null and b/documentation/en/images/my-tuning.png differ diff --git a/images/new-icon.png b/documentation/en/images/new-icon.png similarity index 100% rename from images/new-icon.png rename to documentation/en/images/new-icon.png diff --git a/documentation/en/images/over-climate-schema.png b/documentation/en/images/over-climate-schema.png new file mode 100644 index 0000000..a2b7806 Binary files /dev/null and b/documentation/en/images/over-climate-schema.png differ diff --git a/documentation/en/images/over-switch-schema.png b/documentation/en/images/over-switch-schema.png new file mode 100644 index 0000000..fbdff6f Binary files /dev/null and b/documentation/en/images/over-switch-schema.png differ diff --git a/documentation/en/images/over-valve-schema.png b/documentation/en/images/over-valve-schema.png new file mode 100644 index 0000000..a78be10 Binary files /dev/null and b/documentation/en/images/over-valve-schema.png differ diff --git a/images/plotly-curves.png b/documentation/en/images/plotly-curves.png similarity index 100% rename from images/plotly-curves.png rename to documentation/en/images/plotly-curves.png diff --git a/documentation/en/images/power-exceeded-icon.png b/documentation/en/images/power-exceeded-icon.png new file mode 100644 index 0000000..0292438 Binary files /dev/null and b/documentation/en/images/power-exceeded-icon.png differ diff --git a/documentation/en/images/results-1.png b/documentation/en/images/results-1.png new file mode 100644 index 0000000..2825e44 Binary files /dev/null and b/documentation/en/images/results-1.png differ diff --git a/images/results-2.png b/documentation/en/images/results-2.png similarity index 100% rename from images/results-2.png rename to documentation/en/images/results-2.png diff --git a/images/results-3.png b/documentation/en/images/results-3.png similarity index 100% rename from images/results-3.png rename to documentation/en/images/results-3.png diff --git a/documentation/en/images/results-4.png b/documentation/en/images/results-4.png new file mode 100644 index 0000000..2b71014 Binary files /dev/null and b/documentation/en/images/results-4.png differ diff --git a/images/results-fine-tuned.png b/documentation/en/images/results-fine-tuned.png similarity index 100% rename from images/results-fine-tuned.png rename to documentation/en/images/results-fine-tuned.png diff --git a/documentation/en/images/results-over-climate-1.png b/documentation/en/images/results-over-climate-1.png new file mode 100644 index 0000000..31da17e Binary files /dev/null and b/documentation/en/images/results-over-climate-1.png differ diff --git a/documentation/en/images/results-over-climate-2.png b/documentation/en/images/results-over-climate-2.png new file mode 100644 index 0000000..265bee1 Binary files /dev/null and b/documentation/en/images/results-over-climate-2.png differ diff --git a/documentation/en/images/safety-mode-icon.png b/documentation/en/images/safety-mode-icon.png new file mode 100644 index 0000000..e0c80f7 Binary files /dev/null and b/documentation/en/images/safety-mode-icon.png differ diff --git a/images/security-mode-symptome1.png b/documentation/en/images/security-mode-symptome1.png similarity index 100% rename from images/security-mode-symptome1.png rename to documentation/en/images/security-mode-symptome1.png diff --git a/images/security-mode-symptome2.png b/documentation/en/images/security-mode-symptome2.png similarity index 100% rename from images/security-mode-symptome2.png rename to documentation/en/images/security-mode-symptome2.png diff --git a/images/temp-entities-1.png b/documentation/en/images/temp-entities-1.png similarity index 100% rename from images/temp-entities-1.png rename to documentation/en/images/temp-entities-1.png diff --git a/images/temp-entities-2.png b/documentation/en/images/temp-entities-2.png similarity index 100% rename from images/temp-entities-2.png rename to documentation/en/images/temp-entities-2.png diff --git a/images/temperature-slope.png b/documentation/en/images/temperature-slope.png similarity index 100% rename from images/temperature-slope.png rename to documentation/en/images/temperature-slope.png diff --git a/documentation/en/images/thermostat-entities.png b/documentation/en/images/thermostat-entities.png new file mode 100644 index 0000000..4b0e39e Binary files /dev/null and b/documentation/en/images/thermostat-entities.png differ diff --git a/documentation/en/images/tips.png b/documentation/en/images/tips.png new file mode 100644 index 0000000..9bb3b11 Binary files /dev/null and b/documentation/en/images/tips.png differ diff --git a/documentation/en/images/use-central-mode.png b/documentation/en/images/use-central-mode.png new file mode 100644 index 0000000..39ae7c4 Binary files /dev/null and b/documentation/en/images/use-central-mode.png differ diff --git a/images/window-auto-tuning.png b/documentation/en/images/window-auto-tuning.png similarity index 100% rename from images/window-auto-tuning.png rename to documentation/en/images/window-auto-tuning.png diff --git a/documentation/en/images/window-detection-icon.png b/documentation/en/images/window-detection-icon.png new file mode 100644 index 0000000..32ec652 Binary files /dev/null and b/documentation/en/images/window-detection-icon.png differ diff --git a/documentation/en/installation.md b/documentation/en/installation.md new file mode 100644 index 0000000..1dbc242 --- /dev/null +++ b/documentation/en/installation.md @@ -0,0 +1,19 @@ +# How to Install Versatile Thermostat? + +## HACS Installation (Recommended) + +1. Install [HACS](https://hacs.xyz/). This way, you will automatically receive updates. +2. The Versatile Thermostat integration is now available directly from the HACS interface (Integrations tab). +3. Search for and install "Versatile Thermostat" in HACS and click "Install". +4. Restart Home Assistant. +5. Then, you can add a Versatile Thermostat integration in the Settings / Integrations page. Add as many thermostats as needed (usually one per radiator or group of radiators that need to be controlled, or per pump in the case of a centralized heating system). + +## Manual Installation + +1. Using your tool of choice, open your Home Assistant configuration directory (where you will find `configuration.yaml`). +2. If you don't have a `custom_components` directory, you need to create one. +3. Inside the `custom_components` directory, create a new folder called `versatile_thermostat`. +4. Download _all_ files from the `custom_components/versatile_thermostat/` directory (folder) in this repository. +5. Place the downloaded files in the new folder you created. +6. Restart Home Assistant. +7. Configure the new Versatile Thermostat integration. \ No newline at end of file diff --git a/documentation/en/one-page.md b/documentation/en/one-page.md new file mode 100644 index 0000000..9fe2af5 --- /dev/null +++ b/documentation/en/one-page.md @@ -0,0 +1,1676 @@ +[![GitHub Release][releases-shield]][releases] +[![GitHub Activity][commits-shield]][commits] +[![License][license-shield]](LICENSE) +[![hacs][hacs_badge]][hacs] +[![BuyMeCoffee][buymecoffeebadge]][buymecoffee] + +![Tip](images/icon.png) + +> ![Tip](images/tips.png) Cette intégration de thermostat vise à simplifier considérablement vos automatisations autour de la gestion du chauffage. Parce que tous les événements autour du chauffage classiques sont gérés nativement par le thermostat (personne à la maison ?, activité détectée dans une pièce ?, fenêtre ouverte ?, délestage de courant ?), vous n'avez pas à vous encombrer de scripts et d'automatismes compliqués pour gérer vos climats. ;-). + +- [Changements dans la version 6.0](#changements-dans-la-version-60) + - [Entités de température pour les pre-réglages](#entités-de-température-pour-les-pre-réglages) + - [Dans le cas d'une configuration centrale](#dans-le-cas-dune-configuration-centrale) + - [Refonte du menu de configuration](#refonte-du-menu-de-configuration) + - [Les options de menu 'Configuration incomplète' et 'Finaliser'](#les-options-de-menu-configuration-incomplète-et-finaliser) +- [Changements dans la version 5.0](#changements-dans-la-version-50) +- [Merci pour la bière buymecoffee](#merci-pour-la-bière-buymecoffee) +- [Quand l'utiliser et ne pas l'utiliser](#quand-lutiliser-et-ne-pas-lutiliser) + - [Incompatibilités](#incompatibilités) +- [Pourquoi une nouvelle implémentation du thermostat ?](#pourquoi-une-nouvelle-implémentation-du-thermostat-) +- [Comment installer cet incroyable Thermostat Versatile ?](#comment-installer-cet-incroyable-thermostat-versatile-) + - [HACS installation (recommendé)](#hacs-installation-recommendé) + - [Installation manuelle](#installation-manuelle) +- [Configuration](#configuration) + - [Création d'un nouveau Versatile Thermostat](#création-dun-nouveau-versatile-thermostat) + - [Choix des attributs de base](#choix-des-attributs-de-base) + - [Sélectionnez des entités pilotées (sous-jacents)](#sélectionnez-des-entités-pilotées-sous-jacents) + - [Pour un thermostat de type ```thermostat_over_switch```](#pour-un-thermostat-de-type-thermostat_over_switch) + - [Pour un thermostat de type ```thermostat_over_climate```:](#pour-un-thermostat-de-type-thermostat_over_climate) + - [L'auto-régulation](#lauto-régulation) + - [L'auto-régulation en mode Expert](#lauto-régulation-en-mode-expert) + - [Compensation de la température interne](#compensation-de-la-température-interne) + - [Synthèse de l'algorithme d'auto-régulation](#synthèse-de-lalgorithme-dauto-régulation) + - [Le mode auto-fan](#le-mode-auto-fan) + - [Le démarrage / arrêt automatique](#le-démarrage--arrêt-automatique) + - [Pour un thermostat de type ```thermostat_over_valve```:](#pour-un-thermostat-de-type-thermostat_over_valve) + - [Configurez les coefficients de l'algorithme TPI](#configurez-les-coefficients-de-lalgorithme-tpi) + - [Configurer les températures préréglées](#configurer-les-températures-préréglées) + - [Configurer les portes/fenêtres en allumant/éteignant les thermostats](#configurer-les-portesfenêtres-en-allumantéteignant-les-thermostats) + - [Le mode capteur](#le-mode-capteur) + - [Le mode auto](#le-mode-auto) + - [Configurer le mode d'activité ou la détection de mouvement](#configurer-le-mode-dactivité-ou-la-détection-de-mouvement) + - [Configurer la gestion de la puissance](#configurer-la-gestion-de-la-puissance) + - [Configurer la présence (ou l'absence)](#configurer-la-présence-ou-labsence) + - [Configuration avancée](#configuration-avancée) + - [Le contrôle centralisé](#le-contrôle-centralisé) + - [Le contrôle d'une chaudière centrale](#le-contrôle-dune-chaudière-centrale) + - [Configuration](#configuration-1) + - [Comment trouver le bon service ?](#comment-trouver-le-bon-service-) + - [Les évènements](#les-évènements) + - [Avertissement](#avertissement) + - [Synthèse des paramètres](#synthèse-des-paramètres) +- [Exemples de réglage](#exemples-de-réglage) + - [Chauffage électrique](#chauffage-électrique) + - [Chauffage central (chauffage gaz ou fuel)](#chauffage-central-chauffage-gaz-ou-fuel) + - [Le capteur de température alimenté par batterie](#le-capteur-de-température-alimenté-par-batterie) + - [Capteur de température réactif (sur secteur)](#capteur-de-température-réactif-sur-secteur) + - [Mes presets](#mes-presets) +- [Algorithme](#algorithme) + - [Algorithme TPI](#algorithme-tpi) +- [Capteurs](#capteurs) +- [Services](#services) + - [Forcer la présence/occupation](#forcer-la-présenceoccupation) + - [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) +- [Evènements](#evènements) +- [Attributs personnalisés](#attributs-personnalisés) +- [Quelques résultats](#quelques-résultats) +- [Encore mieux](#encore-mieux) + - [Bien mieux avec le Versatile Thermostat UI Card](#bien-mieux-avec-le-versatile-thermostat-ui-card) + - [Encore mieux avec le composant Scheduler !](#encore-mieux-avec-le-composant-scheduler-) + - [Encore bien mieux avec la custom:simple-thermostat front integration](#encore-bien-mieux-avec-la-customsimple-thermostat-front-integration) + - [Toujours mieux avec Plotly pour régler votre thermostat](#toujours-mieux-avec-plotly-pour-régler-votre-thermostat) + - [Et toujours de mieux en mieux avec l'AappDaemon NOTIFIER pour notifier les évènements](#et-toujours-de-mieux-en-mieux-avec-laappdaemon-notifier-pour-notifier-les-évènements) +- [Les contributions sont les bienvenues !](#les-contributions-sont-les-bienvenues) +- [Dépannages](#dépannages) + - [Utilisation d'un Heatzy](#utilisation-dun-heatzy) + - [Utilisation d'un radiateur avec un fil pilote](#utilisation-dun-radiateur-avec-un-fil-pilote) + - [Utilisation d'un radiateur avec un fil pilote](#utilisation-dun-radiateur-avec-un-fil-pilote-1) + - [Seul le premier radiateur chauffe](#seul-le-premier-radiateur-chauffe) + - [Le radiateur chauffe alors que la température de consigne est dépassée ou ne chauffe pas alors que la température de la pièce est bien en-dessous de la consigne](#le-radiateur-chauffe-alors-que-la-température-de-consigne-est-dépassée-ou-ne-chauffe-pas-alors-que-la-température-de-la-pièce-est-bien-en-dessous-de-la-consigne) + - [Type `over_switch` ou `over_valve`](#type-over_switch-ou-over_valve) + - [Type `over_climate`](#type-over_climate) + - [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-) + - [Utilisation d'un groupe de personnes comme capteur de présence](#utilisation-dun-groupe-de-personnes-comme-capteur-de-présence) + - [Activer les logs du Versatile Thermostat](#activer-les-logs-du-versatile-thermostat) + +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. + + +> ![Nouveau](images/new-icon.png) _*Historique des dernières versions*_ +> * **Release 6.5** : +> - Ajout d'une nouvelle fonction permettant l'arrêt et la relance automatique d'un VTherm `over_climate` [585](https://github.com/jmcollin78/versatile_thermostat/issues/585) +> - Amélioration de la gestion des ouvertures au démarrage. Permet de mémoriser et de recalculer l'état d'une ouverture au redémarage de Home Assistant [504](https://github.com/jmcollin78/versatile_thermostat/issues/504) +> * **Release 6.0** : +> - Ajout d'entités du domaine Number permettant de configurer les températures des presets [354](https://github.com/jmcollin78/versatile_thermostat/issues/354) +> - Refonte complète du menu de configuration pour supprimer les températures et utililsation d'un menu au lieu d'un tunnel de configuration [354](https://github.com/jmcollin78/versatile_thermostat/issues/354) +> * **Release 5.4** : +> - Ajout du pas de température [#311](https://github.com/jmcollin78/versatile_thermostat/issues/311), +> - ajout de seuils de régulation pour les `over_valve` pour éviter de trop vider la batterie des TRV [#338](https://github.com/jmcollin78/versatile_thermostat/issues/338), +> - ajout d'une option permettant d'utiliser la température interne d'un TRV pour forcer l' auto-régulation [#348](https://github.com/jmcollin78/versatile_thermostat/issues/348), +> - ajout d'une fonction de keep-alive pour les VTherm `over_switch` [#345](https://github.com/jmcollin78/versatile_thermostat/issues/345) + +
+Autres versions + +> * **Release 5.3** : Ajout d'une fonction de pilotage d'une chaudière centrale [#234](https://github.com/jmcollin78/versatile_thermostat/issues/234) - plus d'infos ici: [Le contrôle d'une chaudière centrale](#le-contrôle-dune-chaudière-centrale). Ajout de la possibilité de désactiver le mode sécurité pour le thermomètre extérieur [#343](https://github.com/jmcollin78/versatile_thermostat/issues/343) +> * **Release 5.2** : Ajout d'un `central_mode` permettant de piloter tous les VTherms de façon centralisée [#158](https://github.com/jmcollin78/versatile_thermostat/issues/158). +> * **Release 5.1** : Limitation des valeurs envoyées aux valves et au température envoyées au climate sous-jacent. +> * **Release 5.0** : Ajout d'une configuration centrale permettant de mettre en commun les attributs qui peuvent l'être [#239](https://github.com/jmcollin78/versatile_thermostat/issues/239). +> * **Release 4.3** : Ajout d'un mode auto-fan pour le type `over_climate` permettant d'activer la ventilation si l'écart de température est important [#223](https://github.com/jmcollin78/versatile_thermostat/issues/223). +> * **Release 4.2** : Le calcul de la pente de la courbe de température se fait maintenant en °/heure et non plus en °/min [#242](https://github.com/jmcollin78/versatile_thermostat/issues/242). Correction de la détection automatique des ouvertures par l'ajout d'un lissage de la courbe de température . +> * **Release 4.1** : Ajout d'un mode de régulation **Expert** dans lequel l'utilisateur peut spécifier ses propres paramètres d'auto-régulation au lieu d'utiliser les pre-programmés [#194](https://github.com/jmcollin78/versatile_thermostat/issues/194). +> * **Release 4.0** : Ajout de la prise en charge de la **Versatile Thermostat UI Card**. Voir [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card). Ajout d'un mode de régulation **Slow** pour les appareils de chauffage à latence lente [#168](https://github.com/jmcollin78/versatile_thermostat/issues/168). Changement de la façon dont **la puissance est calculée** dans le cas de VTherm avec des équipements multi-sous-jacents [#146](https://github.com/jmcollin78/versatile_thermostat/issues/146). Ajout de la prise en charge de AC et Heat pour VTherm via un interrupteur également [#144](https://github.com/jmcollin78/versatile_thermostat/pull/144) +> * **Release 3.8**: Ajout d'une **fonction d'auto-régulation** pour les thermostats `over climate` dont la régulation est faite par le climate sous-jacent. Cf. [L'auto-régulation](#lauto-régulation) et [#129](https://github.com/jmcollin78/versatile_thermostat/issues/129). Ajout de la **possibilité d'inverser la commande** pour un thermostat `over switch` pour adresser les installations avec fil pilote et diode [#124](https://github.com/jmcollin78/versatile_thermostat/issues/124). +> * **Release 3.7**: Ajout du type de **Versatile Thermostat `over valve`** pour piloter une vanne TRV directement ou tout autre équipement type gradateur pour le chauffage. La régulation se fait alors directement en agissant sur le pourcentage d'ouverture de l'entité sous-jacente : 0 la vanne est coupée, 100 : la vanne est ouverte à fond. Cf. [#131](https://github.com/jmcollin78/versatile_thermostat/issues/131). Ajout d'une fonction permettant le bypass de la détection d'ouverture [#138](https://github.com/jmcollin78/versatile_thermostat/issues/138). Ajout de la langue Slovaque +> * **Release 3.6**: Ajout du paramètre `motion_off_delay` pour améliorer la gestion de des mouvements [#116](https://github.com/jmcollin78/versatile_thermostat/issues/116), [#128](https://github.com/jmcollin78/versatile_thermostat/issues/128). Ajout du mode AC (air conditionné) pour un VTherm over switch. Préparation du projet Github pour faciliter les contributions [#127](https://github.com/jmcollin78/versatile_thermostat/issues/127) +> * **Release 3.5**: Plusieurs thermostats sont possibles en "thermostat over climate" mode [#113](https://github.com/jmcollin78/versatile_thermostat/issues/113) +> * **Release 3.4**: bug fix et exposition des preset temperatures pour le mode AC [#103](https://github.com/jmcollin78/versatile_thermostat/issues/103) +> * **Release 3.3**: ajout du mode Air Conditionné (AC). Cette fonction vous permet d'utiliser le mode AC de votre thermostat sous-jacent. Pour l'utiliser, vous devez cocher l'option "Uitliser le mode AC" et définir les valeurs de température pour les presets et pour les presets en cas d'absence +> * **Release 3.2** : ajout de la possibilité de commander plusieurs switch à partir du même thermostat. Dans ce mode, les switchs sont déclenchés avec un délai pour minimiser la puissance nécessaire à un instant (on minimise les périodes de recouvrement). Voir [Configuration](#sélectionnez-des-entités-pilotées) +> * **Release 3.1** : ajout d'une détection de fenêtres/portes ouvertes par chute de température. Cette nouvelle fonction permet de stopper automatiquement un radiateur lorsque la température chute brutalement. Voir [Le mode auto](#le-mode-auto) +> * **Release majeure 3.0** : ajout d'un équipement thermostat et de capteurs (binaires et non binaires) associés. Beaucoup plus proche de la philosphie Home Assistant, vous avez maintenant un accès direct à l'énergie consommée par le radiateur piloté par le thermostat et à plein d'autres capteurs qui seront utiles dans vos automatisations et dashboard. +> * **release 2.3** : ajout de la mesure de puissance et d'énergie du radiateur piloté par le thermostat. +> * **release 2.2** : ajout de fonction de sécurité permettant de ne pas laisser éternellement en chauffe un radiateur en cas de panne du thermomètre +> * **release majeure 2.0** : ajout du thermostat "over climate" permettant de transformer n'importe quel thermostat en Versatile Thermostat et lui ajouter toutes les fonctions de ce dernier. +
+ +
+Changements dans la version 6.0 +# Changements dans la version 6.0 + +## Entités de température pour les pre-réglages +Les températures des presets sont maintenant directement acessibles sous la forme d'entités reliés au VTherm. +Exemple : + +![Entités température](images/temp-entities-1.png) + +Les entités Boost, Confort, Eco et Hors-gel permettent de régler directement les températures de ces présets sans avoir à reconfigurer le VTHerm dans les écrans de configuration. +Ces modifications sont persistentent à un redémarrage et sont prises en compte immédiatement par le VTherm. + +En fonction des fonctions activées, la liste des températures peut être plus ou moins complète : +1. Si la gestion de présence est activée, les presets en cas d'absence sont créés. Ils sont suffixés par 'abs' pour absence, +2. Si la gestion de la climatisation (Mode AC) est activé, les presets en mode clim sont créés. Ils sont suffixés par 'clim' pour climatisation. Seul le preset Hors gel n'a pas d'équivalent en mode clim, +3. Les différentes combinaison absent et clim peuvent être créés en fonction de la configuration du VTherm + +Si un VTherm utilise les preset de la configuration centrale, ces entités ne sont pas créées, car les températures des presets sont gérés par la configuration centrale. + +### Dans le cas d'une configuration centrale +Si vous avez configuré une configuration centrale, celle-ci possède aussi ses propres presets qui répondent au même règles qu'énoncées ci-dessus. +Exemple d'une configuration centrale avec gestion de présence et mode AC (climatisation) : + +![Entités température](images/temp-entities-2.png) + +Dans le cas d'un changement d'une température de la configuration centrale, tous les VTherm qui utilisent ce preset sont immédiatement mis à jour. + +## Refonte du menu de configuration +Le menu de configuration a été totalement revu. Il s'adapte dynamiquement aux choix de l'utilisateur et permet d'accéder directement aux réglages de la fonction voulue sans avoir à dérouler tous le tunnel de configuration. + +Pour créer un nouveau VTherm, il faudra d'abord choisir le type de VTherm : + +![Choix VTherm](images/config-main0.png) + +Puis, vous accédez maintenant au menu de configuration suivant : + +![VTherm menu](images/config-menu.png) + +Chaque partie à configurer est accessible directement, sans avoir à dérouler tout le tunnel de configuration comme précédemment. + +Vous noterez l'option de menu nommée `Fonctions` qui permet de choisir quelles fonctions vont être implémentées pour ce VTherm : + +![VTherm fonctions](images/config-features.png) + +En fonction de vos choix, le menu principal s'adaptera pour ajouter les options nécessaires. + +Exemple de menu avec toutes les fonctions cochées : + +![VTherm menu](images/config-menu-all-options.png) +Vous pouvez constater que les options 'Détection des ouvertures', 'Détection de mouvement', 'Gestion de la puissance' et 'Gestion de présence' ont été ajoutées. Vous pouvez alors les configurer. + +### Les options de menu 'Configuration incomplète' et 'Finaliser' + +La dernière option du menu est spéciale. Elle permet de valider la création du VTherm lorsque toutes les fonctions ont été correctement configurées. +Si l'une options n'est pas correctement configurée, la dernière option est la suivante : + +![Configuration incomplète](images/config-not-complete.png) + +Sa sélection ne fait rien mais vous empêche de finaliser la création (resp. la modification) du VTherm. +**Vous devez alors chercher dans les options laquelle manque**. + +Une fois que toute la configuration est valide, la dernière option se transforme en : + +![Configuration complète](images/config-complete.png) + +Cliquez sur cette option pour créér (resp. modifier) le VTherm : + +![Configuration terminée](images/config-terminate.png) +
+ +
+Changements dans la version 5.0 + +# Changements dans la version 5.0 + +Vous pouvez maintenant définir une configuration centrale qui va vous permettre de mettre en commun sur tous vos VTherms (ou seulement une partie), certains attributs. Pour utiliser cette possibilité, vous devez : +1. Créer un VTherm de type "Configuration Centrale", +2. Saisir les attributs de cette configuration centrale + +Pour l'utiliser ensuite dans les autres VTherms, vous devez les reconfigurer et à chaque fois que c'est possible cocher la case "Utiliser la configuration centrale". Cette case à cocher apparait dans tous les groupes d'attributs qui peuvent avoir recours à la configuration centrale : attributs principaux, TPI, ouvertures, mouvement, puissance, présence et paramètres avancés. + +Les attributs configurable dans la configuration centrale est listée ici : [Synthèse des paramètres](#synthèse-des-paramètres). + +Lors d'un changement sur la configuration centrale, tous les VTherms seront rechargés pour tenir compte de ces changements. + +En conséquence toute la phase de paramètrage d'un VTherm a été profondemment modifiée pour pouvoir utiliser la configuration centrale ou surcharger les valeurs de la configuration centrale par des valeurs propre au VTherm en cours de configuration. + +
+ +# Merci pour la bière [buymecoffee](https://www.buymeacoffee.com/jmcollin78) +Un grand merci à @salabur, @pvince83, @bergoglio, @EPicLURcher, @ecolorado66, @Kriss1670, @maia, @f.maymil, @moutte69, @Jerome, @Gunnar M, @Greg.o, @John Burgess, @abyssmal, @capinfo26, @Helge, @MattG @Mexx62, @Someone, @Lajull, @giopeco, @fredericselier, @philpagan, @studiogriffanti, @Edwin, @Sebbou, @Gerard R., @John Burgess, @Sylvoliv, @cdenfert, @stephane.l, @jms92100 pour les bières. Ca fait très plaisir et ça m'encourage à continuer ! + + +# Quand l'utiliser et ne pas l'utiliser +Ce thermostat peut piloter 3 types d'équipements : +1. un radiateur qui ne fonctionne qu'en mode marche/arrêt (nommé ```thermostat_over_switch```). La configuration minimale nécessaire pour utiliser ce type thermostat est : + 1. un équipement comme un radiateur (un ```switch``` ou équivalent), + 2. une sonde de température pour la pièce (ou un input_number), + 3. un capteur de température externe (pensez à l'intégration météo si vous n'en avez pas) +2. un autre thermostat qui a ses propres modes de fonctionnement (nommé ```thermostat_over_climate```). Pour ce type de thermostat la configuration minimale nécessite : + 1. un équipement - comme une climatisation, une valve thermostatique - qui est pilotée par sa propre entity de type ```climate```, +3. un équipement qui peut prendre une valeur de 0 à 100% (nommée ```thermostat_over_valve```). A 0 le chauffage est coupé, 100% il est ouvert à fond. Ce type permet de piloter une valve thermostatique (cf. valve Shelly) qui expose une entité de type `number.` permetttant de piloter directement l'ouverture de la vanne. Versatile Thermostat régule la température de la pièce en jouant sur le pourcentage d'ouverture, à l'aide des capteurs de température intérieur et extérieur en utilisant l'algorithme TPI décrit ci-dessous. + +Le type `over_climate` vous permet d'ajouter à votre équipement existant toutes les fonctionnalités apportées par VersatileThermostat. L'entité climate VersatileThermostat contrôlera votre entité climate sous-jacente, l'éteindra si les fenêtres sont ouvertes, la fera passer en mode Eco si personne n'est présent, etc. Voir [ici] (#pourquoi-un-nouveau-thermostat-implémentation). Pour ce type de thermostat, tous les cycles de chauffage sont contrôlés par l'entité climate sous-jacente et non par le thermostat polyvalent lui-même. Une fonction facultative d'auto-régulation permet au Versatile Thermostat d'ajuster la température donnée en consigne au sous-jacent afin d'atteindre la consigne. + +Les installations avec fil pilote et diode d'activation bénéficie d'une option qui permet d'inverser la commande on/off du radiateur sous-jacent. Pour cela, utilisez le type `over switch` et cochez l'option d'inversion de la commande. + +## Incompatibilités +Certains thermostat de type TRV sont réputés incompatibles avec le Versatile Thermostat. C'est le cas des vannes suivantes : +1. les vannes POPP de Danfoss avec retour de température. Il est impossible d'éteindre cette vanne et elle s'auto-régule d'elle-même causant des conflits avec le VTherm, +2. Les thermostats « Homematic » (et éventuellement Homematic IP) sont connus pour rencontrer des problèmes avec le Versatile Thermostat en raison des limitations du protocole RF sous-jacent. Ce problème se produit particulièrement lorsque vous essayez de contrôler plusieurs thermostats Homematic à la fois dans une seule instance de VTherm. Afin de réduire la charge du cycle de service, vous pouvez par ex. regroupez les thermostats avec des procédures spécifiques à Homematic (par exemple en utilisant un thermostat mural) et laissez Versatile Thermostat contrôler uniquement le thermostat mural directement. Une autre option consiste à contrôler un seul thermostat et à propager les changements de mode CVC et de température par un automatisme, +3. les thermostats de type Heatzy qui ne supportent pas les commandes de type set_temperature +4. les thermostats de type Rointe ont tendance a se réveiller tout seul. Le reste fonctionne normalement. +5. les TRV de type Aqara SRTS-A01 et MOES TV01-ZB qui n'ont pas le retour d'état `hvac_action` permettant de savoir si elle chauffe ou pas. Donc les retours d'état sont faussés, le reste à l'air fonctionnel. +6. La clim Airwell avec l'intégration "Midea AC LAN". Si 2 commandes de VTherm sont trop rapprochées, la clim s'arrête d'elle même. +7. Les climates basés sur l'intégration Overkiz ne fonctionnent pas. Il parait impossible d'éteindre ni même de changer la température sur ces systèmes. + +# Pourquoi une nouvelle implémentation du thermostat ? + +Ce composant nommé __Versatile thermostat__ gère les cas d'utilisation suivants : +- Configuration via l'interface graphique d'intégration standard (à l'aide du flux Config Entry), +- Utilisations complètes du **mode préréglages**, +- Désactiver le mode préréglé lorsque la température est **définie manuellement** sur un thermostat, +- Éteindre/allumer un thermostat lorsqu'une **porte ou des fenêtres sont ouvertes/fermées** après un certain délai, +- Changer de preset lorsqu'une **activité est détectée** ou non dans une pièce pendant un temps défini, +- Utiliser un algorithme **TPI (Time Proportional Interval)** grâce à l'algorithme [[Argonaute](https://forum.hacf.fr/u/argonaute/summary)] , +- Ajouter une **gestion de délestage** ou une régulation pour ne pas dépasser une puissance totale définie. Lorsque la puissance maximale est dépassée, un préréglage caché de « puissance » est défini sur l'entité climatique. Lorsque la puissance passe en dessous du maximum, le préréglage précédent est restauré. +- La **gestion de la présence à domicile**. Cette fonctionnalité vous permet de modifier dynamiquement la température du préréglage en tenant compte d'un capteur de présence de votre maison. +- Des **services pour interagir avec le thermostat** à partir d'autres intégrations : vous pouvez forcer la présence / la non-présence à l'aide d'un service, et vous pouvez modifier dynamiquement la température des préréglages et changer les paramètres de sécurité. +- Ajouter des capteurs pour voir les états internes du thermostat, +- Contrôle centralisé de tous les Versatile Thermostat pour les stopper tous, les passer tous en hors-gel, les forcer en mode Chauffage (l'hiver), les forcer en mode Climatisation (l'été). +- Contrôle d'une chaudière centrale et des VTherm qui doivent contrôler cette chaudière. + +# Comment installer cet incroyable Thermostat Versatile ? + +## HACS installation (recommendé) + +1. Installez [HACS](https://hacs.xyz/). De cette façon, vous obtenez automatiquement les mises à jour. +2. L'intégration Versatile Thermostat est maintenant proposée directement depuis l'interface HACF (onglet intégrations), +3. recherchez et installez "Versatile Thermostat" dans HACS et cliquez sur "installer". +4. Redémarrez Home Assistant. +5. Ensuite, vous pouvez ajouter une intégration de Versatile Thermostat dans la page Paramètres / Intégrations. Vous ajoutez autant de thermostats dont vous avez besoin (généralement un par radiateur ou par groupe de radiateurs qui doivent être gérés ou par pompe dans le cas d'un chauffage centralisé) + + +## Installation manuelle + +1. À l'aide de l'outil de votre choix, ouvrez le répertoire (dossier) de votre configuration HA (où vous trouverez `configuration.yaml`). +2. Si vous n'avez pas de répertoire (dossier) `custom_components`, vous devez le créer. +3. Dans le répertoire (dossier) `custom_components`, créez un nouveau dossier appelé `versatile_thermostat`. +4. Téléchargez _tous_ les fichiers du répertoire `custom_components/versatile_thermostat/` (dossier) dans ce référentiel. +5. Placez les fichiers que vous avez téléchargés dans le nouveau répertoire (dossier) que vous avez créé. +6. Redémarrez l'assistant domestique +7. Configurer la nouvelle intégration du Versatile Thermostat + +# Configuration + +-- VTherm = Versatile Thermostat dans la suite de ce document -- + +> ![Astuce](images/tips.png) _*Notes*_ +> +> Trois façons de configurer les VTherms sont disponibles : +> 1. Chaque Versatile Thermostat est entièrement configurée de manière indépendante. Choisissez cette option si vous ne souhaitez avoir aucune configuration ou gestion centrale. +> 2. Certains aspects sont configurés de manière centralisée. Cela permet par ex. définir la température min/max, la détection de fenêtre ouverte,… au niveau d'une instance centrale et unique. Pour chaque VTherm que vous configurez, vous pouvez alors choisir d'utiliser la configuration centrale ou de la remplacer par des paramètres personnalisés. +> 3. En plus de cette configuration centralisée, tous les VTherm peuvent être contrôlées par une seule entité de type `select`. Cette fonction est nommé `central_mode`. Cela permet de stopper / démarrer / mettre en hors gel / etc tous les VTherms en une seule fois. Pour chaque VTherm, l'utilisateur indique si il est concerné par ce `central_mode`. + + +## Création d'un nouveau Versatile Thermostat + +Cliquez sur le bouton Ajouter une intégration dans la page d'intégration + +![image](images/add-an-integration.png) + +puis + +![image](images/config-main0.png) + +La configuration peut être modifiée via la même interface. Sélectionnez simplement le thermostat à modifier, appuyez sur "Configurer" et vous pourrez modifier certains paramètres ou la configuration. + +Suivez ensuite les étapes de configuration en sélectionnant dans le menu l'option à configurer. + +## Choix des attributs de base + +Choisisez le menu "Principaux attributs". + +![image](images/config-main.png) + +Donnez les principaux attributs obligatoires : +1. un nom (sera le nom de l'intégration et aussi le nom de l'entité climate) +2. le type de thermostat ```thermostat_over_switch``` pour piloter un radiateur commandé par un switch ou ```thermostat_over_climate``` pour piloter un autre thermostat, ou ```thermostat_over_valve``` Cf. [ci-dessus](#pourquoi-une-nouvelle-implémentation-du-thermostat) +4. un identifiant d'entité de capteur de température qui donne la température de la pièce dans laquelle le radiateur est installé, +5. une entité capteur de température donnant la température extérieure. Si vous n'avez pas de capteur externe, vous pouvez utiliser l'intégration météo locale +6. une durée de cycle en minutes. A chaque cycle, le radiateur s'allumera puis s'éteindra pendant une durée calculée afin d'atteindre la température ciblée (voir [preset](#configure-the-preset-temperature) ci-dessous). En mode ```over_climate```, le cycle ne sert qu'à faire des controles de base mais ne régule pas directement la température. C'est le ```climate``` sous-jacent qui le fait, +7. les températures minimales et maximales du thermostat, +8. une puissance de l'équipement ce qui va activer les capteurs de puissance et énergie consommée par l'appareil, +9. la possibilité de controler le thermostat de façon centralisée. Cf [controle centralisé](#le-contrôle-centralisé), +10. la liste des fonctionnalités qui seront utilisées pour ce thermostat. En fonction de vos choix, les écrans de configuration suivants s'afficheront ou pas. + +> ![Astuce](images/tips.png) _*Notes*_ +> 1. avec les types ```over_switch``` et ```over_valve```, les calculs sont effectués à chaque cycle. Donc en cas de changement de conditions, il faudra attendre le prochain cycle pour voir un changement. Pour cette raison, le cycle ne doit pas être trop long. **5 min est une bonne valeur**, +> 2. si le cycle est trop court, le radiateur ne pourra jamais atteindre la température cible. Pour le radiateur à accumulation par exemple il sera sollicité inutilement. + +## Sélectionnez des entités pilotées (sous-jacents) + +En fonction de votre choix sur le type de thermostat, vous devrez choisir une ou plusieurs entités de type `switch`, `climate` ou `number`. Seules les entités compatibles avec le type sont présentées. + +> ![Astuce](images/tips.png) _*Comment choisir le type*_ +> Le choix du type est important. Même si il toujours possible de le modifier ensuite via l'IHM de configuration, il est préférable de se poser les quelques questions suivantes : +> 1. **quel type d'équipement je vais piloter ?** Dans l'ordre voici ce qu'il faut faire : +> 1. si vous avez une vanne thermostatique (TRV) commandable dans Home Assistant via une entité de type ```number``` (par exemple une _Shelly TRV_), choisissez le type `over_valve`. C'est le type le plus direct et qui assure la meilleure régulation, +> 2. si vous avez un radiateur électrique (avec ou sans fil pilote) et qu'une entité de type ```switch``` permet de l'allumer ou de l'éteindre, alors le type ```over_switch``` est préférable. La régulation sera faite par le Versatile Thermostat en fonction de la température mesuré par votre thermomètre, à l'endroit ou vous l'avez placé, +> 3. dans tous les autres cas, utilisez le mode ```over_climate```. Vous gardez votre entité ```climate``` d'origine et le Versatile Thermostat "ne fait que" piloter le on/off et la température cible de votre thermostat d'origine. La régulation est faite par votre thermostat d'origine dans ce cas. Ce mode est particulièrement adapté aux climatisations réversible tout-en-un dont l'exposition dans Home Assistant se limite à une entité de type ```climate``` +> 2. **quelle type de régulation je veux ?** Si l'équipement piloté possède son propre mécanisme de régulation (clim, certaine vanne TRV) et que cette régulation fonctionne bien, optez pour un ```over_climate``` + +### Pour un thermostat de type ```thermostat_over_switch``` +![image](images/config-linked-entity.png) + +Certains équipements nécessitent d'être périodiquement sollicités pour empêcher un arrêt de sécurité. Connu sous le nom de "keep-alive" cette fonction est activable en entrant un nombre de secondes non nul dans le champ d'intervalle keep-alive du thermostat. Pour désactiver la fonction ou en cas de doute, laissez-le vide ou entrez zéro (valeur par défaut). + +L'algorithme à utiliser est aujourd'hui limité à TPI est disponible. Voir [algorithme](#algorithme). +Si plusieurs entités de type sont configurées, la thermostat décale les activations afin de minimiser le nombre de switch actif à un instant t. Ca permet une meilleure répartition de la puissance puisque chaque radiateur va s'allumer à son tour. +Exemple de déclenchement synchronisé : +![image](images/multi-switch-activation.png) + +Il est possible de choisir un thermostat over switch qui commande une climatisation en cochant la case "AC Mode". Dans ce cas, seul le mode refroidissement sera visible. + +Si votre équipement est commandé par un fil pilote avec un diode, vous aurez certainement besoin de cocher la case "Inverser la case". Elle permet de mettre le switch à On lorsqu'on doit étiendre l'équipement et à Off lorsqu'on doit l'allumer. + +### Pour un thermostat de type ```thermostat_over_climate```: +![image](images/config-linked-entity2.png) + +Il est possible de choisir un thermostat over climate qui commande une climatisation réversible en cochant la case "AC Mode". Dans ce cas, selon l'équipement commandé vous aurez accès au chauffage et/ou au réfroidissement. + +#### L'auto-régulation +Depuis la release 3.8, vous avez la possibilité d'activer la fonction d'auto-régulation. Cette fonction autorise VersatileThermostat à adapter la consigne de température donnée au climate sous-jacent afin que la température de la pièce atteigne réellement la consigne. +Pour faire ça, le VersatileThermostat calcule un décalage basé sur les informations suivantes : +1. la différence actuelle entre la température réelle et la température de consigne, appelé erreur brute, +2. l'accumulation des erreurs passées, +3. la différence entre la température extérieure et la consigne + +Ces trois informations sont combinées pour calculer le décalage qui sera ajouté à la consigne courante et envoyé au climate sous-jacent. + +La fonction d'auto-régulation se paramètre avec : +1. une dégré de régulation : + 1. Légère - pour des faibles besoin en auto-régulation. Dans ce mode, le décalage maximal sera de 1,5°, + 2. Medium - pour une auto-régulation moyenne. Un décalage maximal de 2° est possible dans ce mode, + 3. Forte - pour un fort besoin d'auto-régulation. Le décalage maximal est de 3° dans ce mode et l'auto-régulation réagira fortement aux changements de température. +2. Un seuil d'auto-régulation : valeur en dessous de laquelle une nouvelle régulation ne sera pas appliquée. Imaginons qu'à un instant t, le décalage soit de 2°. Si au prochain calcul, le décalage est de 2.4°, il sera pas appliqué. Il ne sera appliqué que la différence entre 2 décalages sera au moins égal à ce seuil, +3. Période minimal entre 2 auto-régulation : ce nombre, exprimé en minute, indique la durée entre 2 changements de régulation. + +Ces trois paramètres permettent de moduler la régulation et éviter de multiplier les envois de régulation. Certains équipements comme les TRV, les chaudières n'aiment pas qu'on change la consigne de température trop souvent. + +> ![Astuce](images/tips.png) _*Conseil de mise en place*_ +> 1. Ne démarrez pas tout de suite l'auto-régulation. Regardez comment se passe la régulation naturelle de votre équipement. Si vous constatez que la température de consigne n'est pas atteinte ou qu'elle met trop de temps à être atteinte, démarrez la régulation, +> 2. D'abord commencez par une légère auto-régulation et gardez les deux paramètres avec leur valeurs par défaut. Attendez quelques jours et vérifiez si la situation s'est améliorée, +> 3. Si ce n'est pas suffisant, passez en auto-régulation Medium, attendez une stabilisation, +> 4. Si ce n'est toujours pas suffisant, passez en auto-régulation Forte, +> 5. Si ce n'est toujours pas bon, il faudra passer en mode expert pour pouvoir régler les paramètres de régulation de façon fine. Voir en-dessous + +L'auto-régulation consiste à forcer l'équipement a aller plus loin en lui forçant sa température de consigne régulièrement. Sa consommation peut donc être augmentée, ainsi que son usure. + +#### L'auto-régulation en mode Expert + +En mode **Expert** pouvez régler finement les paramètres de l'auto-régulation pour atteindre vos objeetifs et optimiser au mieux. L'algorithme calcule l'écart entre la consigne et la température réelle de la pièce. Cet écard est appelé erreur. +Les paramètres réglables sont les suivants : +1. `kp` : le facteur appliqué à l'erreur brute, +2. `ki` : le facteur appliqué à l'accumulation des erreurs, +3. `k_ext` : le facteur appliqué à la différence entre la température intérieure et la température externe, +4. `offset_max` : le maximum de correction (offset) que la régulation peut appliquer, +5. `stabilization_threshold` : un seuil de stabilisation qui lorsqu'il est atteint par l'erreur remet à 0, l'accumulation des erreurs, +6. `accumulated_error_threshold` : le maximum pour l'accumulation d'erreur. + +Pour le tuning il faut tenir compte de ces observations : +1. `kp * erreur` va donner l'offset lié à l'erreur brute. Cet offset est directement proportionnel à l'erreur et sera à 0 lorsque la target sera atteinte, +2. l'accumulation de l'erreur permet de corriger le stabilisation de la courbe alors qu'il reste une erreur. L'erreur s'accumule et l'offset augmente donc progressivement ce qui devrait finir par stabiliser sur la température cible. Pour que ce paramètre fondamental est un effet il faut qu'il soit pas trop petit. Une valeur moyenne est 30 +3. `ki * accumulated_error_threshold` va donner l'offset maximal lié à l'accumulation de l'erreur, +4. `k_ext` permet d'appliquer tout de suite (sans attendre une accumulation des erreurs) une correction lorsque la température extérieure est très différente de la température cible. Si la stabilisation se fait trop haut lorsqu'il les écarts de température sont importants, c'est que ce paramètre est trop fort. Il devrait pouvoir être annulé totalement pour laisser faire les 2 premiers offset + +Les valeurs préprogrammées sont les suivantes : + +Slow régulation : + + kp: 0.2 # 20% of the current internal regulation offset are caused by the current difference of target temperature and room temperature + ki: 0.8 / 288.0 # 80% of the current internal regulation offset are caused by the average offset of the past 24 hours + k_ext: 1.0 / 25.0 # this will add 1°C to the offset when it's 25°C colder outdoor than indoor + offset_max: 2.0 # limit to a final offset of -2°C to +2°C + stabilization_threshold: 0.0 # this needs to be disabled as otherwise the long term accumulated error will always be reset when the temp briefly crosses from/to below/above the target + accumulated_error_threshold: 2.0 * 288 # this allows up to 2°C long term offset in both directions + +Light régulation : + + kp: 0.2 + ki: 0.05 + k_ext: 0.05 + offset_max: 1.5 + stabilization_threshold: 0.1 + accumulated_error_threshold: 10 + + +Medium régulation : + + kp: 0.3 + ki: 0.05 + k_ext: 0.1 + offset_max: 2 + stabilization_threshold: 0.1 + accumulated_error_threshold: 20 + + +Strong régulation : + + """Strong parameters for regulation + A set of parameters which doesn't take into account the external temp + and concentrate to internal temp error + accumulated error. + This should work for cold external conditions which else generates + high external_offset""" + + kp: 0.4 + ki: 0.08 + k_ext: 0.0 + offset_max: 5 + stabilization_threshold: 0.1 + accumulated_error_threshold: 50 + +Pour utiliser le mode Expert il vous faut déclarer les valeurs que vous souhaitez utiliser pour chacun de ces paramètres dans votre `configuration.yaml` sous la forme suivante : +``` +versatile_thermostat: + auto_regulation_expert: + kp: 0.4 + ki: 0.08 + k_ext: 0.0 + offset_max: 5 + stabilization_threshold: 0.1 + accumulated_error_threshold: 50 +``` +et bien sur, configurer le mode auto-régulation du VTherm en mode Expert. Tous les VTherm en mode **Expert** utiliseront ces mêmes paramètres. + +Pour que les modifications soient prises en compte, il faut soit **relancer totalement Home Assistant** soit juste l'intégration Versatile Thermostat (Outils de dev / Yaml / rechargement de la configuration / Versatile Thermostat). + +#### Compensation de la température interne +Quelque fois, il arrive que le thermomètre interne du sous-jacent (TRV, climatisation, ...) soit tellement faux que l' auto-régulation ne suffise pas à réguler. +Cela arrive lorsque le thermomètre interne est trop près de la source de chaleur. La température interne monte alors beaucoup plus vite que la température de la pièce, ce qui génère des défauts dans la régulation. +Exemple : +1. la température de la pièce est 18°, la consigne est à 20°, +2. la température interne de l'équipement est de 22°, +3. si VTherm envoie 21° comme consigne (= 20° + 1° d'auto-regulation), alors l'équipement ne chauffera pas car sa température interne (22°) est au-dessus de la consigne (21°) + +Pour palier à ça, une nouvelle option facultative a été ajoutée en version 5.4 : ![Utilisation de la température interne](images/config-use-internal-temp.png) + +Lorsqu'elle est activée, cette fonction ajoutera l'écart entre la température interne et la température de la pièce à la consigne pour forcer le chauffage. +Dans l'exemple ci-dessus, l'écart est de +4° (22° - 18°), donc VTherm enverra 25° (21°+4°) à l'équipement le forçant ainsi à chauffer. + +Cet écart est calculé pour chaque sous-jacent car chacun à sa propre température interne. Pensez à un VTherm qui serait relié à 3 TRV chacun avec sa température interne par exemple. + +On obtient alors une auto-régulation bien plus efficace qui évite l'eccueil des gros écarts de température interne défaillante. + +#### Synthèse de l'algorithme d'auto-régulation +L'algorithme d'auto-régulation peut être synthétisé comme suit: + +1. initialiser la température cible comme la consigne du VTherm, +1. Si l'auto-régulation est activée, + 1. calcule de la température régulée (valable pour un VTherm), + 2. prendre cette température comme cible, +2. Pour chaque sous-jacent du VTherm, + 1. Si "utiliser la température interne" est cochée, + 1. calcule de l'écart (trv internal temp - room temp), + 2. ajout de l'écart à la température cible, + 3. envoie de la température cible ( = temp regulee + (temp interne - temp pièce)) au sous-jacent + + + +#### Le mode auto-fan +Ce mode introduit en 4.3 permet de forcer l'usage de la ventilation si l'écart de température est important. En effet, en activant la ventilation, la répartition se fait plus rapidement ce qui permet de gagner du temps dans l'atteinte de la température cible. +Vous pouvez choisir quelle ventilation vous voulez activer entre les paramètres suivants : Faible, Moyenne, Forte, Turbo. + +Il faut évidemment que votre équipement sous-jacent soit équipée d'une ventilation et quelle soit pilotable pour que cela fonctionne. +Si votre équipement ne comprend pas le mode Turbo, le mode Forte` sera utilisé en remplacement. +Une fois l'écart de température redevenu faible, la ventilation se mettra dans un mode "normal" qui dépend de votre équipement à savoir (dans l'ordre) : `Silence (mute)`, `Auto (auto)`, `Faible (low)`. La première valeur qui est possible pour votre équipement sera choisie. + +#### Le démarrage / arrêt automatique +Cette fonction a été introduite en 6.5.0. Elle permet d'autoriser VTherm a stopper un équipement qui n'a pas besoin d'être allumé et de le redémarrer lorsque les conditions le réclame. Cette fonction est munie de 3 réglages qui permettent d'arrêter / relancer plus ou moins rapidement l'équipement. + +Pour l'utiliser, vous devez : +1. Ajouter la fonction `Avec démmarrage et extinction automatique` dans le menu 'Fonctions', +2. Paramétrer le niveau de détection dans l'option 'Allumage/extinction automatique' qui s'affiche lorsque la fonction a été activée. Vous choisissez le niveau de détection entre 'Lent', 'Moyen' et 'Rapide'. Les arrêts/relances seront plus nombreux avec le niveau 'Rapide'. + +Une fois paramétré, vous aurez maintenant une nouvelle entité de type `switch` qui vous permet d'autoriser ou non l'arrêt/relance automatique sans toucher à la configuration. Cette entité est disponible sur l'appareil VTherm et se nomme `switch._enable_auto_start_stop`. Cochez la pour autoriser le démarrage et extinction automatique. + +L'algorithme de détection est décrit [ici](https://github.com/jmcollin78/versatile_thermostat/issues/585). + +### Pour un thermostat de type ```thermostat_over_valve```: +![image](images/config-linked-entity3.png) +Vous pouvez choisir jusqu'à entité du domaine ```number``` ou ```ìnput_number``` qui vont commander les vannes. +L'algorithme à utiliser est aujourd'hui limité à TPI est disponible. Voir [algorithme](#algorithme). + +Il est possible de choisir un thermostat over valve qui commande une climatisation en cochant la case "AC Mode". Dans ce cas, seul le mode refroidissement sera visible. + +## Configurez les coefficients de l'algorithme TPI + +Si vous avez choisi un thermostat de type ```over_switch``` ou ```over_valve``` et que vous sélectionnez l'option "TPI" vous menu, vous arriverez sur cette page : + +![image](images/config-tpi.png) + +Vous devez donner : +1. le coefficient coef_int de l'algorithme TPI, +2. le coefficient coef_ext de l'algorithme TPI + + +Pour plus d'informations sur l'algorithme TPI et son réglage, veuillez vous référer à [algorithm](#algorithm). + +## Configurer les températures préréglées + +Le mode préréglé (preset) vous permet de préconfigurer la température ciblée. Utilisé en conjonction avec Scheduler (voir [scheduler](#even-better-with-scheduler-component) vous aurez un moyen puissant et simple d'optimiser la température par rapport à la consommation électrique de votre maison. Les préréglages gérés sont les suivants : + - **Eco** : l'appareil est en mode d'économie d'énergie + - **Confort** : l'appareil est en mode confort + - **Boost** : l'appareil tourne toutes les vannes à fond + + Si le mode AC est utilisé, vous pourrez aussi configurer les températures lorsque l'équipement en mode climatisation. + +**Aucun** est toujours ajouté dans la liste des modes, car c'est un moyen de ne pas utiliser les preset mais une **température manuelle** à la place. + +Les pré-réglages se font (depuis v6.0) directement depuis les entités du VTherm ou de la configuration centrale si vous utilisez la configuration centrale. + +> ![Astuce](images/tips.png) _*Notes*_ +> 1. En modifiant manuellement la température cible, réglez le préréglage sur Aucun (pas de préréglage). De cette façon, vous pouvez toujours définir une température cible même si aucun préréglage n'est disponible. +> 2. Le préréglage standard ``Away`` est un préréglage caché qui n'est pas directement sélectionnable. Versatile Thermostat utilise la gestion de présence ou la gestion de mouvement pour régler automatiquement et dynamiquement la température cible en fonction d'une présence dans le logement ou d'une activité dans la pièce. Voir [gestion de la présence](#configure-the-presence-management). +> 3. Si vous utilisez la gestion du délestage, vous verrez un préréglage caché nommé ``power``. Le préréglage de l'élément chauffant est réglé sur « puissance » lorsque des conditions de surpuissance sont rencontrées et que le délestage est actif pour cet élément chauffant. Voir [gestion de l'alimentation](#configure-the-power-management). +> 4. si vous utilisez la configuration avancée, vous verrez le préréglage défini sur ``sécurité`` si la température n'a pas pu être récupérée après un certain délai +> 5. Si vous ne souhaitez pas utiliser le préréglage, indiquez 0 comme température. Le préréglage sera alors ignoré et ne s'affichera pas dans le composant front + +## Configurer les portes/fenêtres en allumant/éteignant les thermostats + +Vous devez avoir choisi la fonctionnalité ```Avec détection des ouvertures``` dans la première page pour arriver sur cette page. +La détecttion des ouvertures peut se faire de 2 manières: +1. soit avec un capteur placé sur l'ouverture (mode capteur), +2. soit en détectant une chute brutale de température (mode auto) + +### Le mode capteur +En mode capteur, vous devez renseigner les informations suivantes: +![image](images/config-window-sensor.png) + +1. un identifiant d'entité d'un **capteur de fenêtre/porte**. Cela devrait être un binary_sensor ou un input_boolean. L'état de l'entité doit être 'on' lorsque la fenêtre est ouverte ou 'off' lorsqu'elle est fermée +2. un **délai en secondes** avant tout changement. Cela permet d'ouvrir rapidement une fenêtre sans arrêter le chauffage. + + +### Le mode auto +En mode auto, la configuration est la suivante: +![image](images/config-window-auto.png) + +1. un seuil de détection en degré par minute. Lorsque la température chute au delà de ce seuil, le thermostat s'éteindra. Plus cette valeur est faible et plus la détection sera rapide (en contre-partie d'un risque de faux positif), +2. un seuil de fin de détection en degré par minute. Lorsque la chute de température repassera au-dessus cette valeur, le thermostat se remettra dans le mode précédent (mode et preset), +3. une durée maximale de détection. Au delà de cette durée, le thermostat se remettra dans son mode et preset précédent même si la température continue de chuter. + +Pour régler les seuils il est conseillé de commencer avec les valeurs de référence et d'ajuster les seuils de détection. Quelques essais m'ont donné les valeurs suivantes (pour un bureau): +- seuil de détection : 0,05 °C/min +- seuil de non détection: 0 °C/min +- durée max : 60 min. + +Un nouveau capteur "slope" a été ajouté pour tous les thermostats. Il donne la pente de la courbe de température en °C/min (ou °K/min). Cette pente est lissée et filtrée pour éviter les valeurs abérrantes des thermomètres qui viendraient pertuber la mesure. +![image](images/temperature-slope.png) + +Pour bien régler il est conseillé d'affocher sur un même graphique historique la courbe de température et la pente de la courbe (le "slope") : +![image](images/window-auto-tuning.png) + +Et c'est tout ! votre thermostat s'éteindra lorsque les fenêtres seront ouvertes et se rallumera lorsqu'il sera fermé. + +> ![Astuce](images/tips.png) _*Notes*_ +> 1. Si vous souhaitez utiliser **plusieurs capteurs de porte/fenêtre** pour automatiser votre thermostat, créez simplement un groupe avec le comportement habituel (https://www.home-assistant.io/integrations/binary_sensor.group/) +> 2. Si vous n'avez pas de capteur de fenêtre/porte dans votre chambre, laissez simplement l'identifiant de l'entité du capteur vide, +> 3. **Un seul mode est permis**. On ne peut pas configurer un thermostat avec un capteur et une détection automatique. Les 2 modes risquant de se contredire, il n'est pas possible d'avoir les 2 modes en même temps, +> 4. Il est déconseillé d'utiliser le mode automatique pour un équipement soumis à des variations de température fréquentes et normales (couloirs, zones ouvertes, ...) + +## Configurer le mode d'activité ou la détection de mouvement + +Si vous avez choisi la fonctionnalité ```Avec détection de mouvement```, cliquez sur 'Valider' sur la page précédente et vous y arriverez : + +![image](images/config-motion.png) + +Nous allons maintenant voir comment configurer le nouveau mode Activité. +Ce dont nous avons besoin: +- un **capteur de mouvement**. ID d'entité d'un capteur de mouvement. Les états du capteur de mouvement doivent être « on » (mouvement détecté) ou « off » (aucun mouvement détecté) +- une durée de **délai de mouvement** (en secondes) définissant combien de temps nous attendons la confirmation du mouvement avant de considérer le mouvement. Ce paramètre peut être supérieur à la temporision de votre détecteur de mouvement, sinon la détection se fera à chaque mouvement signalé par le détecteur, +- une durée de fin **délai de mouvement** (en secondes) définissant combien de temps nous attendons la confirmation d'une fin de mouvement avant de ne plus considérer le mouvement. +- un **préréglage de "mouvement" **. Nous utiliserons la température de ce préréglage lorsqu'une activité sera détectée. +- un **préréglage "pas de mouvement"**. Nous utiliserons la température de ce deuxième préréglage lorsqu'aucune activité n'est détectée. + +Alors imaginons que nous voulions avoir le comportement suivant : +- nous avons une pièce avec un thermostat réglé en mode activité, le mode "mouvement" choisi est confort (21,5°C), le mode "pas de mouvement" choisi est Eco (18.5°C) et la temporisation du mouvement est de 30 sec lors de la détection et de 5 minutes sur fin de détection. +- la pièce est vide depuis un moment (aucune activité détectée), la température de cette pièce est de 18,5° +- quelqu'un entre dans la pièce, une activité est détectée si le mouvement est présent pendant au moins 30 sec. La température passe alors à 21,5° +- si le mouvement est présent pendant moins de 30 sec (passage rapide), la température reste sur 18,5°, +- imaginons que la température soit passée sur 21,5°, lorsque la personne quitte la pièce, au bout de 5 min la température est ramenée à 18,5°. +- si la personne revient avant les 5 minutes, la température reste sur 21,5° + +Pour que cela fonctionne, le thermostat doit être en mode préréglé « Activité ». + +> ![Astuce](images/tips.png) _*Notes*_ + 1. Sachez que comme pour les autres modes prédéfinis, ``Activity`` ne sera proposé que s'il est correctement configuré. En d'autres termes, les 4 clés de configuration doivent être définies si vous souhaitez voir l'activité dans l'interface de l'assistant domestique + +## Configurer la gestion de la puissance + +Si vous avez choisi la fonctionnalité ```Avec détection de la puissance```, cliquez sur 'Valider' sur la page précédente et vous arriverez ici : + +![image](images/config-power.png) + +Cette fonction vous permet de réguler la consommation électrique de vos radiateurs. Connue sous le nom de délestage, cette fonction vous permet de limiter la consommation électrique de votre appareil de chauffage si des conditions de surpuissance sont détectées. Donnez un **capteur à la consommation électrique actuelle de votre maison**, un **capteur à la puissance max** qu'il ne faut pas dépasser, la **consommation électrique totale des équipements du VTherm** (en étape 1 de la configuration) et l'algorithme ne démarrera pas un radiateur si la puissance maximale sera dépassée après le démarrage du radiateur. + +Notez que toutes les valeurs de puissance doivent avoir les mêmes unités (kW ou W par exemple). +Cela vous permet de modifier la puissance maximale au fil du temps à l'aide d'un planificateur ou de ce que vous voulez. + +> ![Astuce](images/tips.png) _*Notes*_ +> 1. En cas de délestage, le radiateur est réglé sur le préréglage nommé ```power```. Il s'agit d'un préréglage caché, vous ne pouvez pas le sélectionner manuellement. +> 2. Je l'utilise pour éviter de dépasser la limite de mon contrat d'électricité lorsqu'un véhicule électrique est en charge. Cela crée une sorte d'autorégulation. +> 3. Gardez toujours une marge, car la puissance max peut être brièvement dépassée en attendant le calcul du prochain cycle typiquement ou par des équipements non régulés. +> 4. Si vous ne souhaitez pas utiliser cette fonctionnalité, laissez simplement l'identifiant des entités vide +> 5. Si vous controlez plusieurs radiateurs, la **consommation électrique de votre chauffage** renseigné doit correspondre à la somme des puissances. + +## Configurer la présence (ou l'absence) + +Si sélectionnée en première page, cette fonction vous permet de modifier dynamiquement la température de tous les préréglages du thermostat configurés lorsque personne n'est à la maison ou lorsque quelqu'un rentre à la maison. Pour cela, vous devez configurer la température qui sera utilisée pour chaque préréglage lorsque la présence est désactivée. Lorsque le capteur de présence s'éteint, ces températures seront utilisées. Lorsqu'il se rallume, la température "normale" configurée pour le préréglage est utilisée. Voir [gestion des préréglages](#configure-the-preset-temperature). +Pour configurer la présence remplissez ce formulaire : + +![image](images/config-presence.png) + +Pour cela, vous devez configurer : +1. Un **capteur d'occupation** dont l'état doit être 'on' ou 'home' si quelqu'un est présent ou 'off' ou 'not_home' sinon, +2. La **température utilisée en Eco** prédéfinie en cas d'absence, +3. La **température utilisée en Confort** préréglée en cas d'absence, +4. La **température utilisée en Boost** préréglée en cas d'absence + +Si le mode AC est utilisé, vous pourrez aussi configurer les températures lorsque l'équipement en mode climatisation. + +ATTENTION : les groupes de personnes ne fonctionnent pas en tant que capteur de présence. Ils ne sont pas reconnus comme un capteur de présence. Vous devez utiliser, un template comme décrit ici [Utilisation d'un groupe de personnes comme capteur de présence](#utilisation-dun-groupe-de-personnes-comme-capteur-de-présence). + +> ![Astuce](images/tips.png) _*Notes*_ +> 1. le changement de température est immédiat et se répercute sur le volet avant. Le calcul prendra en compte la nouvelle température cible au prochain calcul du cycle, +> 2. vous pouvez utiliser le capteur direct person.xxxx ou un groupe de capteurs de Home Assistant. Le capteur de présence gère les états ``on`` ou ``home`` comme présents et les états ``off`` ou ``not_home`` comme absents. + +## Configuration avancée + +Ces paramètres permettent d'affiner le réglage du thermostat. +Le formulaire de configuration avancée est le suivant : + +![image](images/config-advanced.png) + +Le premier délai (minimal_activation_delay_sec) en secondes est le délai minimum acceptable pour allumer le chauffage. Lorsque le calcul donne un délai de mise sous tension inférieur à cette valeur, le chauffage reste éteint. + +Le deuxième délai (``security_delay_min``) est le délai maximal entre deux mesures de température avant de régler le préréglage sur ``security``. Si le capteur de température ne donne plus de mesures de température, le thermostat et le radiateur passeront en mode ``security`` après ce délai. Ceci est utile pour éviter une surchauffe si la batterie de votre capteur de température est trop faible. + +Le troisième paramétre (``security_min_on_percent``) est la valeur minimal de ``on_percent`` en dessous de laquelle le préréglage sécurité ne sera pas activé. Ce paramètre permet de ne pas mettre en sécurité un thermostat, si le radiateur piloté ne chauffe pas suffisament. +Mettre ce paramètre à ``0.00`` déclenchera le préréglage sécurité quelque soit la dernière consigne de chauffage, à l'inverse ``1.00`` ne déclenchera jamais le préréglage sécurité ( ce qui revient à désactiver la fonction). + +Le quatrième param§tre (``security_default_on_percent``) est la valeur de ``on_percent`` qui sera utilisée lorsque le thermostat passe en mode ``security``. Si vous mettez ``0`` alors le thermostat sera coupé lorsqu'il passe en mode ``security``, mettre 0,2% par exemple permet de garder un peu de chauffage (20% dans ce cas), même en mode ``security``. Ca évite de retrouver son logement totalement gelé lors d'une panne de thermomètre. + +Note: les paramètres `security_min_on_percent` et `security_default_on_percent` ne s'applique pas aux VTherms `over_climate`. + +Depuis la version 5.3 il est possible de désactiver la mise en sécurité suite à une absence de données du thermomètre extérieure. En effet, celui-ci ayant la plupart du temps un impact faible sur la régulation (dépendant de votre paramètrage), il est possible qu'il soit absent sans mettre en danger le logement. Pour cela, il faut ajouter les lignes suivantes dans votre `configuration.yaml` : +``` +versatile_thermostat: +... + safety_mode: + check_outdoor_sensor: false +``` +Par défaut, le thermomètre extérieur peut déclencher une mise en sécurité si il n'envoit plus de valeur. + +Voir [exemple de réglages](#examples-tuning) pour avoir des exemples de réglage communs + +> ![Astuce](images/tips.png) _*Notes*_ +> 1. Lorsque le capteur de température viendra à la vie et renverra les températures, le préréglage sera restauré à sa valeur précédente, +> 2. Attention, deux températures sont nécessaires : la température interne et la température externe et chacune doit donner la température, sinon le thermostat sera en préréglage "security", +> 3. Un service est disponible qui permet de régler les 3 paramètres de sécurité. Ca peut servir à adapter la fonction de sécurité à votre usage, +> 4. Pour un usage naturel, le ``security_default_on_percent`` doit être inférieur à ``security_min_on_percent``, +> 5. Les thermostats de type ``thermostat_over_climate`` ne sont pas concernés par le mode security. + +## Le contrôle centralisé + +Depuis la release 5.2, si vous avez défini une configuration centralisée, vous avez une nouvelle entité nommée `select.central_mode` qui permet de piloter tous les VTherms avec une seule action. Pour qu'un VTherm soit contrôlable de façon centralisée, il faut que son attribut de configuration nommé `use_central_mode` soit vrai. + +Cette entité se présente sous la forme d'une liste de choix qui contient les choix suivants : +1. `Auto` : le mode 'normal' dans lequel chaque VTherm se comporte comme dans les versions précédentes, +2. `Stooped` : tous les VTherms sont mis à l'arrêt (`hvac_off`), +3. `Heat only` : tous les VTherms sont mis en mode chauffage lorsque ce mode est supporté par le VTherm, sinon il est stoppé, +3. `Cool only` : tous les VTherms sont mis en mode climatisation lorsque ce mode est supporté par le VTherm, sinon il est stoppé, +4. `Frost protection` : tous les VTherms sont mis en preset hors-gel lorsque ce preset est supporté par le VTherm, sinon il est stoppé. + +Il est donc possible de contrôler tous les VTherms (que ceux que l'on désigne explicitement) avec un seul contrôle. +Exemple de rendu : + +![central_mode](images/central_mode.png) + +## Le contrôle d'une chaudière centrale + +Depuis la release 5.3, vous avez la possibilité de contrôler une chaudière centralisée. A partir du moment où il est possible de déclencher ou stopper cette chaudière depuis Home Assistant, alors Versatile Thermostat va pouvoir la commander directement. + +Le principe mis en place est globalement le suivant : +1. une nouvelle entité de type `binary_sensor` et nommée par défaut `binary_sensor.central_boiler` est ajoutée, +2. dans la configuration des VTherms vous indiquez si le VTherm doit contrôler la chaudière. En effet, dans une installation hétérogène, certains VTherm doivent commander la chaudière et d'autres non. Vous devez donc indiquer dans chaque configuration de VTherm si il contrôle la chaudière ou pas, +3. le `binary_sensor.central_boiler` écoute les changements d'états des équipements des VTherm marqués comme contrôlant la chaudière, +4. dès que le nombre d'équipements pilotés par le VTherm demandant du chauffage (ie son `hvac_action` passe à `Heating`) dépasse un seuil paramétrable, alors le `binary_sensor.central_boiler` passe à `on` et **si un service d'activation a été configuré, alors ce service est appelé**, +5. si le nombre d'équipements nécessitant du chauffage repasse en dessous du seuil, alors le `binary_sensor.central_boiler` passe à `off` et si **un service de désactivation a été configuré, alors ce service est appelé**, +6. vous avez accès à deux entités : + - une de type `number` nommé par défaut `number.boiler_activation_threshold`, donne le seuil de déclenchement. Ce seuil est en nombre d'équipements (radiateurs) qui demande du chauffage. + - une de type `sensor` nommé par défaut `sensor.nb_device_active_for_boiler`, donne le nombre d'équipements qui demande du chauffage. Par exemple, un VTherm ayant 4 vannes dont 3 demandes du chauffage fera passé ce capteur à 3. Seuls les équipements des VTherms qui sont marqués pour contrôler la chaudière centrale sont comptabilisés. + +Vous avez donc en permanence, les informations qui permettent de piloter et régler le déclenchement de la chaudière. + +Toutes ces entités sont rattachés au service de configuration centrale : +![Les entités pilotant la chaudière](images/entitites-central-boiler.png) + +### Configuration +Pour configurer cette fonction, vous devez avoir une configuration centralisée (cf. [Configuration](#configuration)) et cochez la case 'Ajouter une chuadière centrale' : + +![Ajout d'une chaudière centrale](images/config-central-boiler-1.png) + +Sur la page suivante vous pouvez donner la configuration des services à appeler lors de l'allumage / extinction de la chaudière : + +![Ajout d'une chaudière centrale](images/config-central-boiler-2.png) + +Les services se configurent comme indiqués dans la page : +1. le format général est `entity_id/service_id[/attribut:valeur]` (où `/attribut:valeur` est facultatif), +2. `entity_id` est le nom de l'entité qui commande la chaudière sous la forme `domain.entity_name`. Par exemple: `switch.chaudiere` pour les chaudière commandée par un switch ou `climate.chaudière` pour une chaudière commandée par un thermostat ou tout autre entité qui permet le contrôle de la chaudière (il n'y a pas de limitation). On peut aussi commuter des entrées (`helpers`) comme des `input_boolean` ou `input_number`. +3. `service_id` est le nom du service à appeler sous la forme `domain.service_name`. Par exemple: `switch.turn_on`, `switch.turn_off`, `climate.set_temperature`, `climate.set_hvac_mode` sont des exemples valides. +4. pour certain service vous aurez besoin d'un paramètre. Cela peut être le 'Mode CVC' `climate.set_hvac_mode` ou la température cible pour `climate.set_temperature`. Ce paramètre doit être configuré sous la forme `attribut:valeur` en fin de chaine. + +Exemples (à ajuster à votre cas) : +- `climate.chaudiere/climate.set_hvac_mode/hvac_mode:heat` : pour allumer le thermostat de la chaudière en mode chauffage, +- `climate.chaudiere/climate.set_hvac_mode/hvac_mode:off` : pour stopper le thermostat de la chaudière, +- `switch.pompe_chaudiere/switch.turn_on` : pour allumer le swicth qui alimente la pompe de la chaudière, +- `switch.pompe_chaudiere/switch.turn_off` : pour allumer le swicth qui alimente la pompe de la chaudière, +- ... + +### Comment trouver le bon service ? +Pour trouver le services a utiliser, le mieux est d'aller dans "Outils de développement / Services", chercher le service a appelé, l'entité à commander et l'éventuel paramètre à donner. +Cliquez sur 'Appeler le service'. Si votre chaudière s'allume vous avez la bonne configuration. Passez alors en mode Yaml et recopiez les paramètres. + +Exemple: + +Sous "Outils de développement / Service" : + +![Configuration du service](images/dev-tools-turnon-boiler-1.png) + +En mode yaml : + +![Configuration du service](images/dev-tools-turnon-boiler-2.png) + +Le service à configurer est alors le suivant: `climate.empty_thermostast/climate.set_hvac_mode/hvac_mode:heat` (notez la suppression du blanc dans `hvac_mode:heat`) + +Faite alors de même pour le service d'extinction et vous êtes parés. + +### Les évènements + +A chaque allumage ou extinction réussie de la chaudière un évènement est envoyé par Versatile Thermostat. Il peut avantageusement être capté par une automatisation, par exemple pour notifier un changement. +Les évènements ressemblent à ça : + +Un évènement d'allumage : +``` +event_type: versatile_thermostat_central_boiler_event +data: + central_boiler: true + entity_id: binary_sensor.central_boiler + name: Central boiler + state_attributes: null +origin: LOCAL +time_fired: "2024-01-14T11:33:52.342026+00:00" +context: + id: 01HM3VZRJP3WYYWPNSDAFARW1T + parent_id: null + user_id: null +``` + +Un évènement d'extinction : +``` +event_type: versatile_thermostat_central_boiler_event +data: + central_boiler: false + entity_id: binary_sensor.central_boiler + name: Central boiler + state_attributes: null +origin: LOCAL +time_fired: "2024-01-14T11:43:52.342026+00:00" +context: + id: 01HM3VZRJP3WYYWPNSDAFBRW1T + parent_id: null + user_id: null +``` + +### Avertissement + +> ![Astuce](images/tips.png) _*Notes*_ +> Le contrôle par du logiciel ou du matériel de type domotique d'une chaudière centrale peut induire des risques pour son bon fonctionnement. Assurez-vous avant d'utiliser ces fonctions, que votre chaudière possède bien des fonctions de sécurité et que celles-ci fonctionnent. Allumer une chaudière si tous les robinets sont fermés peut générer de la sur-pression par exemple. + +
+Synthèse des paramètres + +## Synthèse des paramètres + +| Paramètre | Libellé | "over switch" | "over climate" | "over valve" | "configuration centrale" | +| ----------------------------------------- | --------------------------------------------------------------------------------- | ------------- | ------------------- | ------------ | ------------------------ | +| ``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 | X | +| ``cycle_min`` | Durée du cycle (minutes) | X | X | X | - | +| ``temp_min`` | Température minimale permise | X | X | X | X | +| ``temp_max`` | Température maximale permise | X | X | X | X | +| ``device_power`` | Puissance de l'équipement | X | X | X | - | +| ``use_central_mode`` | Autorisation du contrôle centralisé | 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 | - | - | - | +| ``heater_keep_alive`` | Intervalle de rafraichissement du switch | 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 | X | +| ``tpi_coef_ext`` | Coefficient à utiliser pour le delta de température externe | X | - | X | X | +| ``frost_temp`` | Température en preset Hors-gel | X | 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 | X | +| ``window_auto_open_threshold`` | Seuil haut de chute de température pour la détection automatique (en °/min) | X | 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 | X | +| ``window_auto_max_duration`` | Durée maximum d'une extinction automatique (en min) | X | 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 | X | +| ``motion_preset`` | Preset à utiliser si mouvement détecté | X | X | X | X | +| ``no_motion_preset`` | Preset à utiliser si pas de mouvement détecté | X | X | X | X | +| ``power_sensor_entity_id`` | Capteur de puissance totale (entity id) | X | X | X | X | +| ``max_power_sensor_entity_id`` | Capteur de puissance Max (entity id) | X | X | X | X | +| ``power_temp`` | Température si délestaqe | X | X | X | X | +| ``presence_sensor_entity_id`` | Capteur de présence entity id (true si quelqu'un est présent) | X | X | X | - | +| ``minimal_activation_delay`` | Délai minimal d'activation | X | - | - | X | +| ``security_delay_min`` | Délai maximal entre 2 mesures de températures | X | - | X | X | +| ``security_min_on_percent`` | Pourcentage minimal de puissance pour passer en mode sécurité | X | - | 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 | - | - | - | +| ``auto_fan_mode`` | Mode de ventilation automatique | - | X | - | - | +| ``auto_regulation_use_device_temp`` | Utilisation de la température interne du sous-jacent | - | X | - | - | +| ``use_central_boiler_feature`` | Ajout du controle d'une chaudière centrale | - | - | - | X | +| ``central_boiler_activation_service`` | Service d'activation de la chaudière | - | - | - | X | +| ``central_boiler_deactivation_service`` | Service de desactivation de la chaudière | - | - | - | X | +| ``used_by_controls_central_boiler`` | Indique si le VTherm contrôle la chaudière centrale | X | X | X | - | +| ``use_auto_start_stop_feature`` | Indique si la fonction de démarrage/extinction automatique est activée | - | X | - | - | +| ``auto_start_stop_lvel`` | Le niveau de détection de l'auto start/stop | - | X | - | - | +
+ +# Exemples de réglage + +## Chauffage électrique +- cycle : entre 5 et 10 minutes, +- minimal_activation_delay_sec : 30 secondes + +## Chauffage central (chauffage gaz ou fuel) +- cycle : entre 30 et 60 min, +- minimal_activation_delay_sec : 300 secondes (à cause du temps de réponse) + +## Le capteur de température alimenté par batterie +- security_delay_min : 60 min (parce que ces capteurs sont paresseux) +- security_min_on_percent : 0,5 (50% - on passe en preset ``security`` si le radiateur chauffait plus de 50% du temps) +- security_default_on_percent : 0,1 (10% - en preset ``security``, on garde un fond de chauffe de 20% du temps) + +Il faut comprendre ces réglages comme suit : + +> Si le thermomètre n'envoie plus la température pendant 1 heure et que le pourcentage de chauffe (``on_percent``) était supérieur à 50 %, alors on ramène ce pourcentage de chauffe à 10 %. + +A vous d'adapter ces réglages à votre cas ! + +Ce qui est important c'est de ne pas prendre trop de risque avec ces paramètres : supposez que vous êtes absent pour une longue période, que les piles de votre thermomètre arrivent en fin de vie, votre radiateur va chauffer 10% du temps pendant toute la durée de la panne. + +Versatile Thermostat vous permet d'être notifié lorsqu'un évènement de ce type survient. Mettez en place, les alertes qui vont bien dès l'utilisation de ce thermostat. Cf. (#notifications) + +## Capteur de température réactif (sur secteur) +- security_delay_min : 15 min +- security_min_on_percent : 0,7 (70% - on passe en preset ``security`` si le radiateur chauffait plus de 70% du temps) +- security_default_on_percent : 0,25 (25% - en preset ``security``, on garde un fond de chauffe de 25% du temps) + +## Mes presets +Ceci est juste un exemple de la façon dont j'utilise le préréglage. A vous de vous adapter à votre configuration mais cela peut être utile pour comprendre son fonctionnement. +``Hors gel`` : 10 °C +``Éco`` : 17 °C +``Confort`` : 19 °C +``Boost`` : 20 °C + +Lorsque la présence est désactivée : +``Hors gel`` : 10 °C +``Éco`` : 16,5 °C +``Confort`` : 17 °C +``Boost`` : 18 °C + +Le détecteur de mouvement de mon bureau est configuré pour utiliser ``Boost`` lorsqu'un mouvement est détecté et ``Eco`` sinon. + +# Algorithme +Cette intégration utilise un algorithme proportionnel. Un algorithme proportionnel est utile pour éviter l'oscillation autour de la température cible. Cet algorithme est basé sur un cycle qui alterne le chauffage et l'arrêt du chauffage. La proportion de chauffage par rapport à l'absence de chauffage est déterminée par la différence entre la température et la température cible. Plus grande est la différence et plus grande est la proportion de chauffage à l'intérieur du cycle. + +Cet algorithme fait converger la température et arrête d'osciller. + +## Algorithme TPI +L'algorithme TPI consiste à calculer à chaque cycle un pourcentage d'état On vs Off pour le radiateur en utilisant la température cible, la température actuelle dans la pièce et la température extérieure actuelle. Cet algorithme n'est donc valable que pour les Versatile Thermostat qui régulent : `over_switch` et `over_valve`. + +Le pourcentage est calculé avec cette formule : + + on_percent = coef_int * (température cible - température actuelle) + coef_ext * (température cible - température extérieure) + Ensuite, l'algo fait en sorte que 0 <= on_percent <= 1 + +Les valeurs par défaut pour coef_int et coef_ext sont respectivement : ``0.6`` et ``0.01``. Ces valeurs par défaut conviennent à une pièce standard bien isolée. + +Pour régler ces coefficients, gardez à l'esprit que : +1. **si la température cible n'est pas atteinte** après une situation stable, vous devez augmenter le ``coef_ext`` (le ``on_percent`` est trop bas), +2. **si la température cible est dépassée** après une situation stable, vous devez diminuer le ``coef_ext`` (le ``on_percent`` est trop haut), +3. **si l'atteinte de la température cible est trop lente**, vous pouvez augmenter le ``coef_int`` pour donner plus de puissance au réchauffeur, +4. **si l'atteinte de la température cible est trop rapide et que des oscillations apparaissent** autour de la cible, vous pouvez diminuer le ``coef_int`` pour donner moins de puissance au radiateur. + +En type `over_valve` le `on_percent` est ramené à une valeur entre 0 et 100% et sert directement à commander l'ouverture de la vanne. + +Voir quelques situations à [examples](#some-results). + +# Capteurs + +Avec le thermostat sont disponibles des capteurs qui permettent de visualiser les alertes et l'état interne du thermostat. Ils sont disponibles dans les entités de l'appareil associé au thermostat : + +![image](images/thermostat-sensors.png) + +Dans l'ordre, il y a : +1. l'entité principale climate de commande du thermostat, +2. l'énergie consommée par le thermostat (valeur qui s'incrémente en permanence), +3. l'heure de réception de la dernière température extérieure, +4. l'heure de réception de la dernière température intérieure, +5. la puissance moyenne de l'appareil sur le cycle (pour les TPI seulement), +6. le temps passé à l'état éteint dans le cycle (TPI seulement), +7. le temps passé à l'état allumé dans le cycle (TPI seulement), +8. l'état de délestage, +9. le pourcentage de puissance sur le cycle (TPI seulement), +10. l'état de présence (si la gestion de la présence est configurée), +11. l'état de sécurité, +12. l'état de l'ouverture (si la gestion des ouvertures est configurée), +13. l'état du mouvement (si la gestion du mouvements est configurée) +14. le pourcentage d'ouverture de la vanne (pour le type `over_valve`) + +Pour colorer les capteurs, ajouter ces lignes et personnalisez les au besoin, dans votre configuration.yaml : + +``` +frontend: + themes: + versatile_thermostat_theme: + state-binary_sensor-safety-on-color: "#FF0B0B" + state-binary_sensor-power-on-color: "#FF0B0B" + state-binary_sensor-window-on-color: "rgb(156, 39, 176)" + state-binary_sensor-motion-on-color: "rgb(156, 39, 176)" + state-binary_sensor-presence-on-color: "lightgreen" + state-binary_sensor-running-on-color: "orange" +``` +et choisissez le thème ```versatile_thermostat_theme``` dans la configuration du panel. Vous obtiendrez quelque-chose qui va ressembler à ça : + +![image](images/colored-thermostat-sensors.png) + +# Services + +Cette implémentation personnalisée offre des services spécifiques pour faciliter l'intégration avec d'autres composants Home Assistant. + +## Forcer la présence/occupation +Ce service permet de forcer l'état de présence indépendamment du capteur de présence. Cela peut être utile si vous souhaitez gérer la présence via un service et non via un capteur. Par exemple, vous pouvez utiliser votre réveil pour forcer l'absence lorsqu'il est allumé. + +Le code pour appeler ce service est le suivant : +``` +service : versatile_thermostat.set_presence +Les données: + présence : "off" +cible: + entity_id : climate.my_thermostat +``` + +## Modifier la température des préréglages +Ce service est utile si vous souhaitez modifier dynamiquement la température préréglée. Au lieu de changer de préréglage, certains cas d'utilisation doivent modifier la température du préréglage. Ainsi, vous pouvez garder le Programmateur inchangé pour gérer le préréglage et ajuster la température du préréglage. +Si le préréglage modifié est actuellement sélectionné, la modification de la température cible est immédiate et sera prise en compte au prochain cycle de calcul. + +Vous pouvez modifier l'une ou les deux températures (lorsqu'elles sont présentes ou absentes) de chaque préréglage. + +Utilisez le code suivant pour régler la température du préréglage : +``` +service : versatile_thermostat.set_preset_temperature +date: + preset : boost + temperature : 17,8 + temperature_away : 15 +target: + entity_id : climate.my_thermostat +``` + +Ou pour changer le pré-réglage du mode Air Conditionné (AC) ajoutez un préfixe `_ac`` au nom du preset comme ceci : +``` +service: versatile_thermostat.set_preset_temperature +data: + preset: boost_ac + temperature: 25 + temperature_away: 30 +target: + entity_id: climate.my_thermostat +``` + +> ![Astuce](images/tips.png) _*Notes*_ + - après un redémarrage, les préréglages sont réinitialisés à la température configurée. Si vous souhaitez que votre changement soit permanent, vous devez modifier le préréglage de la température dans la configuration de l'intégration. + +## Modifier les paramètres de sécurité +Ce service permet de modifier dynamiquement les paramètres de sécurité décrits ici [Configuration avancée](#configuration-avancée). +Si le thermostat est en mode ``security`` les nouveaux paramètres sont appliqués immédiatement. + +Pour changer les paramètres de sécurité utilisez le code suivant : +``` +service : versatile_thermostat.set_security +data: + min_on_percent: "0.5" + default_on_percent: "0.1" + delay_min: 60 +target: + entity_id : climate.my_thermostat +``` + +## ByPass Window Check +Ce service permet d'activer ou non un bypass de la vérification des fenetres. +Il permet de continuer à chauffer même si la fenetre est detectée ouverte. +Mis à ``true`` les modifications de status de la fenetre n'auront plus d'effet sur le thermostat, remis à ``false`` cela s'assurera de désactiver le thermostat si la fenetre est toujours ouverte. + +Pour changer le paramètre de bypass utilisez le code suivant : +``` +service : versatile_thermostat.set_window_bypass +data: + window_bypass: true +target: + entity_id : climate.my_thermostat +``` + +# 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: + +- ``versatile_thermostat_security_event`` : un thermostat entre ou sort du preset ``security`` +- ``versatile_thermostat_power_event`` : un thermostat entre ou sort du preset ``power`` +- ``versatile_thermostat_temperature_event`` : une ou les deux mesures de température d'un thermostat n'ont pas été mis à jour depuis plus de `security_delay_min`` minutes +- ``versatile_thermostat_hvac_mode_event`` : le thermostat est allumé ou éteint. Cet évènement est aussi diffusé au démarrage du thermostat +- ``versatile_thermostat_preset_event`` : un nouveau preset est sélectionné sur le thermostat. Cet évènement est aussi diffusé au démarrage du thermostat +- ``versatile_thermostat_central_boiler_event`` : un évènement indiquant un changement dans l'état de la chaudière. + +Si vous avez bien suivi, lorsqu'un thermostat passe en mode sécurité, 3 évènements sont déclenchés : +1. ``versatile_thermostat_temperature_event`` pour indiquer qu'un thermomètre ne répond plus, +2. ``versatile_thermostat_preset_event`` pour indiquer le passage en preset ```security```, +3. ``versatile_thermostat_hvac_mode_event`` pour indiquer l'extinction éventuelle du thermostat + +Chaque évènement porte les valeurs clés de l'évènement (températures, preset courant, puissance courante, ...) ainsi que les états du thermostat. + +Vous pouvez très facilement capter ses évènements dans une automatisation par exemple pour notifier les utilisateurs. + +# Attributs personnalisés + +Pour régler l'algorithme, vous avez accès à tout le contexte vu et calculé par le thermostat via des attributs dédiés. Vous pouvez voir (et utiliser) ces attributs dans l'IHM "Outils de développement / états" de HA. Entrez votre thermostat et vous verrez quelque chose comme ceci : +![image](images/dev-tools-climate.png) + +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 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) | +| ``is_controlled_by_central_mode`` | True si le VTherm peut être controlé de façon centrale | +| ``last_central_mode`` | Le dernier mode central utilisé (None si le VTherm n'est pas controlé en central) | +| ``is_used_by_central_boiler`` | Indique si le VTherm peut contrôler la chaudière centrale | +| ``auto_start_stop_enable`` | Indique si le VTherm est autorisé à s'auto démarrer/arrêter | +| ``auto_start_stop_level`` | Indique le niveau d'auto start/stop | +| ``hvac_off_reason`` | Indique la raison de l'arrêt (hvac_off) du VTherm. Ce peut être Window, Auto-start/stop ou Manuel | + +# Quelques résultats + +**Convergence de la température vers la cible configurée par preset:** +![image](images/results-1.png) + +[Cycle de marche/arrêt calculé par l'intégration :](https://) +![image](images/results-2.png) + +**Coef_int trop élevé (oscillations autour de la cible)** +![image](images/results-3.png) + +**Évolution du calcul de l'algorithme** +![image](images/results-4.png) +Voir le code de ce composant [[ci-dessous](#even-better-with-apex-chart-to-tune-your-thermostat)] + +**Thermostat finement réglé** +Merci [impuR_Shozz](https://forum.hacf.fr/u/impur_shozz/summary) ! +On peut voir une stabilité autour de la température cible (consigne) et lorsqu'à cible le on_percent (puissance) est proche de 0,3 ce qui semble une très bonne valeur. + +![image](images/results-fine-tuned.png) + +Enjoy ! + +# Encore mieux + +## Bien mieux avec le Versatile Thermostat UI Card +Une carte spéciale pour le Versatile Thermostat a été développée (sur la base du Better Thermostat). Elle est dispo ici [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card) et propose une vision moderne de tous les status du VTherm : + +![image](https://github.com/jmcollin78/versatile-thermostat-ui-card/blob/master/assets/1.png?raw=true) + +## Encore mieux avec le composant Scheduler ! + +Afin de profiter de toute la puissance du Versatile Thermostat, je vous invite à l'utiliser avec https://github.com/nielsfaber/scheduler-component +En effet, le composant scheduler propose une gestion de la base climatique sur les modes prédéfinis. Cette fonctionnalité a un intérêt limité avec le thermostat générique mais elle devient très puissante avec le Versatile Thermostat : + +À partir d'ici, je suppose que vous avez installé Versatile Thermostat et Scheduler Component. + +Dans Scheduler, ajoutez un planning : + +![image](https://user-images.githubusercontent.com/1717155/119146454-ee1a9d80-ba4a-11eb-80ae-3074c3511830.png) + +Choisissez le groupe "climat", choisissez une (ou plusieurs) entité(s), sélectionnez "MAKE SCHEME" et cliquez sur suivant : +(il est possible de choisir "SET PRESET", mais je préfère utiliser "MAKE SCHEME") + +![image](https://user-images.githubusercontent.com/1717155/119147210-aa746380-ba4b-11eb-8def-479a741c0ba7.png) + +Définissez votre schéma de mode et enregistrez : + + +![image](https://user-images.githubusercontent.com/1717155/119147784-2f5f7d00-ba4c-11eb-9de4-5e62ff5e71a8.png) + +Dans cet exemple, j'ai réglé le mode ECO pendant la nuit et le jour lorsqu'il n'y a personne à la maison BOOST le matin et CONFORT le soir. + + +J'espère que cet exemple vous aidera, n'hésitez pas à me faire part de vos retours ! + +## Encore bien mieux avec la custom:simple-thermostat front integration +Le ``custom:simple-thermostat`` [ici](https://github.com/nervetattoo/simple-thermostat) est une excellente intégration qui permet une certaine personnalisation qui s'adapte bien à ce thermostat. +Vous pouvez avoir quelque chose comme ça très facilement ![image](images/simple-thermostat.png) +Exemple de configuration : + +``` + type: custom:simple-thermostat + entity: climate.thermostat_sam2 + layout: + step: row + label: + temperature: T° + state: Etat + hide: + state: false + control: + hvac: + _name: Mode + preset: + _name: Preset + sensors: + - entity: sensor.total_puissance_radiateur_sam2 + icon: mdi:lightning-bolt-outline + header: + toggle: + entity: input_boolean.etat_ouverture_porte_sam + name: Porte sam +``` + +Vous pouvez personnaliser ce composant à l'aide du composant HACS card-mod pour ajuster les couleurs des alertes. Exemple pour afficher en rouge les alertes sécurité et délestage : + +``` + card_mod: + style: | + {% if is_state('binary_sensor.thermostat_chambre_security_state', 'on') %} + ha-card .body .sensor-heading ha-icon[icon="mdi:alert-outline"] { + color: red; + } + {% endif %} + {% if is_state('binary_sensor.thermostat_chambre_overpowering_state', 'on') %} + ha-card .body .sensor-heading ha-icon[icon="mdi:flash"] { + color: red; + } + {% endif %} +``` +![image](images/custom-css-thermostat.png) + +## Toujours mieux avec Plotly pour régler votre thermostat +Vous pouvez obtenir une courbe comme celle présentée dans [some results](#some-results) avec une sorte de configuration de graphique Plotly uniquement en utilisant les attributs personnalisés du thermostat décrits [ici](#custom-attributes) : + +Remplacez les valeurs entre [[ ]] par les votres. +``` +- type: custom:plotly-graph + entities: + - entity: '[[climate]]' + attribute: temperature + yaxis: y1 + name: Consigne + - entity: '[[climate]]' + attribute: current_temperature + yaxis: y1 + name: T° + - entity: '[[climate]]' + attribute: ema_temp + yaxis: y1 + name: Ema + - entity: '[[climate]]' + attribute: regulated_target_temperature + yaxis: y1 + name: Regulated T° + - entity: '[[slope]]' + name: Slope + fill: tozeroy + yaxis: y9 + fillcolor: rgba(100, 100, 100, 0.3) + line: + color: rgba(100, 100, 100, 0.9) + hours_to_show: 4 + refresh_interval: 10 + height: 800 + config: + scrollZoom: true + layout: + margin: + r: 50 + legend: + x: 0 + 'y': 1.2 + groupclick: togglegroup + title: + side: top right + yaxis: + visible: true + position: 0 + yaxis9: + visible: true + fixedrange: false + range: + - -0.5 + - 0.5 + position: 1 + xaxis: + rangeselector: + 'y': 1.1 + x: 0.7 + buttons: + - count: 1 + step: hour + - count: 12 + step: hour + - count: 1 + step: day + - count: 7 + step: day +``` + +Exemple de courbes obtenues avec Plotly : + +![image](images/plotly-curves.png) + +## Et toujours de mieux en mieux avec l'AappDaemon NOTIFIER pour notifier les évènements +Cette automatisation utilise l'excellente App Daemon nommée NOTIFIER développée par Horizon Domotique que vous trouverez en démonstration [ici](https://www.youtube.com/watch?v=chJylIK0ASo&ab_channel=HorizonDomotique) et le code est [ici](https://github.com/jlpouffier/home-assistant-config/blob/master/appdaemon/apps/notifier.py). Elle permet de notifier les utilisateurs du logement lorsqu'un des évènements touchant à la sécurité survient sur un des Versatile Thermostats. + +C'est un excellent exemple de l'utilisation des notifications décrites ici [notification](#notifications). + +``` +alias: Surveillance Mode Sécurité chauffage +description: Envoi une notification si un thermostat passe en mode sécurité ou power +trigger: + - platform: event + event_type: versatile_thermostat_security_event + id: versatile_thermostat_security_event + - platform: event + event_type: versatile_thermostat_power_event + id: versatile_thermostat_power_event + - platform: event + event_type: versatile_thermostat_temperature_event + id: versatile_thermostat_temperature_event +condition: [] +action: + - choose: + - conditions: + - condition: trigger + id: versatile_thermostat_security_event + sequence: + - event: NOTIFIER + event_data: + action: send_to_jmc + title: >- + Radiateur {{ trigger.event.data.name }} - {{ + trigger.event.data.type }} Sécurité + message: >- + Le radiateur {{ trigger.event.data.name }} est passé en {{ + trigger.event.data.type }} sécurité car le thermomètre ne répond + plus.\n{{ trigger.event.data }} + callback: + - title: Stopper chauffage + event: stopper_chauffage + image_url: /media/local/alerte-securite.jpg + click_url: /lovelace-chauffage/4 + icon: mdi:radiator-off + tag: radiateur_security_alerte + persistent: true + - conditions: + - condition: trigger + id: versatile_thermostat_power_event + sequence: + - event: NOTIFIER + event_data: + action: send_to_jmc + title: >- + Radiateur {{ trigger.event.data.name }} - {{ + trigger.event.data.type }} Délestage + message: >- + Le radiateur {{ trigger.event.data.name }} est passé en {{ + trigger.event.data.type }} délestage car la puissance max est + dépassée.\n{{ trigger.event.data }} + callback: + - title: Stopper chauffage + event: stopper_chauffage + image_url: /media/local/alerte-delestage.jpg + click_url: /lovelace-chauffage/4 + icon: mdi:radiator-off + tag: radiateur_power_alerte + persistent: true + - conditions: + - condition: trigger + id: versatile_thermostat_temperature_event + sequence: + - event: NOTIFIER + event_data: + action: send_to_jmc + title: >- + Le thermomètre du radiateur {{ trigger.event.data.name }} ne + répond plus + message: >- + Le thermomètre du radiateur {{ trigger.event.data.name }} ne + répond plus depuis longtemps.\n{{ trigger.event.data }} + image_url: /media/local/thermometre-alerte.jpg + click_url: /lovelace-chauffage/4 + icon: mdi:radiator-disabled + tag: radiateur_thermometre_alerte + persistent: true +mode: queued +max: 30 +``` + + +# Les contributions sont les bienvenues ! + +Si vous souhaitez contribuer, veuillez lire les [directives de contribution](CONTRIBUTING.md) + +# Dépannages + +
+Utilisation d'un Heatzy + +## Utilisation d'un Heatzy + +L'utilisation d'un Heatzy est possible à la condition d'utiliser un switch virtuel sur ce modèle : +``` +- platform: template + switches: + chauffage_sdb: + unique_id: chauffage_sdb + friendly_name: Chauffage salle de bain + value_template: "{{ is_state_attr('climate.salle_de_bain', 'preset_mode', 'comfort') }}" + icon_template: >- + {% if is_state_attr('climate.salle_de_bain', 'preset_mode', 'comfort') %} + mdi:radiator + {% elif is_state_attr('climate.salle_de_bain', 'preset_mode', 'away') %} + mdi:snowflake + {% else %} + mdi:radiator-disabled + {% endif %} + turn_on: + service: climate.set_preset_mode + entity_id: climate.salle_de_bain + data: + preset_mode: "comfort" + turn_off: + service: climate.set_preset_mode + entity_id: climate.salle_de_bain + data: + preset_mode: "eco" +``` +Merci à @gael pour cet exemple. +
+ +
+Utilisation d'un radiateur avec un fil pilote + +## Utilisation d'un radiateur avec un fil pilote +Comme pour le Heatzy ci-dessus vous pouvez utiliser un switch virtuel qui va changer le preset de votre radiateur en fonction de l'état d'allumage du VTherm. +Exemple : +``` +- platform: template + switches: + radiateur_soan: + friendly_name: radiateur_soan_inv + value_template: "{{ is_state('switch.radiateur_soan', 'off') }}" + turn_on: + service: switch.turn_off + data: + entity_id: switch.radiateur_soan + turn_off: + service: switch.turn_on + data: + entity_id: switch.radiateur_soan + icon_template: "{% if is_state('switch.radiateur_soan', 'on') %}mdi:radiator-disabled{% else %}mdi:radiator{% endif %}" +``` + +
+ +
+Utilisation d'un radiateur avec un module Nodon + +## Utilisation d'un radiateur avec un fil pilote +Comme pour le Heatzy ci-dessus vous pouvez utiliser un switch virtuel qui va changer le preset de votre radiateur en fonction de l'état d'allumage du VTherm. +Exemple : +``` +- platform: template + switches: + chauffage_chb_parents: + unique_id: chauffage_chb_parents + friendly_name: Chauffage chambre parents + value_template: "{{ is_state('select.fp_chb_parents_pilot_wire_mode', 'comfort') }}" + icon_template: >- + {% if is_state('select.fp_chb_parents_pilot_wire_mode', 'comfort') %} + mdi:radiator + {% elif is_state('select.fp_chb_parents_pilot_wire_mode', 'frost_protection') %} + mdi:snowflake + {% else %} + mdi:radiator-disabled + {% endif %} + turn_on: + service: select.select_option + target: + entity_id: select.fp_chb_parents_pilot_wire_mode + data: + option: comfort + turn_off: + service: select.select_option + target: + entity_id: select.fp_chb_parents_pilot_wire_mode + data: + option: eco +``` + +
+ +
+Seul le premier radiateur chauffe + +## Seul le premier radiateur chauffe + +En mode `over_switch` si plusieurs radiateurs sont configurés pour un même VTherm, l'alllumage va se faire de façon séquentiel pour lisser au plus possible les pics de consommation. +Cela est tout à fait normal et voulu. C'est décrit ici : [Pour un thermostat de type ```thermostat_over_switch```](#pour-un-thermostat-de-type-thermostat_over_switch) + +
+ +
+Le radiateur chauffe alors que la température de consigne est dépassée ou ne chauffe pas alors que la température de la pièce est bien en-dessous de la consigne + +## Le radiateur chauffe alors que la température de consigne est dépassée ou ne chauffe pas alors que la température de la pièce est bien en-dessous de la consigne + +### Type `over_switch` ou `over_valve` +Avec un VTherm de type `over_switch` ou `over_valve`, ce défaut montre juste que les paramètres de l'algorithme TPI sont mal réglés. Voir [Algorithme TPI](#algorithme-tpi) pour optimiser les réglages. + +### Type `over_climate` +Avec un VTherm de type `over_climate`, la régulation est faite par le `climate` sous-jacent directement et VTherm se contente de lui transmettre les consignes. Donc si le radiateur chauffe alors que la température de consigne est dépassée, c'est certainement que sa mesure de température interne est biaisée. Ca arrive très souvent avec les TRV et les clims réversibles qui ont un capteur de température interne, soit trop près de l'élément de chauffe (donc trop froid l'hiver). + +Exemple de discussion autour de ces sujets: [#348](https://github.com/jmcollin78/versatile_thermostat/issues/348), [#316](https://github.com/jmcollin78/versatile_thermostat/issues/316), [#312](https://github.com/jmcollin78/versatile_thermostat/discussions/312), [#278](https://github.com/jmcollin78/versatile_thermostat/discussions/278) + +Pour s'en sortir, VTherm est équipé d'une fonction nommée auto-régulation qui permet d'adapter la consigne envoyée au sous-jacent jusqu'à ce que la consigne soit respectée. Cette fonction permet de compenser le biais de mesure des thermomètres internes. Si le biais est important la régulation doit être importante. Voir [L'auto-régulation](#lauto-régulation) pour configurer l'auto-régulation. +
+ +
+Régler les paramètres de détection d'ouverture de fenêtre en mode auto + +## Régler les paramètres de détection d'ouverture de fenêtre en mode auto + +Si vous n'arrivez pas à régler la fonction de détection des ouvertures en mode auto (cf. [auto](#le-mode-auto)), vous pouvez essayer de modifier les paramètres de l'algorithme de lissage de la température. +En effet, la détection automatique d'ouverture est basée sur le calcul de la pente de la température (slope). Pour éviter les artefacts due à un capteur de température imprécis, cette pente est calculée sur une température lissée avec un algorithme de lissage nommée Exponential Moving Average (Moyenne mobile exponentielle). +Cet algorithm possède 3 paramètres : +1. `lifecycle_sec` : la durée en secondes prise en compte pour le lissage. Plus elle est forte et plus le lissage sera important mais plus il y aura de délai de détection, +2. `max_alpha` : si deux mesures de température sont éloignées dans le temps, la deuxième aura un poid beaucoup fort. Le paramètre permet de limiter le poid d'une mesure qui arrive bien après la précédente. Cette valeur doit être comprise entre 0 et 1. Plus elle est faible et moins les valeurs éloignées sont prises en compte. La valeur par défaut est de 0,5. Cela fait que lorsqu'une nouvelle valeur de température ne pèsera jamais plus que la moitié de la moyenne mobile, +3. `precision` : le nombre de chiffre après la virgule conservée pour le calcul de la moyenne mobile. + +Pour changer ses paramètres, il faut modifier le fichier `configuration.yaml` et ajouter la section suivante (les valeurs sont les valeurs par défaut): +``` +versatile_thermostat: + short_ema_params: + max_alpha: 0.5 + halflife_sec: 300 + precision: 2 +``` + +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 ? + +## Pourquoi mon Versatile Thermostat se met en Securite ? +Le mode sécurité est possible sur tous les types de VTherm . 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](images/security-mode-symptome1.png) + +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](images/security-mode-symptome2.png) + +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. +
+ +
+Utilisation d'un groupe de personnes comme capteur de présence + +## Utilisation d'un groupe de personnes comme capteur de présence + +Malheureusement, les groupes de personnes ne sont pas reconnus comme des capteurs de présence. On ne peut donc pas les utiliser directement dans VTherm. +Le contournement est de créer un template de binary_sensor avec le code suivant : + +Fichier `template.yaml` : +``` +- binary_sensor: + - name: maison_occupee + unique_id: maison_occupee + state: "{{is_state('person.person1', 'home') or is_state('person.person2', 'home') or is_state('input_boolean.force_presence', 'on')}}" + device_class: occupancy +``` + +Vous noterez dans cet exemple, l'utilisation d'un input_boolean nommé force_presence qui permet de forcer le capteur à `True` et ainsi de forcer les VTherm qui l'utilise avec présence active. Ca permet par exemple, de forcer un pré-chauffage du logement lors du départ du travail, ou lorsqu'une personne non reconnue nativement dans HA est présente. + +Fichier `configuration.yaml`: +``` +... +template: !include templates.yaml +... +``` +
+ +
+Activer les logs du Versatile Thermostat + +## Activer les logs du Versatile Thermostat +Des fois, vous aurez besoin d'activer les logs pour afiner les analyses. Pour cela, éditer le fichier `logger.yaml` de votre configuration et configurer les logs comme suit : +``` +default: xxxx +logs: + custom_components.versatile_thermostat: info +``` +Vous devez recharger la configuration yaml (Outils de dev / Yaml / Toute la configuration Yaml) ou redémarrer Home Assistant pour que ce changement soit pris en compte. + +
+ +*** + +[versatile_thermostat]: https://github.com/jmcollin78/versatile_thermostat +[buymecoffee]: https://www.buymeacoffee.com/jmcollin78 +[buymecoffeebadge]: https://img.shields.io/badge/Buy%20me%20a%20beer-%245-orange?style=for-the-badge&logo=buy-me-a-beer +[commits-shield]: https://img.shields.io/github/commit-activity/y/jmcollin78/versatile_thermostat.svg?style=for-the-badge +[commits]: https://github.com/jmcollin78/versatile_thermostat/commits/master +[hacs]: https://github.com/custom-components/hacs +[hacs_badge]: https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=for-the-badge +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge +[forum]: https://community.home-assistant.io/ +[license-shield]: https://img.shields.io/github/license/jmcollin78/versatile_thermostat.svg?style=for-the-badge +[maintenance-shield]: https://img.shields.io/badge/maintainer-Joakim%20Sørensen%20%40ludeeus-blue.svg?style=for-the-badge +[releases-shield]: https://img.shields.io/github/release/jmcollin78/versatile_thermostat.svg?style=for-the-badge +[releases]: https://github.com/jmcollin78/versatile_thermostat/releases diff --git a/documentation/en/over-climate.md b/documentation/en/over-climate.md new file mode 100644 index 0000000..e6d0a81 --- /dev/null +++ b/documentation/en/over-climate.md @@ -0,0 +1,86 @@ +# `over_climate` Type Thermostat + +- [`over_climate` Type Thermostat](#over_climate-type-thermostat) + - [Prerequisites](#prerequisites) + - [Configuration](#configuration) + - [The Underlying Entities](#the-underlying-entities) + - [AC Mode](#ac-mode) + - [Self-Regulation](#self-regulation) + - [Auto-Fan (Auto Ventilation)](#auto-fan-auto-ventilation) + - [Compensating for the Internal Temperature of the Underlying Equipment](#compensating-for-the-internal-temperature-of-the-underlying-equipment) + - [Specific Functions](#specific-functions) + +## Prerequisites + +The installation should look like this: + +![installation `over_climate`](images/over-climate-schema.png) + +1. The user or automation, or the Scheduler, sets a setpoint via a preset or directly using a temperature. +2. Periodically, the internal thermometer (2), external thermometer (2b), or equipment's internal thermometer (2c) sends the measured temperature. The internal thermometer should be placed in a relevant spot for the user's comfort: ideally in the middle of the living space. Avoid placing it too close to a window or equipment. +3. Based on the setpoint values, differences, and self-regulation parameters (see [auto-regulation](self-regulation.md)), VTherm will calculate a setpoint to send to the underlying `climate` entity. +4. The `climate` entity controls the equipment using its own protocol. +5. Depending on the chosen regulation options, VTherm may directly control the opening of a thermostatic valve or calibrate the equipment so that its internal temperature reflects the room temperature. + +## Configuration + +Click on the "Underlying Entities" option from the menu, and you will see this configuration page: + +![image](images/config-linked-entity2.png) + +### The Underlying Entities +In the "Equipment to Control" list, you should add the `climate` entities that will be controlled by VTherm. Only entities of type `climate` are accepted. + +### AC Mode + +You can choose an `over_climate` thermostat to control an air conditioner (reversible or not) by checking the "AC Mode" box. If the equipment allows it, both 'Heating' and 'Cooling' modes will be available. + +### Self-Regulation + +In `over_climate` mode, the device uses its own regulation algorithm: it turns on/off and pauses automatically based on the setpoint transmitted by VTherm through its `climate` entity. It uses its internal thermometer and the received setpoint. + +Depending on the equipment, this internal regulation may vary in quality. It greatly depends on the quality of the equipment, the functionality of its internal thermometer, and its internal algorithm. To improve equipment that regulates poorly, VTherm offers a way to adjust the setpoint it sends by increasing or decreasing it based on the room temperature measured by VTherm, rather than the internal temperature. + +The self-regulation options are described in detail [here](self-regulation.md). + +To avoid overloading the underlying equipment (some may beep unpleasantly, others run on batteries, etc.), two thresholds are available to limit the number of requests: +1. Regulation Threshold: a threshold in ° below which a new setpoint will not be sent. If the last setpoint was 22°, the next one will be 22° ± regulation threshold. +2. Minimum Regulation Period (in minutes): a minimum time interval below which a new setpoint will not be sent. If the last setpoint was sent at 11:00, the next one cannot be sent before 11:00 + minimum regulation period. + +Improperly setting these thresholds may prevent correct self-regulation as new setpoints won't be sent. + +### Auto-Fan (Auto Ventilation) + +This mode, introduced in version 4.3, forces the use of ventilation if the temperature difference is significant. By activating ventilation, heat distribution occurs more quickly, which helps achieve the target temperature faster. +You can choose which ventilation level to activate from the following options: Low, Medium, High, Turbo. + +Of course, your underlying equipment must have ventilation, and it must be controllable for this to work. If your equipment doesn't include the Turbo mode, the High mode will be used instead. Once the temperature difference becomes small again, the ventilation will switch to a "normal" mode, which depends on your equipment (in order): `Mute`, `Auto`, `Low`. The first available mode for your equipment will be chosen. + +### Compensating for the Internal Temperature of the Underlying Equipment + +Sometimes, the internal thermometer of the underlying equipment (TRV, air conditioner, etc.) is inaccurate to the point that self-regulation is insufficient. This happens when the internal thermometer is placed too close to the heat source. The internal temperature rises much faster than the room temperature, leading to regulation failures. +Example: +1. Room temperature is 18°, setpoint is 20°. +2. The internal temperature of the equipment is 22°. +3. If VTherm sends a setpoint of 21° (= 20° + 1° of self-regulation), the equipment will not heat because its internal temperature (22°) is higher than the setpoint (21°). + +To address this, a new optional feature has been added in version 5.4: ![Use of Internal Temperature](images/config-use-internal-temp.png) + +When activated, this feature adds the difference between the internal temperature and the room temperature to the setpoint to force heating. +In the above example, the difference is +4° (22° - 18°), so VTherm will send 25° (21° + 4°) to the equipment, forcing it to heat. + +This difference is calculated for each underlying equipment since each has its own internal temperature. For example, a VTherm connected to three TRVs, each with its own internal temperature. + +This results in much more effective self-regulation that avoids issues with large internal temperature differences due to faulty sensors. + +However, be aware that some internal temperatures fluctuate so quickly and inaccurately that they completely skew the calculation. In this case, it’s better to disable this option. + +You will find advice on how to adjust these settings properly on the page [self-regulation](self-regulation.md). + +## Specific Functions + +Specific functions can be configured through a dedicated option in the menu. + +The specific functions that require configuration for this type of VTherm are: +1. Auto-Start/Stop: Automatic start and stop of VTherm based on usage forecasts. This is described here: [auto-start/stop function](feature-auto-start-stop.md). +2. If valve regulation is chosen, the TPI algorithm configuration is accessible from the menu. See ([algorithms](algorithms.md)). \ No newline at end of file diff --git a/documentation/en/over-switch.md b/documentation/en/over-switch.md new file mode 100644 index 0000000..b86effc --- /dev/null +++ b/documentation/en/over-switch.md @@ -0,0 +1,55 @@ +# `over_switch` Type Thermostat + +- [`over_switch` Type Thermostat](#over_switch-type-thermostat) + - [Prerequisites](#prerequisites) + - [Configuration](#configuration) + - [The Underlying Entities](#the-underlying-entities) + - [Keep-Alive](#keep-alive) + - [AC Mode](#ac-mode) + - [Command Inversion](#command-inversion) + + +## Prerequisites + +The installation should look like this: + +![installation `over_switch`](images/over-switch-schema.png) + +1. The user or automation, or the Scheduler, sets a setpoint via a preset or directly using a temperature. +2. Periodically, the internal thermometer (2) or external thermometer (2b) sends the measured temperature. The internal thermometer should be placed in a relevant spot for the user's comfort: ideally in the middle of the living space. Avoid placing it too close to a window or too near the radiator. +3. Based on the setpoint values, the different temperatures, and the TPI algorithm parameters (see [TPI](algorithms.md#lalgorithme-tpi)), VTherm will calculate a percentage of the on-time. +4. It will then regularly command the turning on and off of the underlying `switch` entities. +5. These underlying switch entities will control the physical switch. +6. The physical switch will turn the radiator on or off. + +> The on-time percentage is recalculated each cycle, which is what allows regulating the room temperature. + +## Configuration + +Click on the "Underlying Entities" option from the menu, and you will see this configuration page: + +![image](images/config-linked-entity.png) + +### The Underlying Entities +In the "Equipment to Control" list, you should add the switches that will be controlled by VTherm. Only `switch` or `input_boolean` entities are accepted. + +The algorithm currently available is TPI. See [algorithm](#algorithm). +If multiple entities are configured, the thermostat staggers the activations to minimize the number of switches on at any given time. This allows for better power distribution, as each radiator will turn on in turn. + +VTherm will smooth the consumed power as much as possible by alternating activations. Example of staggered activations: + +![image](images/multi-switch-activation.png) + +Of course, if the requested power (`on_percent`) is too high, there will be an overlap of activations. + +### Keep-Alive + +Some equipment requires periodic activation to prevent a safety shutdown. Known as "keep-alive," this function can be activated by entering a non-zero number of seconds in the thermostat's keep-alive interval field. To disable the function or if in doubt, leave it empty or enter zero (default value). + +### AC Mode + +It is possible to choose a `thermostat_over_switch` to control an air conditioner by checking the "AC Mode" box. In this case, only the cooling mode will be visible. + +### Command Inversion + +If your equipment is controlled by a pilot wire with a diode, you may need to check the "Invert the Command" box. This will set the switch to `On` when you need to turn off the equipment and to `Off` when you need to turn it on. The cycle times will be inverted with this option. \ No newline at end of file diff --git a/documentation/en/over-valve.md b/documentation/en/over-valve.md new file mode 100644 index 0000000..8c1bc16 --- /dev/null +++ b/documentation/en/over-valve.md @@ -0,0 +1,30 @@ +# `thermostat_over_valve` Type Thermostat + +> ![Attention](images/tips.png) _*Notes*_ +> 1. The `over_valve` type is often confused with the `over_climate` type equipped with auto-regulation and direct valve control. +> 2. You should only choose this type when you do not have an associated `climate` entity for your _TRV_ in Home Assistant, and if you only have a `number` type entity to control the valve's opening percentage. The `over_climate` with auto-regulation on the valve is much more powerful than the `over_valve` type. + +## Prerequisites + +The installation should be similar to the `over_switch` VTherm setup, except that the controlled equipment is directly the valve of a _TRV_: + +![installation `over_valve`](images/over-valve-schema.png) + +1. The user or automation, or the Scheduler, sets a setpoint via a preset or directly using a temperature. +2. Periodically, the internal thermometer (2) or external thermometer (2b) or internal thermometer of the equipment (2c) sends the measured temperature. The internal thermometer should be placed in a relevant spot for the user's comfort: ideally in the middle of the living space. Avoid placing it too close to a window or too near the equipment. +3. Based on the setpoint values, the different temperatures, and the TPI algorithm parameters (see [TPI](algorithms.md#lalgorithme-tpi)), VTherm will calculate the valve's opening percentage. +4. It will then modify the value of the underlying `number` entities. +5. These underlying `number` entities will control the valve opening rate on the _TRV_. +6. This will regulate the radiator's heating. + +> The opening rate is recalculated each cycle, which allows regulating the room temperature. + +## Configuration + +Click on the "Underlying Entities" option from the menu, and you will see this configuration page, you should add the `number` entities that will be controlled by VTherm. Only `number` or `input_number` entities are accepted. + +![image](images/config-linked-entity3.png) + +The algorithm currently available is TPI. See [algorithm](#algorithm). + +It is possible to choose a `thermostat_over_valve` to control an air conditioner by checking the "AC Mode" box. In this case, only the cooling mode will be visible. \ No newline at end of file diff --git a/documentation/en/presentation.md b/documentation/en/presentation.md new file mode 100644 index 0000000..421bd88 --- /dev/null +++ b/documentation/en/presentation.md @@ -0,0 +1,43 @@ +# When to Use and Not Use It +This thermostat can control 3 types of equipment: +1. A radiator that only works in on/off mode (called `thermostat_over_switch`). The minimum configuration required to use this type of thermostat is: + 1. An equipment like a radiator (a `switch` or equivalent), + 2. A temperature sensor for the room (or an input_number), + 3. An external temperature sensor (consider the weather integration if you don't have one). +2. Another thermostat that has its own modes of operation (called `thermostat_over_climate`). For this type of thermostat, the minimum configuration requires: + 1. Equipment – like air conditioning, a thermostatic valve – controlled by its own `climate` entity. +3. Equipment that can take a value from 0 to 100% (called `thermostat_over_valve`). At 0, heating is off, and at 100% it is fully open. This type allows controlling a thermostatic valve (e.g., Shelly valve) that exposes a `number` type entity, enabling direct control of the valve's opening. Versatile Thermostat regulates the room temperature by adjusting the opening percentage, using both the internal and external temperature sensors, and utilizing the TPI algorithm described below. + +The `over_climate` type allows you to add all the features offered by VersatileThermostat to your existing equipment. The VersatileThermostat `climate` entity will control your underlying `climate` entity, turn it off if windows are open, switch to Eco mode if no one is present, etc. See [here](#pourquoi-un-nouveau-thermostat-implémentation). For this type of thermostat, all heating cycles are controlled by the underlying `climate` entity and not by the Versatile Thermostat itself. An optional auto-regulation function allows Versatile Thermostat to adjust the setpoint temperature to the underlying entity in order to reach the setpoint. + +Installations with a pilot wire and activation diode benefit from an option that allows inverting the on/off control of the underlying radiator. To do this, use the `over_switch` type and check the "Invert command" option. + +# Why a New Thermostat Implementation? + +This component, called __Versatile Thermostat__, manages the following use cases: +- Configuration via the standard integration graphical interface (using the Config Entry flow), +- Full use of **preset mode**, +- Disable preset mode when the temperature is **set manually** on a thermostat, +- Turn off/on a thermostat or change preset when a **door or windows are opened/closed** after a certain delay, +- Change preset when **activity is detected** or not in a room for a defined time, +- Use a **TPI (Time Proportional Interval)** algorithm thanks to [[Argonaute](https://forum.hacf.fr/u/argonaute/summary)], +- Add **load shedding** management or regulation to not exceed a defined total power. When the maximum power is exceeded, a hidden preset of "power" is set on the `climate` entity. When the power goes below the maximum, the previous preset is restored. +- **Presence management**. This feature allows dynamically modifying the preset temperature based on the presence sensor in your home. +- **Actions to interact with the thermostat** from other integrations: you can force presence/non-presence using a service, and you can dynamically change preset temperatures and modify security settings. +- Add sensors to view the thermostat's internal states, +- Centralized control of all Versatile Thermostats to stop them all, set them all to frost protection, force them all to heating mode (in winter), force them all to cooling mode (in summer). +- Control of a central heating boiler and VTherms that must control this boiler. +- Automatic start/stop based on usage prediction for `over_climate`. + +All these functions are configurable either centrally or individually depending on your needs. + +## Incompatibilities +Some TRV type thermostats are known to be incompatible with Versatile Thermostat. This includes the following valves: +1. Danfoss POPP valves with temperature feedback. It is impossible to turn off this valve as it auto-regulates itself, causing conflicts with VTherm. +2. "Homematic" thermostats (and possibly Homematic IP) are known to have issues with Versatile Thermostat due to the limitations of the underlying RF protocol. This problem particularly arises when trying to control multiple Homematic thermostats at once in a single VTherm instance. To reduce service cycle load, you can, for example, group thermostats using Homematic-specific procedures (e.g., using a wall-mounted thermostat) and let Versatile Thermostat control only the wall-mounted thermostat directly. Another option is to control a single thermostat and propagate mode and temperature changes via automation. +3. Heatzy type thermostats that do not support `set_temperature` commands. +4. Rointe type thermostats tend to wake up on their own. The rest works normally. +5. TRVs like Aqara SRTS-A01 and MOES TV01-ZB, which lack the `hvac_action` state feedback to determine whether they are heating or not. Therefore, state feedback is inaccurate, but the rest seems functional. +6. Airwell air conditioners with the "Midea AC LAN" integration. If two VTherm commands are too close together, the air conditioner stops itself. +7. Climates based on the Overkiz integration do not work. It seems impossible to turn off or even change the temperature on these systems. + diff --git a/documentation/en/reference.md b/documentation/en/reference.md new file mode 100644 index 0000000..367cd92 --- /dev/null +++ b/documentation/en/reference.md @@ -0,0 +1,275 @@ +# Reference Documentation + +- [Reference Documentation](#reference-documentation) + - [Parameter Summary](#parameter-summary) +- [Sensors](#sensors) +- [Actions (Services)](#actions-services) + - [Force Presence/Occupation](#force-presenceoccupation) + - [Modify the Preset Temperature](#modify-the-preset-temperature) + - [Modify Security Settings](#modify-security-settings) + - [ByPass Window Check](#bypass-window-check) +- [Events](#events) +- [Custom Attributes](#custom-attributes) + +## Parameter Summary + +| Parameter | Label | "over switch" | "over climate" | "over valve" | "central configuration" | +| ----------------------------------------- | ---------------------------------------------------------- | ------------- | ------------------- | ------------ | ----------------------- | +| ``name`` | Name | X | X | X | - | +| ``thermostat_type`` | Thermostat type | X | X | X | - | +| ``temperature_sensor_entity_id`` | Temperature sensor entity id | X | X (auto-regulation) | X | - | +| ``external_temperature_sensor_entity_id`` | External temperature sensor entity id | X | X (auto-regulation) | X | X | +| ``cycle_min`` | Cycle duration (minutes) | X | X | X | - | +| ``temp_min`` | Minimum allowed temperature | X | X | X | X | +| ``temp_max`` | Maximum allowed temperature | X | X | X | X | +| ``device_power`` | Device power | X | X | X | - | +| ``use_central_mode`` | Enable centralized control | X | X | X | - | +| ``use_window_feature`` | With window detection | X | X | X | - | +| ``use_motion_feature`` | With motion detection | X | X | X | - | +| ``use_power_feature`` | With power management | X | X | X | - | +| ``use_presence_feature`` | With presence detection | X | X | X | - | +| ``heater_entity1_id`` | 1st heater | X | - | - | - | +| ``heater_entity2_id`` | 2nd heater | X | - | - | - | +| ``heater_entity3_id`` | 3rd heater | X | - | - | - | +| ``heater_entity4_id`` | 4th heater | X | - | - | - | +| ``heater_keep_alive`` | Switch refresh interval | X | - | - | - | +| ``proportional_function`` | Algorithm | X | - | - | - | +| ``climate_entity1_id`` | Underlying thermostat | - | X | - | - | +| ``climate_entity2_id`` | 2nd underlying thermostat | - | X | - | - | +| ``climate_entity3_id`` | 3rd underlying thermostat | - | X | - | - | +| ``climate_entity4_id`` | 4th underlying thermostat | - | X | - | - | +| ``valve_entity1_id`` | 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 of air conditioning (AC)? | X | X | X | - | +| ``tpi_coef_int`` | Coefficient for internal temperature delta | X | - | X | X | +| ``tpi_coef_ext`` | Coefficient for external temperature delta | X | - | X | X | +| ``frost_temp`` | Frost preset temperature | X | X | X | X | +| ``window_sensor_entity_id`` | Window sensor (entity id) | X | X | X | - | +| ``window_delay`` | Delay before turn-off (seconds) | X | X | X | X | +| ``window_auto_open_threshold`` | High drop threshold for automatic detection (°/min) | X | X | X | X | +| ``window_auto_close_threshold`` | Low drop threshold for automatic closure detection (°/min) | X | X | X | X | +| ``window_auto_max_duration`` | Maximum duration of automatic turn-off (minutes) | X | X | X | X | +| ``motion_sensor_entity_id`` | Motion sensor entity id | X | X | X | - | +| ``motion_delay`` | Delay before motion is considered (seconds) | X | X | X | - | +| ``motion_off_delay`` | Delay before end of motion is considered (seconds) | X | X | X | X | +| ``motion_preset`` | Preset to use if motion is detected | X | X | X | X | +| ``no_motion_preset`` | Preset to use if no motion is detected | X | X | X | X | +| ``power_sensor_entity_id`` | Total power sensor (entity id) | X | X | X | X | +| ``max_power_sensor_entity_id`` | Max power sensor (entity id) | X | X | X | X | +| ``power_temp`` | Temperature during load shedding | X | X | X | X | +| ``presence_sensor_entity_id`` | Presence sensor entity id (true if someone is present) | X | X | X | - | +| ``minimal_activation_delay`` | Minimum activation delay | X | - | - | X | +| ``security_delay_min`` | Maximum delay between two temperature measurements | X | - | X | X | +| ``security_min_on_percent`` | Minimum power percentage to enter security mode | X | - | X | X | +| ``auto_regulation_mode`` | Auto-regulation mode | - | X | - | - | +| ``auto_regulation_dtemp`` | Auto-regulation threshold | - | X | - | - | +| ``auto_regulation_period_min`` | Minimum auto-regulation period | - | X | - | - | +| ``inverse_switch_command`` | Inverse the switch command (for switches with pilot wire) | X | - | - | - | +| ``auto_fan_mode`` | Automatic fan mode | - | X | - | - | +| ``auto_regulation_use_device_temp`` | Use of internal temperature of the underlying device | - | X | - | - | +| ``use_central_boiler_feature`` | Add central boiler control | - | - | - | X | +| ``central_boiler_activation_service`` | Boiler activation service | - | - | - | X | +| ``central_boiler_deactivation_service`` | Boiler deactivation service | - | - | - | X | +| ``used_by_controls_central_boiler`` | Indicates if the VTherm controls the central boiler | X | X | X | - | +| ``use_auto_start_stop_feature`` | Indicates if the auto start/stop feature is enabled | - | X | - | - | +| ``auto_start_stop_level`` | The detection level for auto start/stop | - | X | - | - | + +# Sensors + +With the thermostat, sensors are available to visualize alerts and the internal state of the thermostat. These are available in the entities of the device associated with the thermostat: + +![image](images/thermostat-sensors.png) + +In order, there are: +1. the main ``climate`` entity for thermostat control, +2. the entity allowing the auto-start/stop feature, +3. the entity allowing _VTherm_ to follow changes in the underlying device, +4. the energy consumed by the thermostat (value that increments continuously), +5. the time of receipt of the last external temperature, +6. the time of receipt of the last internal temperature, +7. the average power of the device during the cycle (for TPI only), +8. the time spent in the off state during the cycle (TPI only), +9. the time spent in the on state during the cycle (TPI only), +10. the load shedding state, +11. the power percentage during the cycle (TPI only), +12. the presence state (if presence management is configured), +13. the security state, +14. the window state (if window management is configured), +15. the motion state (if motion management is configured), +16. the valve opening percentage (for `over_valve` type), + +The presence of these entities depends on whether the associated feature is enabled. + +To color the sensors, add these lines and customize them as needed in your `configuration.yaml`: + +```yaml +frontend: + themes: + versatile_thermostat_theme: + state-binary_sensor-safety-on-color: "#FF0B0B" + state-binary_sensor-power-on-color: "#FF0B0B" + state-binary_sensor-window-on-color: "rgb(156, 39, 176)" + state-binary_sensor-motion-on-color: "rgb(156, 39, 176)" + state-binary_sensor-presence-on-color: "lightgreen" + state-binary_sensor-running-on-color: "orange" +``` + +and choose the theme ```versatile_thermostat_theme``` in the panel configuration. You will get something like this: + +![image](images/colored-thermostat-sensors.png) + +# Actions (Services) + +This custom implementation offers specific actions (services) to facilitate integration with other Home Assistant components. + +## Force Presence/Occupation +This service allows you to force the presence state independently of the presence sensor. This can be useful if you want to manage presence via a service rather than a sensor. For example, you can use your alarm to force absence when it is turned on. + +The code to call this service is as follows: + +```yaml +service : versatile_thermostat.set_presence +Les données: + présence : "off" +cible: + entity_id : climate.my_thermostat +``` + +## Modify the Preset Temperature +This service is useful if you want to dynamically change the preset temperature. Instead of switching presets, some use cases require modifying the temperature of the preset. This way, you can keep the scheduler unchanged to manage the preset while adjusting the preset temperature. +If the modified preset is currently selected, the target temperature change is immediate and will be applied in the next calculation cycle. + +You can modify one or both temperatures (when present or absent) of each preset. + +Use the following code to set the preset temperature: +```yaml +service: versatile_thermostat.set_preset_temperature +data: + preset: boost + temperature: 17.8 + temperature_away: 15 +target: + entity_id: climate.my_thermostat +``` + +Or, to change the preset for the Air Conditioning (AC) mode, add the `_ac` prefix to the preset name like this: +```yaml +service: versatile_thermostat.set_preset_temperature +data: + preset: boost_ac + temperature: 25 + temperature_away: 30 +target: + entity_id: climate.my_thermostat +``` + +> ![Tip](images/tips.png) _*Notes*_ +> +> - After a restart, presets are reset to the configured temperature. If you want your change to be permanent, you need to modify the preset temperature in the integration configuration. + +## Modify Security Settings +This service allows you to dynamically modify the security settings described here [Advanced Configuration](#advanced-configuration). +If the thermostat is in ``security`` mode, the new settings are applied immediately. + +To change the security settings, use the following code: +```yaml +service: versatile_thermostat.set_security +data: + min_on_percent: "0.5" + default_on_percent: "0.1" + delay_min: 60 +target: + entity_id: climate.my_thermostat +``` + +## ByPass Window Check +This service allows you to enable or disable a bypass for the window check. +It allows the thermostat to continue heating even if the window is detected as open. +When set to ``true``, changes to the window's status will no longer affect the thermostat. When set to ``false``, the thermostat will be disabled if the window is still open. + +To change the bypass setting, use the following code: +```yaml +service: versatile_thermostat.set_window_bypass +data: + bypass: true +target: + entity_id: climate.my_thermostat +``` + +# Events +The key events of the thermostat are notified via the message bus. +The following events are notified: + +- ``versatile_thermostat_security_event``: the thermostat enters or exits the ``security`` preset +- ``versatile_thermostat_power_event``: the thermostat enters or exits the ``power`` preset +- ``versatile_thermostat_temperature_event``: one or both temperature measurements of the thermostat haven't been updated for more than `security_delay_min`` minutes +- ``versatile_thermostat_hvac_mode_event``: the thermostat is turned on or off. This event is also broadcast at the thermostat's startup +- ``versatile_thermostat_preset_event``: a new preset is selected on the thermostat. This event is also broadcast at the thermostat's startup +- ``versatile_thermostat_central_boiler_event``: an event indicating a change in the boiler's state +- ``versatile_thermostat_auto_start_stop_event``: an event indicating a stop or restart made by the auto-start/stop function + +If you've followed along, when a thermostat switches to security mode, 3 events are triggered: +1. ``versatile_thermostat_temperature_event`` to indicate that a thermometer is no longer responding, +2. ``versatile_thermostat_preset_event`` to indicate the switch to the ``security`` preset, +3. ``versatile_thermostat_hvac_mode_event`` to indicate the potential shutdown of the thermostat + +Each event carries the event's key values (temperatures, current preset, current power, ...) as well as the thermostat's states. + +You can easily capture these events in an automation, for example, to notify users. + +# Custom Attributes + +To adjust the algorithm, you have access to the entire context seen and calculated by the thermostat via dedicated attributes. You can view (and use) these attributes in the "Developer Tools / States" section of HA. Enter your thermostat and you will see something like this: +![image](images/dev-tools-climate.png) + +The custom attributes are as follows: +| Attribute | Meaning | +| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| ``hvac_modes`` | The list of modes supported by the thermostat | +| ``temp_min`` | The minimum temperature | +| ``temp_max`` | The maximum temperature | +| ``preset_modes`` | The presets visible for this thermostat. Hidden presets are not displayed here | +| ``temperature_actuelle`` | The current temperature as reported by the sensor | +| ``temperature`` | The target temperature | +| ``action_hvac`` | The action currently being executed by the heater. Can be idle, heating | +| ``preset_mode`` | The preset currently selected. Can be one of the 'preset_modes' or a hidden preset like power | +| ``[eco/confort/boost]_temp`` | The temperature configured for preset xxx | +| ``[eco/confort/boost]_away_temp`` | The temperature configured for preset xxx when presence is disabled or not_home | +| ``temp_power`` | The temperature used during loss detection | +| ``on_percent`` | The calculated on percentage by the TPI algorithm | +| ``on_time_sec`` | The on period in seconds. Should be ```on_percent * cycle_min``` | +| ``off_time_sec`` | The off period in seconds. Should be ```(1 - on_percent) * cycle_min``` | +| ``cycle_min`` | The calculation cycle in minutes | +| ``function`` | The algorithm used for the 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 preset switching | +| ``saved_target_temp`` | The last temperature used before automatic switching | +| ``window_state`` | The last known state of the window sensor. None if the window is not configured | +| ``window_bypass_state`` | True if the window open detection bypass is enabled | +| ``motion_state`` | The last known state of the motion sensor. None if motion detection is not configured | +| ``overpowering_state`` | The last known state of the overpower sensor. None if power management is not configured | +| ``presence_state`` | The last known state of the presence sensor. None if presence detection is not configured | +| ``security_delay_min`` | The delay before activating security mode when one of the two temperature sensors stops sending measurements | +| ``security_min_on_percent`` | The heating percentage below which the thermostat will not switch to security | +| ``security_default_on_percent`` | The heating percentage used when the thermostat is in security mode | +| ``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 the official climate integration documentation for more information | +| ``valve_open_percent`` | The valve opening percentage | +| ``regulated_target_temperature`` | The target temperature calculated by self-regulation | +| ``is_inversed`` | True if the control is inverted (pilot wire with diode) | +| ``is_controlled_by_central_mode`` | True if the VTherm can be centrally controlled | +| ``last_central_mode`` | The last central mode used (None if the VTherm is not centrally controlled) | +| ``is_used_by_central_boiler`` | Indicates if the VTherm can control the central boiler | +| ``auto_start_stop_enable`` | Indicates if the VTherm is allowed to auto start/stop | +| ``auto_start_stop_level`` | Indicates the auto start/stop level | +| ``hvac_off_reason`` | Indicates the reason for the thermostat's off state (hvac_off). It can be Window, Auto-start/stop, or Manual | + +These attributes will be requested when you need assistance. \ No newline at end of file diff --git a/documentation/en/releases.md b/documentation/en/releases.md new file mode 100644 index 0000000..c2d7c1c --- /dev/null +++ b/documentation/en/releases.md @@ -0,0 +1,50 @@ +# Release Notes + +![New](images/new-icon.png) + +> * **Release 6.8**: +> - Added a new regulation method for `over_climate` type Versatile Thermostats. This method, called 'Direct Valve Control', allows direct control of a TRV valve and possibly an offset to calibrate the internal thermometer of your TRV. This new method has been tested with Sonoff TRVZB and extended to other TRV types where the valve can be directly controlled via `number` entities. More information [here](over-climate.md#lauto-régulation) and [here](self-regulation.md#auto-régulation-par-contrôle-direct-de-la-vanne). + +## **Release 6.5** : + - Added a new feature for the automatic stop and restart of a `VTherm over_climate` [585](https://github.com/jmcollin78/versatile_thermostat/issues/585) + - Improved handling of openings on startup. Allows to memorize and recalculate the state of an opening on Home Assistant restart [504](https://github.com/jmcollin78/versatile_thermostat/issues/504) + +## **Release 6.0** : + - Added `number` domain entities to configure preset temperatures [354](https://github.com/jmcollin78/versatile_thermostat/issues/354) + - Complete redesign of the configuration menu to remove temperatures and use a menu instead of a configuration tunnel [354](https://github.com/jmcollin78/versatile_thermostat/issues/354) + +## **Release 5.4** : + - Added temperature step [#311](https://github.com/jmcollin78/versatile_thermostat/issues/311), + - Added regulation thresholds for `over_valve` to prevent excessive battery drain for TRVs [#338](https://github.com/jmcollin78/versatile_thermostat/issues/338), + - Added an option to use the internal temperature of a TRV to force auto-regulation [#348](https://github.com/jmcollin78/versatile_thermostat/issues/348), + - Added a keep-alive function for `over_switch` VTherms [#345](https://github.com/jmcollin78/versatile_thermostat/issues/345) + +
+Older releases + +> * **Release 5.3** : Added a function to control a central boiler [#234](https://github.com/jmcollin78/versatile_thermostat/issues/234) - more info here: [Central Boiler Control](#le-contrôle-dune-chaudière-centrale). Added the ability to disable security mode for the external thermometer [#343](https://github.com/jmcollin78/versatile_thermostat/issues/343) +> * **Release 5.2** : Added a `central_mode` to control all VTherms centrally [#158](https://github.com/jmcollin78/versatile_thermostat/issues/158). +> * **Release 5.1** : Limitation of values sent to valves and to the underlying climate temperature. +> * **Release 5.0** : Added central configuration to combine configurable attributes [#239](https://github.com/jmcollin78/versatile_thermostat/issues/239). +> * **Release 4.3** : Added an auto-fan mode for `over_climate` type to activate ventilation if temperature difference is large [#223](https://github.com/jmcollin78/versatile_thermostat/issues/223). +> * **Release 4.2** : The temperature curve slope is now calculated in °/hour instead of °/min [#242](https://github.com/jmcollin78/versatile_thermostat/issues/242). Fixed automatic opening detection by adding temperature curve smoothing. +> * **Release 4.1** : Added an **Expert** regulation mode where users can specify their own auto-regulation parameters instead of using pre-programmed ones [#194](https://github.com/jmcollin78/versatile_thermostat/issues/194). +> * **Release 4.0** : Added support for **Versatile Thermostat UI Card**. See [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card). Added a **Slow** regulation mode for slow-latency heating devices [#168](https://github.com/jmcollin78/versatile_thermostat/issues/168). Changed how **power is calculated** for VTherms with multi-underlying equipment [#146](https://github.com/jmcollin78/versatile_thermostat/issues/146). Added support for AC and Heat for VTherms via a switch [#144](https://github.com/jmcollin78/versatile_thermostat/pull/144) +> * **Release 3.8**: Added an **auto-regulation** function for `over_climate` thermostats regulated by the underlying climate. See [Auto-regulation](#lauto-régulation) and [#129](https://github.com/jmcollin78/versatile_thermostat/issues/129). Added the **ability to invert control** for `over_switch` thermostats to address installations with pilot wire and diode [#124](https://github.com/jmcollin78/versatile_thermostat/issues/124). +> * **Release 3.7**: Added the `over_valve` Versatile Thermostat type to control a TRV valve directly or any other dimmer type equipment for heating. Regulation is done directly by adjusting the percentage of opening of the underlying entity: 0 means the valve is off, 100 means the valve is fully open. See [#131](https://github.com/jmcollin78/versatile_thermostat/issues/131). Added a bypass function for opening detection [#138](https://github.com/jmcollin78/versatile_thermostat/issues/138). Added Slovak language support. +> * **Release 3.6**: Added the `motion_off_delay` parameter to improve motion detection handling [#116](https://github.com/jmcollin78/versatile_thermostat/issues/116), [#128](https://github.com/jmcollin78/versatile_thermostat/issues/128). Added AC mode (air conditioning) for `over_switch` VTherm. Prepared the GitHub project to facilitate contributions [#127](https://github.com/jmcollin78/versatile_thermostat/issues/127) +> * **Release 3.5**: Multiple thermostats possible in "thermostat over climate" mode [#113](https://github.com/jmcollin78/versatile_thermostat/issues/113) +> * **Release 3.4**: Bug fix and exposure of preset temperatures for AC mode [#103](https://github.com/jmcollin78/versatile_thermostat/issues/103) +> * **Release 3.3**: Added Air Conditioning (AC) mode. This function allows you to use the AC mode of your underlying thermostat. To use it, you must check the "Use AC Mode" option and define temperature values for presets and away presets. +> * **Release 3.2** : Added the ability to control multiple switches from the same thermostat. In this mode, switches are triggered with a delay to minimize the power required at any given time (minimizing overlap periods). See [Configuration](#sélectionnez-des-entités-pilotées) +> * **Release 3.1** : Added window/door open detection by temperature drop. This new feature automatically stops a radiator when the temperature drops suddenly. See [Auto Mode](#le-mode-auto) +> * **Major Release 3.0** : Added thermostat equipment and associated sensors (binary and non-binary). Much closer to the Home Assistant philosophy, you now have direct access to the energy consumed by the radiator controlled by the thermostat and many other sensors useful for your automations and dashboards. +> * **Release 2.3** : Added measurement of power and energy for the radiator controlled by the thermostat. +> * **Release 2.2** : Added a safety function to prevent leaving a radiator heating indefinitely in case of thermometer failure. +> * **Major Release 2.0** : Added the "over climate" thermostat allowing any thermostat to be transformed into a Versatile Thermostat and gain all its functionalities. + +
+ +> ![Tip](images/tips.png) _*Notes*_ +> +> Complete release notes are available on the [GitHub of the integration](https://github.com/jmcollin78/versatile_thermostat/releases/). \ No newline at end of file diff --git a/documentation/en/self-regulation.md b/documentation/en/self-regulation.md new file mode 100644 index 0000000..188b238 --- /dev/null +++ b/documentation/en/self-regulation.md @@ -0,0 +1,152 @@ +# Self-regulation + +- [Self-regulation](#self-regulation) + - [Self-regulation in Expert Mode](#self-regulation-in-expert-mode) + - [Summary of the Self-regulation Algorithm](#summary-of-the-self-regulation-algorithm) + +You have the option to activate the self-regulation feature only for _VTherms_ of type `over_climate`. + +There are generally two cases: +1. If your underlying device is a _TRV_ and the valve is directly controllable in Home Assistant (e.g., Sonoff TRVZB), this function will allow _VTherm_ to directly manipulate the valve opening to regulate the temperature. The opening is then calculated by a _TPI_-type algorithm (see [here](algorithms.md)). +2. Otherwise, Versatile Thermostat will adjust the temperature setpoint given to the underlying climate to ensure the room temperature actually reaches the setpoint. + +## Configuration + +### Self-regulation by direct valve control + +This type of self-regulation, named `Direct Valve Control`, requires: +1. An entity of type `climate` that is included in the _VTherm_'s underlying devices. +2. An entity of type `number` to control the valve opening rate of the _TRV_. +3. An optional entity of type `number` for calibrating the internal temperature of the underlying device. +4. An optional entity of type `number` to control the valve closure. + +When the chosen self-regulation is `Direct Valve Control` on an _VTherm_ `over_climate`, a new configuration page named `Valve Regulation Configuration` appears: + +![Configuration Menu](images/config-self-regulation-valve-1.png) + +This allows you to configure the valve control entities: + +![Configuration Entities](images/config-self-regulation-valve-2.png) + +You need to provide: +1. As many valve opening control entities as there are underlying devices, and in the same order. These parameters are mandatory. +2. As many temperature calibration entities as there are underlying devices, and in the same order. These parameters are optional; they must either all be provided or none. +3. As many valve closure control entities as there are underlying devices, and in the same order. These parameters are optional; they must either all be provided or none. + +The opening rate calculation algorithm is based on the _TPI_ algorithm described [here](algorithms.md). This is the same algorithm used for _VTherms_ `over_switch` and `over_valve`. + +If a valve closure rate entity is configured, it will be set to 100 minus the opening rate to force the valve into a particular state. + +### Other self-regulation + +In the second case, Versatile Thermostat calculates an offset based on the following information: +1. The current difference between the actual temperature and the setpoint temperature, called the gross error. +2. The accumulation of past errors. +3. The difference between the outdoor temperature and the setpoint. + +These three pieces of information are combined to calculate the offset, which will be added to the current setpoint and sent to the underlying climate. + +Self-regulation is configured with: +1. A regulation degree: + 1. Light - for small self-regulation needs. In this mode, the maximum offset will be 1.5°C. + 2. Medium - for medium self-regulation needs. A maximum offset of 2°C is possible in this mode. + 3. Strong - for high self-regulation needs. The maximum offset is 3°C in this mode, and the self-regulation will react strongly to temperature changes. +2. A self-regulation threshold: the value below which no new regulation will be applied. For example, if at time t the offset is 2°C, and at the next calculation, the offset is 2.4°C, the regulation will not be applied. It will only be applied when the difference between the two offsets is at least equal to this threshold. +3. Minimum period between two self-regulations: this number, expressed in minutes, indicates the duration between two regulation changes. + +These three parameters allow you to adjust the regulation and avoid applying too many regulation changes. Some devices, like TRVs or boilers, don't like frequent setpoint changes. + +> ![Tip](images/tips.png) _*Setup advice*_ +> 1. Do not start self-regulation immediately. Observe how your equipment's natural regulation works. If you notice that the setpoint is not reached or takes too long to reach, start the regulation. +> 2. Start with light self-regulation and keep both parameters at their default values. Wait a few days and check if the situation improves. +> 3. If it's not enough, switch to medium self-regulation and wait for stabilization. +> 4. If it's still not enough, switch to strong self-regulation. +> 5. If it's still not correct, you will need to switch to expert mode to finely adjust the regulation parameters. + +Self-regulation forces the equipment to push further by regularly adjusting its setpoint. This can increase both its consumption and wear. + +#### Self-regulation in Expert Mode + +In **Expert** mode, you can finely adjust the self-regulation parameters to meet your goals and optimize performance. The algorithm calculates the gap between the setpoint and the actual room temperature. This gap is called the error. + +The adjustable parameters are as follows: +1. `kp`: the factor applied to the gross error, +2. `ki`: the factor applied to the accumulated errors, +3. `k_ext`: the factor applied to the difference between the indoor temperature and the outdoor temperature, +4. `offset_max`: the maximum correction (offset) that the regulation can apply, +5. `stabilization_threshold`: a stabilization threshold, which when reached by the error resets the accumulated errors to 0, +6. `accumulated_error_threshold`: the maximum for error accumulation. + +For tuning, the following observations should be considered: +1. `kp * error` will give the offset related to the gross error. This offset is directly proportional to the error and will be 0 when the target is reached. +2. The accumulation of the error helps correct the stabilization curve even if there is still an error. The error accumulates and the offset increases progressively, which should stabilize the temperature around the target. To have a noticeable effect, this parameter should not be too small. A medium value is 30. +3. `ki * accumulated_error_threshold` will give the maximum offset related to the accumulated error. +4. `k_ext` allows immediate (without waiting for accumulated errors) correction when the outdoor temperature is much different from the target temperature. If the stabilization occurs too high when the temperature differences are large, this parameter might be too high. It should be adjustable to zero to allow the first two offsets to do the work. + +The pre-programmed values are as follows: + +**Slow regulation**: + + kp: 0.2 # 20% of the current internal regulation offset are caused by the current difference of target temperature and room temperature + ki: 0.8 / 288.0 # 80% of the current internal regulation offset are caused by the average offset of the past 24 hours + k_ext: 1.0 / 25.0 # this will add 1°C to the offset when it's 25°C colder outdoor than indoor + offset_max: 2.0 # limit to a final offset of -2°C to +2°C + stabilization_threshold: 0.0 # this needs to be disabled as otherwise the long term accumulated error will always be reset when the temp briefly crosses from/to below/above the target + accumulated_error_threshold: 2.0 * 288 # this allows up to 2°C long term offset in both directions + +**Light regulation**: + + kp: 0.2 + ki: 0.05 + k_ext: 0.05 + offset_max: 1.5 + stabilization_threshold: 0.1 + accumulated_error_threshold: 10 + +**Medium regulation**: + + kp: 0.3 + ki: 0.05 + k_ext: 0.1 + offset_max: 2 + stabilization_threshold: 0.1 + accumulated_error_threshold: 20 + +**Strong regulation**: + + """Strong parameters for regulation + A set of parameters which doesn't take into account the external temp + and concentrate on internal temp error + accumulated error. + This should work for cold external conditions which otherwise generate + high external_offset""" + + kp: 0.4 + ki: 0.08 + k_ext: 0.0 + offset_max: 5 + stabilization_threshold: 0.1 + accumulated_error_threshold: 50 + +To use Expert mode, you must declare the values you wish to use for each of these parameters in your `configuration.yaml` as follows. Example for 'Extreme regulation': + +```yaml +versatile_thermostat: + auto_regulation_expert: + kp: 0.6 + ki: 0.1 + k_ext: 0.0 + offset_max: 10 + stabilization_threshold: 0.1 + accumulated_error_threshold: 80 +``` +and of course, configure the auto-regulation mode of the VTherm to Expert mode. All _VTherms_ in **Expert** mode will use the same parameters, it is not possible to have different expert settings. + +To apply the changes, you must either **restart Home Assistant completely** or just the Versatile Thermostat integration (Developer Tools / YAML / Reload Configuration / Versatile Thermostat). + +> ![Tip](images/tips.png) _*Notes*_ +> +> 1. In expert mode, it is rarely necessary to use the option [Compensate the internal temperature of the underlying](over-climate.md#compensate-the-internal-temperature-of-the-underlying). This could result in very high setpoints. + +## Summary of the Auto-Regulation Algorithm + +A summary of the auto-regulation algorithm is described [here](algorithms.md#the-auto-regulation-algorithm-without-valve-control) \ No newline at end of file diff --git a/documentation/en/troubleshooting.md b/documentation/en/troubleshooting.md new file mode 100644 index 0000000..533dff8 --- /dev/null +++ b/documentation/en/troubleshooting.md @@ -0,0 +1,209 @@ + +# Troubleshooting + +- [Troubleshooting](#troubleshooting) + - [Using a Heatzy](#using-a-heatzy) + - [Using a radiator with a pilot wire (Nodon SIN-4-FP-21)](#using-a-radiator-with-a-pilot-wire-nodon-sin-4-fp-21) + - [Only the first radiator heats](#only-the-first-radiator-heats) + - [The radiator heats even though the setpoint temperature is exceeded, or it does not heat when the room temperature is well below the setpoint](#the-radiator-heats-even-though-the-setpoint-temperature-is-exceeded-or-it-does-not-heat-when-the-room-temperature-is-well-below-the-setpoint) + - [Type `over_switch` or `over_valve`](#type-over_switch-or-over_valve) + - [Type `over_climate`](#type-over_climate) + - [Adjust the window open detection parameters in auto mode](#adjust-the-window-open-detection-parameters-in-auto-mode) + - [Why is my Versatile Thermostat going into Safety Mode?](#why-is-my-versatile-thermostat-going-into-safety-mode) + - [How to detect Safety Mode?](#how-to-detect-safety-mode) + - [How to Be Notified When This Happens?](#how-to-be-notified-when-this-happens) + - [How to Fix It?](#how-to-fix-it) + - [Using a Group of People as a Presence Sensor](#using-a-group-of-people-as-a-presence-sensor) + - [Enable Logs for the Versatile Thermostat](#enable-logs-for-the-versatile-thermostat) + + +## Using a Heatzy + +Using a Heatzy or Nodon is possible provided you use a virtual switch with this model: + +```yaml +- platform: template + switches: + chauffage_sdb: + unique_id: chauffage_sdb + friendly_name: Bathroom heating + value_template: "{{ is_state_attr('climate.bathroom', 'preset_mode', 'comfort') }}" + icon_template: >- + {% if is_state_attr('climate.bathroom', 'preset_mode', 'comfort') %} + mdi:radiator + {% elif is_state_attr('climate.bathroom', 'preset_mode', 'away') %} + mdi:snowflake + {% else %} + mdi:radiator-disabled + {% endif %} + turn_on: + service: climate.set_preset_mode + entity_id: climate.bathroom + data: + preset_mode: "comfort" + turn_off: + service: climate.set_preset_mode + entity_id: climate.bathroom + data: + preset_mode: "eco" +``` +Thanks to @gael for this example. + +## Using a radiator with a pilot wire (Nodon SIN-4-FP-21) +As with the Heatzy above, you can use a virtual switch that will change the preset of your radiator based on the VTherm’s on/off state. +Example: + +```yaml +- platform: template + switches: + chauffage_chb_parents: + unique_id: chauffage_chb_parents + friendly_name: Chauffage chambre parents + value_template: "{{ is_state('select.fp_chb_parents_pilot_wire_mode', 'comfort') }}" + icon_template: >- + {% if is_state('select.fp_chb_parents_pilot_wire_mode', 'comfort') %} + mdi:radiator + {% elif is_state('select.fp_chb_parents_pilot_wire_mode', 'frost_protection') %} + mdi:snowflake + {% else %} + mdi:radiator-disabled + {% endif %} + turn_on: + service: select.select_option + target: + entity_id: select.fp_chb_parents_pilot_wire_mode + data: + option: comfort + turn_off: + service: select.select_option + target: + entity_id: select.fp_chb_parents_pilot_wire_mode + data: + option: eco +``` + +## Only the first radiator heats + +In `over_switch` mode, if multiple radiators are configured for the same VTherm, the heating will be triggered sequentially to smooth out the consumption peaks as much as possible. +This is completely normal and intentional. It is described here: [For a thermostat of type ```thermostat_over_switch```](#for-a-thermostat-of-type-thermostat_over_switch) + +## The radiator heats even though the setpoint temperature is exceeded, or it does not heat when the room temperature is well below the setpoint + +### Type `over_switch` or `over_valve` +With a VTherm of type `over_switch` or `over_valve`, this issue simply indicates that the TPI algorithm parameters are not properly configured. See [TPI Algorithm](#tpi-algorithm) to optimize the settings. + +### Type `over_climate` +With a VTherm of type `over_climate`, the regulation is handled directly by the underlying `climate`, and VTherm simply transmits the setpoints to it. So if the radiator is heating even though the setpoint temperature is exceeded, it is likely that its internal temperature measurement is biased. This often happens with TRVs and reversible air conditioners that have an internal temperature sensor, either too close to the heating element (so it's too cold in winter). + +Examples of discussions on these topics: [#348](https://github.com/jmcollin78/versatile_thermostat/issues/348), [#316](https://github.com/jmcollin78/versatile_thermostat/issues/316), [#312](https://github.com/jmcollin78/versatile_thermostat/discussions/312), [#278](https://github.com/jmcollin78/versatile_thermostat/discussions/278) + +To resolve this, VTherm is equipped with a feature called self-regulation, which allows it to adjust the setpoint sent to the underlying device until the setpoint is met. This function compensates for the bias of internal temperature sensors. If the bias is significant, the regulation should also be significant. See [Self-regulation](self-regulation.md) for configuring self-regulation. + +## Adjust the window open detection parameters in auto mode + +If you are unable to configure the automatic window open detection function (see [auto](feature-window.md#auto-mode)), you can try modifying the temperature smoothing algorithm parameters. +Indeed, the automatic window open detection is based on calculating the temperature slope. To avoid artifacts caused by an imprecise temperature sensor, this slope is calculated using a temperature smoothed with an algorithm called Exponential Moving Average (EMA). +This algorithm has 3 parameters: +1. `lifecycle_sec`: the duration in seconds considered for smoothing. The higher it is, the smoother the temperature will be, but the detection delay will also increase. +2. `max_alpha`: if two temperature readings are far apart in time, the second one will carry much more weight. This parameter limits the weight of a reading that comes well after the previous one. This value must be between 0 and 1. The lower it is, the less distant readings are taken into account. The default value is 0.5, meaning that a new temperature reading will never weigh more than half of the moving average. +3. `precision`: the number of digits after the decimal point retained for calculating the moving average. + +To change these parameters, you need to modify the `configuration.yaml` file and add the following section (the values below are the default values): + +```yaml +versatile_thermostat: + short_ema_params: + max_alpha: 0.5 + halflife_sec: 300 + precision: 2 +``` + +These parameters are sensitive and quite difficult to adjust. Please only use them if you know what you’re doing and if your temperature readings are not already smoothed. + +## Why is my Versatile Thermostat going into Safety Mode? + +Safety mode is only available for VTherm types `over_switch` and `over_valve`. It occurs when one of the two thermometers (providing either the room temperature or the external temperature) has not sent a value for more than `security_delay_min` minutes, and the radiator had been heating at least `security_min_on_percent`. See [safety mode](feature-advanced.md#safety-mode) + +Since the algorithm relies on temperature measurements, if they are no longer received by the VTherm, there is a risk of overheating and fire. To prevent this, when the above conditions are detected, heating is limited to the `security_default_on_percent` parameter. This value should therefore be reasonably low (10% is a good value). It helps avoid a fire while preventing the radiator from being completely turned off (risk of freezing). + +All these parameters are configured on the last page of the VTherm configuration: "Advanced Settings". + +### How to detect Safety Mode? +The first symptom is an unusually low temperature with a short and consistent heating time during each cycle. +Example: + +[security mode](images/security-mode-symptome1.png) + +If you have installed the [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card), the affected VTherm will appear like this: + +[security mode UI Card](images/security-mode-symptome2.png) + +You can also check the VTherm's attributes for the dates of the last received values. **The attributes are available in the Developer Tools / States**. + +Example: + +```yaml +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 can see that: +1. The VTherm is indeed in safety 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 reception time of the room temperature is 06/12/2023 at 18:43:28 (`last_temperature_datetime: "2023-12-06T18:43:28.346010+01:00"`), so it's recent, +4. The last reception time of the external temperature is 06/12/2023 at 13:04:35 (`last_ext_temperature_datetime: "2023-12-06T13:04:35.164367+01:00"`). The external temperature is over 5 hours late, which triggered the safety mode, as the threshold is set to 60 minutes (`security_delay_min: 60`). + +### How to Be Notified When This Happens? +The VTherm sends an event as soon as this happens and again at the end of the safety alert. You can capture these events in an automation and send a notification, blink a light, trigger a siren, etc. It's up to you. + +For handling events generated by VTherm, see [Events](#events). + +### How to Fix It? +It depends on the cause of the problem: +1. If a sensor is faulty, it should be repaired (replace batteries, change it, check the weather integration that provides the external temperature, etc.), +2. If the `security_delay_min` parameter is too small, it may generate many false alerts. A correct value is around 60 minutes, especially if you have battery-powered temperature sensors. See [my settings](tuning-examples.md#battery-powered-temperature-sensor), +3. Some temperature sensors don't send measurements if the temperature hasn't changed. So if the temperature stays very stable for a long time, safety mode can trigger. This is not a big issue since it will deactivate once the VTherm receives a new temperature. On some thermometers (e.g., TuYA or Zigbee), you can force a max delay between two measurements. The max delay should be set to a value lower than `security_delay_min`, +4. As soon as the temperature is received again, safety mode will turn off, and the previous preset, target temperature, and mode values will be restored. +5. If the external temperature sensor is faulty, you can disable safety mode triggering as it has a minimal impact on the results. To do so, see [here](feature-advanced.md#safety-mode). + +## Using a Group of People as a Presence Sensor + +Unfortunately, groups of people are not recognized as presence sensors. Therefore, you cannot use them directly in VTherm. +A workaround is to create a binary sensor template with the following code: + +File `template.yaml`: + +```yaml +- binary_sensor: + - name: maison_occupee + unique_id: maison_occupee + state: "{{is_state('person.person1', 'home') or is_state('person.person2', 'home') or is_state('input_boolean.force_presence', 'on')}}" + device_class: occupancy +``` + +In this example, note the use of an `input_boolean` called `force_presence`, which forces the sensor to `True`, thereby forcing any VTherm that uses it to have active presence. This can be used, for example, to trigger a pre-heating of the house when leaving work or when an unrecognized person is present in HA. + +File `configuration.yaml`: + +```yaml +... +template: !include templates.yaml +... +``` + +## Enable Logs for the Versatile Thermostat + +Sometimes, you will need to enable logs to fine-tune your analysis. To do this, edit the `logger.yaml` file in your configuration and configure the logs as follows: + +```yaml +default: xxxx +logs: + custom_components.versatile_thermostat: info +``` +You must reload the YAML configuration (Developer Tools / YAML / Reload all YAML configuration) or restart Home Assistant for this change to take effect. + +Be careful, in debug mode, Versatile Thermostat is very verbose and can quickly slow down Home Assistant or saturate your hard drive. If you switch to debug mode for anomaly analysis, do so only for the time needed to reproduce the bug and disable debug mode immediately afterward. \ No newline at end of file diff --git a/documentation/en/tuning-examples.md b/documentation/en/tuning-examples.md new file mode 100644 index 0000000..c5e2366 --- /dev/null +++ b/documentation/en/tuning-examples.md @@ -0,0 +1,60 @@ +# Tuning Examples + +- [Tuning Examples](#tuning-examples) + - [Electric Heating](#electric-heating) + - [Central Heating (gas or oil heating)](#central-heating-gas-or-oil-heating) + - [Battery-Powered Temperature Sensor](#battery-powered-temperature-sensor) + - [Reactive Temperature Sensor (plugged in)](#reactive-temperature-sensor-plugged-in) + - [My Presets](#my-presets) + +## Electric Heating +- Cycle: between 5 and 10 minutes, +- minimal_activation_delay_sec: 30 seconds + +## Central Heating (gas or oil heating) +- Cycle: between 30 and 60 minutes, +- minimal_activation_delay_sec: 300 seconds (due to response time) + +## Battery-Powered Temperature Sensor +These sensors are often sluggish and do not always send temperature readings when the temperature is stable. Therefore, the settings should be loose to avoid false positives. + +- security_delay_min: 60 minutes (because these sensors are sluggish) +- security_min_on_percent: 0.7 (70% - the system goes into security mode if the heater was on more than 70% of the time) +- security_default_on_percent: 0.4 (40% - in security mode, we maintain 40% heating time to avoid getting too cold) + +These settings should be understood as follows: + +> If the thermometer stops sending temperature readings for 1 hour and the heating percentage (``on_percent``) was greater than 70%, then the heating percentage will be reduced to 40%. + +Feel free to adjust these settings to your specific case! + +The important thing is not to take too much risk with these parameters: assume you are absent for a long period, and the batteries of your thermometer are running low, your heater will run 40% of the time during the whole failure period. + +Versatile Thermostat allows you to be notified when such an event occurs. Set up the appropriate alerts as soon as you start using this thermostat. See (#notifications). + +## Reactive Temperature Sensor (plugged in) +A powered thermometer is supposed to be very regular in sending temperature readings. If it doesn't send anything for 15 minutes, it most likely has an issue, and we can react faster without the risk of a false positive. + +- security_delay_min: 15 minutes +- security_min_on_percent: 0.5 (50% - the system goes into ``security`` preset if the heater was on more than 50% of the time) +- security_default_on_percent: 0.25 (25% - in ``security`` preset, we keep 25% heating time) + +## My Presets +This is just an example of how I use the preset. You can adapt it to your configuration, but it may be useful to understand its functionality. + +``Frost Protection``: 10°C +``Eco``: 17°C +``Comfort``: 19°C +``Boost``: 20°C + +When presence is disabled: +``Frost Protection``: 10°C +``Eco``: 16.5°C +``Comfort``: 17°C +``Boost``: 17.5°C + +The motion detector in my office is configured to use ``Boost`` when motion is detected and ``Eco`` otherwise. + +The security mode is configured as follows: + +![My settings](images/my-tuning.png) \ No newline at end of file diff --git a/documentation/fr/additions.md b/documentation/fr/additions.md index e25b0e4..71b4c61 100644 --- a/documentation/fr/additions.md +++ b/documentation/fr/additions.md @@ -1,19 +1,18 @@ # Quelques compléments indispensables - [Quelques compléments indispensables](#quelques-compléments-indispensables) - - [Bien mieux avec le Versatile Thermostat UI Card](#bien-mieux-avec-le-versatile-thermostat-ui-card) - - [Encore mieux avec le composant Scheduler !](#encore-mieux-avec-le-composant-scheduler-) - - [Encore bien mieux avec la custom:simple-thermostat front integration](#encore-bien-mieux-avec-la-customsimple-thermostat-front-integration) - - [Toujours mieux avec Plotly pour régler votre thermostat](#toujours-mieux-avec-plotly-pour-régler-votre-thermostat) - - [Et toujours de mieux en mieux avec l'AappDaemon NOTIFIER pour notifier les évènements](#et-toujours-de-mieux-en-mieux-avec-laappdaemon-notifier-pour-notifier-les-évènements) + - [Versatile Thermostat UI Card](#versatile-thermostat-ui-card) + - [Composant Scheduler !](#composant-scheduler-) + - [Courbes de régulattion avec Plotly](#courbes-de-régulattion-avec-plotly) + - [Les notification avec l'AappDaemon NOTIFIER](#les-notification-avec-laappdaemon-notifier) -## Bien mieux avec le Versatile Thermostat UI Card +## Versatile Thermostat UI Card Une carte spéciale pour le Versatile Thermostat a été développée (sur la base du Better Thermostat). Elle est dispo ici [Versatile Thermostat UI Card](https://github.com/jmcollin78/versatile-thermostat-ui-card) et propose une vision moderne de tous les status du VTherm : ![image](https://github.com/jmcollin78/versatile-thermostat-ui-card/blob/master/assets/1.png?raw=true) -## Encore mieux avec le composant Scheduler ! +## Composant Scheduler ! Afin de profiter de toute la puissance du Versatile Thermostat, je vous invite à l'utiliser avec https://github.com/nielsfaber/scheduler-component En effet, le composant scheduler propose une gestion de la base climatique sur les modes prédéfinis. Cette fonctionnalité a un intérêt limité avec le thermostat générique mais elle devient très puissante avec le Versatile Thermostat : @@ -39,58 +38,13 @@ Dans cet exemple, j'ai réglé le mode ECO pendant la nuit et le jour lorsqu'il J'espère que cet exemple vous aidera, n'hésitez pas à me faire part de vos retours ! -## Encore bien mieux avec la custom:simple-thermostat front integration -Le ``custom:simple-thermostat`` [ici](https://github.com/nervetattoo/simple-thermostat) est une excellente intégration qui permet une certaine personnalisation qui s'adapte bien à ce thermostat. -Vous pouvez avoir quelque chose comme ça très facilement ![image](images/simple-thermostat.png) -Exemple de configuration : - -``` - type: custom:simple-thermostat - entity: climate.thermostat_sam2 - layout: - step: row - label: - temperature: T° - state: Etat - hide: - state: false - control: - hvac: - _name: Mode - preset: - _name: Preset - sensors: - - entity: sensor.total_puissance_radiateur_sam2 - icon: mdi:lightning-bolt-outline - header: - toggle: - entity: input_boolean.etat_ouverture_porte_sam - name: Porte sam -``` - -Vous pouvez personnaliser ce composant à l'aide du composant HACS card-mod pour ajuster les couleurs des alertes. Exemple pour afficher en rouge les alertes sécurité et délestage : - -``` - card_mod: - style: | - {% if is_state('binary_sensor.thermostat_chambre_security_state', 'on') %} - ha-card .body .sensor-heading ha-icon[icon="mdi:alert-outline"] { - color: red; - } - {% endif %} - {% if is_state('binary_sensor.thermostat_chambre_overpowering_state', 'on') %} - ha-card .body .sensor-heading ha-icon[icon="mdi:flash"] { - color: red; - } - {% endif %} -``` -![image](images/custom-css-thermostat.png) - -## Toujours mieux avec Plotly pour régler votre thermostat +## Courbes de régulattion avec Plotly Vous pouvez obtenir une courbe comme celle présentée dans [some results](#some-results) avec une sorte de configuration de graphique Plotly uniquement en utilisant les attributs personnalisés du thermostat décrits [ici](#custom-attributes) : Remplacez les valeurs entre [[ ]] par les votres. -``` +
+ +```yaml - type: custom:plotly-graph entities: - entity: '[[climate]]' @@ -106,9 +60,13 @@ Remplacez les valeurs entre [[ ]] par les votres. yaxis: y1 name: Ema - entity: '[[climate]]' - attribute: regulated_target_temperature - yaxis: y1 - name: Regulated T° + attribute: on_percent + yaxis: y2 + name: Power percent + fill: tozeroy + fillcolor: rgba(200, 10, 10, 0.3) + line: + color: rgba(200, 10, 10, 0.9) - entity: '[[slope]]' name: Slope fill: tozeroy @@ -133,12 +91,19 @@ Remplacez les valeurs entre [[ ]] par les votres. yaxis: visible: true position: 0 + yaxis2: + visible: true + position: 0 + fixedrange: true + range: + - 0 + - 1 yaxis9: visible: true fixedrange: false range: - - -0.5 - - 0.5 + - -2 + - 2 position: 1 xaxis: rangeselector: @@ -154,17 +119,20 @@ Remplacez les valeurs entre [[ ]] par les votres. - count: 7 step: day ``` +
Exemple de courbes obtenues avec Plotly : ![image](images/plotly-curves.png) -## Et toujours de mieux en mieux avec l'AappDaemon NOTIFIER pour notifier les évènements +## Les notification avec l'AappDaemon NOTIFIER Cette automatisation utilise l'excellente App Daemon nommée NOTIFIER développée par Horizon Domotique que vous trouverez en démonstration [ici](https://www.youtube.com/watch?v=chJylIK0ASo&ab_channel=HorizonDomotique) et le code est [ici](https://github.com/jlpouffier/home-assistant-config/blob/master/appdaemon/apps/notifier.py). Elle permet de notifier les utilisateurs du logement lorsqu'un des évènements touchant à la sécurité survient sur un des Versatile Thermostats. C'est un excellent exemple de l'utilisation des notifications décrites ici [notification](#notifications). -``` +
+ +```yaml alias: Surveillance Mode Sécurité chauffage description: Envoi une notification si un thermostat passe en mode sécurité ou power trigger: @@ -245,3 +213,4 @@ action: mode: queued max: 30 ``` +
\ No newline at end of file diff --git a/documentation/fr/base-attributes.md b/documentation/fr/base-attributes.md index ae4b500..8eb937f 100644 --- a/documentation/fr/base-attributes.md +++ b/documentation/fr/base-attributes.md @@ -1,3 +1,6 @@ +- [Choix des attributs de base](#choix-des-attributs-de-base) +- [Choix des fonctions utilisées](#choix-des-fonctions-utilisées) + # Choix des attributs de base Choisisez le menu "Principaux attributs". @@ -20,7 +23,7 @@ Donnez les principaux attributs obligatoires. Ces attributs sont communs à tous 10. une case à cocher si ce VTherm est utilisé pour déclencher une éventuelle chaudière centrale. > ![Astuce](images/tips.png) _*Notes*_ -> 1. avec les types ```over_switch``` et ```over_valve```, les calculs sont effectués à chaque cycle. Donc en cas de changement de conditions, il faudra attendre le prochain cycle pour voir un changement. Pour cette raison, le cycle ne doit pas être trop long. **5 min est une bonne valeur** mais doit être adapté à votre type de chauffage. Plus l'inertie est grande et plus le cycle doit être long. Cf. 'TODO exemples de reglages, +> 1. avec les types ```over_switch``` et ```over_valve```, les calculs sont effectués à chaque cycle. Donc en cas de changement de conditions, il faudra attendre le prochain cycle pour voir un changement. Pour cette raison, le cycle ne doit pas être trop long. **5 min est une bonne valeur** mais doit être adapté à votre type de chauffage. Plus l'inertie est grande et plus le cycle doit être long. Cf. [Exemples de réglages](tuning-examples.md), > 2. si le cycle est trop court, le radiateur ne pourra jamais atteindre la température cible. Pour le radiateur à accumulation par exemple il sera sollicité inutilement. # Choix des fonctions utilisées diff --git a/documentation/fr/creation.md b/documentation/fr/creation.md index af85a4b..6305c04 100644 --- a/documentation/fr/creation.md +++ b/documentation/fr/creation.md @@ -1,16 +1,27 @@ # Choix du Vtherm +- [Choix du Vtherm](#choix-du-vtherm) + - [Création d'un nouveau Versatile Thermostat](#création-dun-nouveau-versatile-thermostat) +- [Choix d'un type de VTherm](#choix-dun-type-de-vtherm) + - [Configuration centralisée](#configuration-centralisée) + - [VTherm sur un switch](#vtherm-sur-un-switch) + - [Vtherm sur un autre thermostat](#vtherm-sur-un-autre-thermostat) + - [VTherm sur une vanne](#vtherm-sur-une-vanne) +- [Le bon choix](#le-bon-choix) +- [Article en référence](#article-en-référence) + + > ![Astuce](images/tips.png) _*Notes*_ > > Trois façons de travailler avec les VTherms sont disponibles : > 1. Chaque Versatile Thermostat est entièrement configurée de manière indépendante. Choisissez cette option si vous ne souhaitez avoir aucune configuration ou gestion centrale. -> 2. Certains aspects sont configurés de manière centralisée. Cela permet par ex. définir la température min/max, la détection de fenêtre ouverte,… au niveau d'une instance centrale et unique. Pour chaque VTherm que vous configurez, vous pouvez alors choisir d'utiliser la configuration centrale ou de la remplacer par des paramètres personnalisés. +> 2. Certains aspects peuvent être configurés de manière centralisée. Cela permet par ex. définir la température min/max, les paramètres de détection de fenêtre ouverte,… au niveau d'une instance centrale et unique. Pour chaque VTherm que vous configurez, vous pouvez alors choisir d'utiliser la configuration centrale ou de la remplacer par des paramètres personnalisés. > 3. En plus de cette configuration centralisée, tous les VTherm peuvent être contrôlées par une seule entité de type `select`. Cette fonction est nommé `central_mode`. Cela permet de stopper / démarrer / mettre en hors gel / etc tous les VTherms en une seule fois. Pour chaque VTherm, l'utilisateur indique si il est concerné par ce `central_mode`. ## Création d'un nouveau Versatile Thermostat -Cliquez sur le bouton Ajouter une intégration dans la page d'intégration +Cliquez sur le bouton Ajouter une intégration dans la page d'intégration (ou cliquez directement sur 'Ajouter un appareil' depuis la page de configuration de l'intégration) ![image](images/add-an-integration.png) diff --git a/documentation/fr/feature-advanced.md b/documentation/fr/feature-advanced.md index a31b730..ef33d13 100644 --- a/documentation/fr/feature-advanced.md +++ b/documentation/fr/feature-advanced.md @@ -35,7 +35,7 @@ Mettre ce paramètre à ``0.00`` déclenchera le préréglage sécurité quelque Le quatrième paramètre (`security_default_on_percent`) est la valeur de `on_percent` qui sera utilisée lorsque le thermostat passe en mode ``security``. Si vous mettez `0` alors le thermostat sera coupé lorsqu'il passe en mode `security`, mettre 0,2% par exemple permet de garder un peu de chauffage (20% dans ce cas), même en mode ``security``. Ca évite de retrouver son logement totalement gelé lors d'une panne de thermomètre. Il est possible de désactiver la mise en sécurité suite à une absence de données du thermomètre extérieure. En effet, celui-ci ayant la plupart du temps un impact faible sur la régulation (dépendant de votre paramètrage), il est possible qu'il soit absent sans mettre en danger le logement. Pour cela, il faut ajouter les lignes suivantes dans votre `configuration.yaml` : -``` +```yaml versatile_thermostat: ... safety_mode: diff --git a/documentation/fr/feature-central-boiler.md b/documentation/fr/feature-central-boiler.md index bf6fba7..e1dfaa0 100644 --- a/documentation/fr/feature-central-boiler.md +++ b/documentation/fr/feature-central-boiler.md @@ -54,7 +54,7 @@ Cliquez sur 'Appeler l'action'. Si votre chaudière s'allume vous avez la bonne Exemple: -Sous "Outils de développement / Service" : +Sous "Outils de développement / Actions" : ![Configuration du service](images/dev-tools-turnon-boiler-1.png) @@ -72,7 +72,7 @@ A chaque allumage ou extinction réussie de la chaudière un évènement est env Les évènements ressemblent à ça : Un évènement d'allumage : -``` +```yaml event_type: versatile_thermostat_central_boiler_event data: central_boiler: true @@ -88,7 +88,7 @@ context: ``` Un évènement d'extinction : -``` +```yaml event_type: versatile_thermostat_central_boiler_event data: central_boiler: false @@ -106,4 +106,5 @@ context: ## Avertissement > ![Astuce](images/tips.png) _*Notes*_ +> > Le contrôle par du logiciel ou du matériel de type domotique d'une chaudière centrale peut induire des risques pour son bon fonctionnement. Assurez-vous avant d'utiliser ces fonctions, que votre chaudière possède bien des fonctions de sécurité et que celles-ci fonctionnent. Allumer une chaudière si tous les robinets sont fermés peut générer de la sur-pression par exemple. diff --git a/documentation/fr/feature-central-mode.md b/documentation/fr/feature-central-mode.md index c39bf55..5587591 100644 --- a/documentation/fr/feature-central-mode.md +++ b/documentation/fr/feature-central-mode.md @@ -18,7 +18,7 @@ Si vous avez défini une configuration centralisée, vous avez une nouvelle enti Cette entité se présente sous la forme d'une liste de choix qui contient les choix suivants : 1. `Auto` : le mode 'normal' dans lequel chaque VTherm se comporte de façon autonome, -2. `Stooped` : tous les VTherms sont mis à l'arrêt (`hvac_off`), +2. `Stopped` : tous les VTherms sont mis à l'arrêt (`hvac_off`), 3. `Heat only` : tous les VTherms sont mis en mode chauffage lorsque ce mode est supporté par le VTherm, sinon il est stoppé, 4. `Cool only` : tous les VTherms sont mis en mode climatisation lorsque ce mode est supporté par le VTherm, sinon il est stoppé, 5. `Frost protection` : tous les VTherms sont mis en preset hors-gel lorsque ce preset est supporté par le VTherm, sinon il est stoppé. diff --git a/documentation/fr/feature-power.md b/documentation/fr/feature-power.md index 6bc8118..a7df282 100644 --- a/documentation/fr/feature-power.md +++ b/documentation/fr/feature-power.md @@ -27,6 +27,7 @@ Si le vehicle n'est pas en charge, la puissance totale consommé est de 1 kW, un ## Configurer la gestion de la puissance Si vous avez choisi la fonctionnalité `Avec détection de la puissance`, vous la configurez de la façon suivante : + ![image](images/config-power.png) 1. l'id d'entité du **capteur de puissance instantané consommé** de votre logement, @@ -37,6 +38,7 @@ Notez que toutes les valeurs de puissance doivent avoir les mêmes unités (kW o Le fait d'avoir un **capteur de puissance maximale autorisée**, vous permet de modifier la puissance maximale au fil du temps à l'aide d'un planificateur ou d'une automatisation. > ![Astuce](images/tips.png) _*Notes*_ +> > 1. En cas de délestage, le radiateur est réglé sur le préréglage nommé `power`. Il s'agit d'un préréglage caché, vous ne pouvez pas le sélectionner manuellement. > 2. Gardez toujours une marge, car la puissance max peut être brièvement dépassée en attendant le calcul du prochain cycle typiquement ou par des équipements non régulés. > 3. Si vous ne souhaitez pas utiliser cette fonctionnalité, décochez la dans le menu 'Fonctions'. diff --git a/documentation/fr/feature-presence.md b/documentation/fr/feature-presence.md index 6703814..8f5d7b0 100644 --- a/documentation/fr/feature-presence.md +++ b/documentation/fr/feature-presence.md @@ -18,6 +18,7 @@ Les températures sont configurées dans les entités de l'équipement correspon ATTENTION : les groupes de personnes ne fonctionnent pas en tant que capteur de présence. Ils ne sont pas reconnus comme un capteur de présence. Vous devez utiliser, un template comme décrit ici [Utilisation d'un groupe de personnes comme capteur de présence](troubleshooting.md#utilisation-dun-groupe-de-personnes-comme-capteur-de-présence). > ![Astuce](images/tips.png) _*Notes*_ +> > 1. le changement de température est immédiat et se répercute sur le volet avant. Le calcul prendra en compte la nouvelle température cible au prochain calcul du cycle, > 2. vous pouvez utiliser le capteur direct person.xxxx ou un groupe de capteurs de Home Assistant. Le capteur de présence gère les états ``on`` ou ``home`` comme présents et les états ``off`` ou ``not_home`` comme absents. > 3. pour pré-chauffer votre logement alors que tout le monde est absent, vous pouvez ajouter une entité de type `input_boolean` dans votre groupe de personne. Si vous passez cet `input_boolean` sur 'On' alors le capteur de présence sera forcé sur 'On' et les presets avec présence seront utilisés. Vous pouvez aussi positionner cet `input_boolean` sur 'On' via une automatisation par exemple lorsque vous quittez une zone pour lancer le préchauffage de votre logement. diff --git a/documentation/fr/feature-presets.md b/documentation/fr/feature-presets.md index 0683d3d..06cb78f 100644 --- a/documentation/fr/feature-presets.md +++ b/documentation/fr/feature-presets.md @@ -6,7 +6,7 @@ ## Configurer les températures préréglées -Le mode préréglé (preset) vous permet de préconfigurer la température ciblée. Utilisé en conjonction avec Scheduler (voir [scheduler](additions##encore-mieux-avec-le-composant-scheduler-)) vous aurez un moyen puissant et simple d'optimiser la température par rapport à la consommation électrique de votre maison. Les préréglages gérés sont les suivants : +Le mode préréglé (preset) vous permet de préconfigurer la température ciblée. Utilisé en conjonction avec Scheduler (voir [scheduler](additions#composant-scheduler-)) vous aurez un moyen puissant et simple d'optimiser la température par rapport à la consommation électrique de votre maison. Les préréglages gérés sont les suivants : - **Eco** : l'appareil est en mode d'économie d'énergie - **Confort** : l'appareil est en mode confort - **Boost** : l'appareil tourne toutes les vannes à fond @@ -24,6 +24,7 @@ La liste des entités varient en fonction de vos choix de fonction : 2. si vous avez choisi l'option _AC_, vous aurez en plus les presets en version 'climatisation' préfixé par _clim_ > ![Astuce](images/tips.png) _*Notes*_ +> > 1. Lorsque vous modifiez manuellement la température cible, le préréglage passe sur Aucun (pas de préréglage), > 2. Le préréglage standard ``Away`` est un préréglage caché qui n'est pas directement sélectionnable. Versatile Thermostat utilise la gestion de présence ou la gestion de mouvement pour régler automatiquement et dynamiquement la température cible en fonction d'une présence dans le logement ou d'une activité dans la pièce. Voir [gestion de la présence](feature-presence.md). > 3. Si vous utilisez la gestion du délestage, vous verrez un préréglage caché nommé ``power``. Le préréglage de l'élément chauffant est réglé sur « puissance » lorsque des conditions de surpuissance sont rencontrées et que le délestage est actif pour cet élément chauffant. Voir [gestion de l'alimentation](feature-power.md). diff --git a/documentation/fr/feature-window.md b/documentation/fr/feature-window.md index 2361095..05fc3e3 100644 --- a/documentation/fr/feature-window.md +++ b/documentation/fr/feature-window.md @@ -9,10 +9,6 @@ La détection des ouvertures peut se faire de 2 manières: 1. soit avec un capteur placé sur l'ouverture (mode capteur), 2. soit en détectant une chute brutale de température (mode auto) -La configuration de la détection d'ouverture est la suivante : - -![image](images/config-window-main.png) - ## Le mode capteur Pour passer en mode capteur, vous devez donner une entité de type `binary_sensor` ou `input_boolean`. Dans ce mode, vous devez renseigner les informations suivantes: @@ -36,6 +32,7 @@ Pareil, lorsque le détecteur passe à fermé : ## Le mode auto En mode auto, la configuration est la suivante: + ![image](images/config-window-auto.png) 1. un **délai en secondes** avant tout changement. Cela permet d'ouvrir rapidement une fenêtre sans arrêter le chauffage, @@ -58,6 +55,7 @@ Pour bien régler il est conseillé d'affocher sur un même graphique historique ![image](images/window-auto-tuning.png) > ![Astuce](images/tips.png) _*Notes*_ +> > 1. Si vous souhaitez utiliser **plusieurs capteurs de porte/fenêtre** pour automatiser votre thermostat, créez simplement un groupe avec le comportement habituel (https://www.home-assistant.io/integrations/binary_sensor.group/) > 2. Si vous n'avez pas de capteur de fenêtre/porte dans votre chambre, laissez simplement l'identifiant de l'entité du capteur vide, > 3. **Un seul mode est permis**. On ne peut pas configurer un thermostat avec un capteur et une détection automatique. Les 2 modes risquant de se contredire, il n'est pas possible d'avoir les 2 modes en même temps, diff --git a/documentation/fr/images/config-complete.png b/documentation/fr/images/config-complete.png deleted file mode 100644 index 08de298..0000000 Binary files a/documentation/fr/images/config-complete.png and /dev/null differ diff --git a/documentation/fr/images/config-features-old.png b/documentation/fr/images/config-features-old.png deleted file mode 100644 index dab8178..0000000 Binary files a/documentation/fr/images/config-features-old.png and /dev/null differ diff --git a/documentation/fr/images/config-main-old.png b/documentation/fr/images/config-main-old.png deleted file mode 100644 index bb97337..0000000 Binary files a/documentation/fr/images/config-main-old.png and /dev/null differ diff --git a/documentation/fr/images/config-menu-all-options.png b/documentation/fr/images/config-menu-all-options.png deleted file mode 100644 index d961eea..0000000 Binary files a/documentation/fr/images/config-menu-all-options.png and /dev/null differ diff --git a/documentation/fr/images/config-menu.png b/documentation/fr/images/config-menu.png deleted file mode 100644 index 639e951..0000000 Binary files a/documentation/fr/images/config-menu.png and /dev/null differ diff --git a/documentation/fr/images/config-not-complete.png b/documentation/fr/images/config-not-complete.png deleted file mode 100644 index ca1e469..0000000 Binary files a/documentation/fr/images/config-not-complete.png and /dev/null differ diff --git a/documentation/fr/images/config-terminate.png b/documentation/fr/images/config-terminate.png deleted file mode 100644 index 3da61e1..0000000 Binary files a/documentation/fr/images/config-terminate.png and /dev/null differ diff --git a/documentation/fr/images/config-window-main.png b/documentation/fr/images/config-window-main.png deleted file mode 100644 index d5e8870..0000000 Binary files a/documentation/fr/images/config-window-main.png and /dev/null differ diff --git a/documentation/fr/images/custom-css-thermostat.png b/documentation/fr/images/custom-css-thermostat.png deleted file mode 100644 index 31a047c..0000000 Binary files a/documentation/fr/images/custom-css-thermostat.png and /dev/null differ diff --git a/documentation/fr/images/en/config-linked-entity.png b/documentation/fr/images/en/config-linked-entity.png deleted file mode 100644 index 550f33e..0000000 Binary files a/documentation/fr/images/en/config-linked-entity.png and /dev/null differ diff --git a/documentation/fr/images/simple-thermostat.png b/documentation/fr/images/simple-thermostat.png deleted file mode 100644 index 06b25b5..0000000 Binary files a/documentation/fr/images/simple-thermostat.png and /dev/null differ diff --git a/documentation/fr/over-climate.md b/documentation/fr/over-climate.md index 6463297..af15b61 100644 --- a/documentation/fr/over-climate.md +++ b/documentation/fr/over-climate.md @@ -1,6 +1,6 @@ -# Thermostat de type `thermostat_over_climate` +# Thermostat de type `over_climate` -- [Thermostat de type `thermostat_over_climate`](#thermostat-de-type-thermostat_over_climate) +- [Thermostat de type `over_climate`](#thermostat-de-type-over_climate) - [Pré-requis](#pré-requis) - [Configuration](#configuration) - [les sous-jacents](#les-sous-jacents) @@ -13,6 +13,7 @@ ## Pré-requis L'installation doit ressembler à ça : + ![installation `over_climate`](images/over-climate-schema.png) 1. L'utilisateur ou une automatisation ou le Sheduler programme une consigne (setpoint) par le biais d'un pre-réglage ou directement d'une température, @@ -25,6 +26,7 @@ L'installation doit ressembler à ça : ## Configuration Cliquer sur l'option de menu "Sous-jacents" et vous allez avoir cette page de configuration : + ![image](images/config-linked-entity2.png) ### les sous-jacents @@ -77,7 +79,7 @@ On obtient alors une auto-régulation bien plus efficace qui évite l'eccueil de Attention toutefois, certaines températures internes varient tellement vite et sont tellement fausses qu'elles faussent totalement le calcul. Dans ce cas, là, il vaut mieux désactiver cette option. -Vous trouverez des conseils pour régler au mieux ces paramètres dans la page (TODO optimiser) +Vous trouverez des conseils pour régler au mieux ces paramètres dans la page [auto-regulation](self-regulation.md). ## Fonctions spécifiques diff --git a/documentation/fr/over-switch.md b/documentation/fr/over-switch.md index 5a8b3ed..92a92e4 100644 --- a/documentation/fr/over-switch.md +++ b/documentation/fr/over-switch.md @@ -1,13 +1,22 @@ -# Thermostat de type ```thermostat_over_switch``` +# Thermostat de type ```over_switch``` + +- [Thermostat de type ```over_switch```](#thermostat-de-type-over_switch) + - [Pré-requis](#pré-requis) + - [Configuration](#configuration) + - [les sous-jacents](#les-sous-jacents) + - [Le keep-alive](#le-keep-alive) + - [Le mode AC](#le-mode-ac) + - [L'inversion de la commande](#linversion-de-la-commande) ## Pré-requis L'installation doit ressembler à ça : + ![installation `over_switch`](images/over-switch-schema.png) 1. L'utilisateur ou une automatisation ou le Sheduler programme une consigne (setpoint) par le biais d'un pre-réglage ou directement d'une température, 2. régulièrement le thermomètre intérieur (2) ou extérieur (2b) envoie la température mesurée. Le thermomètre interieur doit être placé à une place pertinente pour le ressenti de l'utilisateur : idéalement au milieu du lieu de vie. Evitez de le mettre trop près d'une fenêtre ou trop proche du radiateur, -3. avec les valeurs de consigne, les différentes températures et des paramètres de l'algorithme TPI (cf. TODO), VTherm va calculer un pourcentage de temps d'allumage, +3. avec les valeurs de consigne, les différentes températures et des paramètres de l'algorithme TPI (cf. [TPI](algorithms.md#lalgorithme-tpi)), VTherm va calculer un pourcentage de temps d'allumage, 4. et va régulièrement commander l'allumage et l'extinction du ou des entités `switch` sous-jacentes, 5. ces entités switchs sous-jacentes vont alors commander le switch physique 6. la commande du switch physique allumera ou éteindra le radiateur. @@ -17,6 +26,7 @@ L'installation doit ressembler à ça : ## Configuration Cliquer sur l'option de menu "Sous-jacents" et vous allez avoir cette page de configuration : + ![image](images/config-linked-entity.png) ### les sous-jacents diff --git a/documentation/fr/over-valve.md b/documentation/fr/over-valve.md index 468e9ca..ddcdaab 100644 --- a/documentation/fr/over-valve.md +++ b/documentation/fr/over-valve.md @@ -12,7 +12,7 @@ L'installation doit ressembler à celle pour le VTherm `over_switch` sauf que l' 1. L'utilisateur ou une automatisation ou le Sheduler programme une consigne (setpoint) par le biais d'un pre-réglage ou directement d'une température, 2. régulièrement le thermomètre intérieur (2) ou extérieur (2b) ou interne à l'équipement (2c) envoie la température mesurée. Le thermomètre intérieur doit être placé à une place pertinente pour le ressenti de l'utilisateur : idéalement au milieu du lieu de vie. Evitez de le mettre trop près d'une fenêtre ou trop proche de l'équipement, -3. avec les valeurs de consigne, les différentes températures et des paramètres de l'algorithme TPI (cf. TODO), VTherm va calculer un pourcentage d'ouverture de la vanne, +3. avec les valeurs de consigne, les différentes températures et des paramètres de l'algorithme TPI (cf. [TPI](algorithms.md#lalgorithme-tpi)), VTherm va calculer un pourcentage d'ouverture de la vanne, 4. et va modifier la valeur des entités `number` sous-jacentes, 5. ces entités `number` sous-jacentes vont alors commander le taux d'ouverture de la vanne sur le _TRV_ 6. ce qui va faire chauffer plus ou moins le radiateur @@ -22,15 +22,10 @@ L'installation doit ressembler à celle pour le VTherm `over_switch` sauf que l' ## Configuration -Cliquer sur l'option de menu "Sous-jacents" et vous allez avoir cette page de configuration : - -![image](images/config-linked-entity2.png) - -### les sous-jacents -Dans la "liste des équipements à contrôler" vous mettez les entités `climate` qui vont être controllés par le VTherm. Seuls les entités de type `climate` sont acceptées. +Cliquer sur l'option de menu "Sous-jacents" et vous allez avoir cette page de configuration. Vous mettez les entités `numnber` ou `input_number`qui vont être controllés par le VTherm : ![image](images/config-linked-entity3.png) -Vous pouvez choisir jusqu'à entité du domaine ```number``` ou ```ìnput_number``` qui vont commander les vannes. + L'algorithme à utiliser est aujourd'hui limité à TPI est disponible. Voir [algorithme](#algorithme). Il est possible de choisir un thermostat over valve qui commande une climatisation en cochant la case "AC Mode". Dans ce cas, seul le mode refroidissement sera visible. diff --git a/documentation/fr/presentation.md b/documentation/fr/presentation.md index 320e823..b924646 100644 --- a/documentation/fr/presentation.md +++ b/documentation/fr/presentation.md @@ -12,16 +12,6 @@ Le type `over_climate` vous permet d'ajouter à votre équipement existant toute Les installations avec fil pilote et diode d'activation bénéficie d'une option qui permet d'inverser la commande on/off du radiateur sous-jacent. Pour cela, utilisez le type `over switch` et cochez l'option d'inversion de la commande. -## Incompatibilités -Certains thermostat de type TRV sont réputés incompatibles avec le Versatile Thermostat. C'est le cas des vannes suivantes : -1. les vannes POPP de Danfoss avec retour de température. Il est impossible d'éteindre cette vanne et elle s'auto-régule d'elle-même causant des conflits avec le VTherm, -2. Les thermostats « Homematic » (et éventuellement Homematic IP) sont connus pour rencontrer des problèmes avec le Versatile Thermostat en raison des limitations du protocole RF sous-jacent. Ce problème se produit particulièrement lorsque vous essayez de contrôler plusieurs thermostats Homematic à la fois dans une seule instance de VTherm. Afin de réduire la charge du cycle de service, vous pouvez par ex. regroupez les thermostats avec des procédures spécifiques à Homematic (par exemple en utilisant un thermostat mural) et laissez Versatile Thermostat contrôler uniquement le thermostat mural directement. Une autre option consiste à contrôler un seul thermostat et à propager les changements de mode CVC et de température par un automatisme, -3. les thermostats de type Heatzy qui ne supportent pas les commandes de type set_temperature -4. les thermostats de type Rointe ont tendance a se réveiller tout seul. Le reste fonctionne normalement. -5. les TRV de type Aqara SRTS-A01 et MOES TV01-ZB qui n'ont pas le retour d'état `hvac_action` permettant de savoir si elle chauffe ou pas. Donc les retours d'état sont faussés, le reste à l'air fonctionnel. -6. La clim Airwell avec l'intégration "Midea AC LAN". Si 2 commandes de VTherm sont trop rapprochées, la clim s'arrête d'elle même. -7. Les climates basés sur l'intégration Overkiz ne fonctionnent pas. Il parait impossible d'éteindre ni même de changer la température sur ces systèmes. - # Pourquoi une nouvelle implémentation du thermostat ? Ce composant nommé __Versatile thermostat__ gère les cas d'utilisation suivants : @@ -41,3 +31,13 @@ Ce composant nommé __Versatile thermostat__ gère les cas d'utilisation suivant Toutes ces fonctions sont configurables de façon centralisée ou individuelle en fonction de vos besoins. +## Incompatibilités +Certains thermostat de type TRV sont réputés incompatibles avec le Versatile Thermostat. C'est le cas des vannes suivantes : +1. les vannes POPP de Danfoss avec retour de température. Il est impossible d'éteindre cette vanne et elle s'auto-régule d'elle-même causant des conflits avec le VTherm, +2. Les thermostats « Homematic » (et éventuellement Homematic IP) sont connus pour rencontrer des problèmes avec le Versatile Thermostat en raison des limitations du protocole RF sous-jacent. Ce problème se produit particulièrement lorsque vous essayez de contrôler plusieurs thermostats Homematic à la fois dans une seule instance de VTherm. Afin de réduire la charge du cycle de service, vous pouvez par ex. regroupez les thermostats avec des procédures spécifiques à Homematic (par exemple en utilisant un thermostat mural) et laissez Versatile Thermostat contrôler uniquement le thermostat mural directement. Une autre option consiste à contrôler un seul thermostat et à propager les changements de mode CVC et de température par un automatisme, +3. les thermostats de type Heatzy qui ne supportent pas les commandes de type set_temperature +4. les thermostats de type Rointe ont tendance a se réveiller tout seul. Le reste fonctionne normalement. +5. les TRV de type Aqara SRTS-A01 et MOES TV01-ZB qui n'ont pas le retour d'état `hvac_action` permettant de savoir si elle chauffe ou pas. Donc les retours d'état sont faussés, le reste à l'air fonctionnel. +6. La clim Airwell avec l'intégration "Midea AC LAN". Si 2 commandes de VTherm sont trop rapprochées, la clim s'arrête d'elle même. +7. Les climates basés sur l'intégration Overkiz ne fonctionnent pas. Il parait impossible d'éteindre ni même de changer la température sur ces systèmes. + diff --git a/documentation/fr/reference.md b/documentation/fr/reference.md index f28e5a4..f5d706d 100644 --- a/documentation/fr/reference.md +++ b/documentation/fr/reference.md @@ -104,7 +104,7 @@ La présence de ces entités est conditionnée au fait que la fonction associée Pour colorer les capteurs, ajouter ces lignes et personnalisez les au besoin, dans votre configuration.yaml : -``` +```yaml frontend: themes: versatile_thermostat_theme: @@ -127,7 +127,7 @@ Cette implémentation personnalisée offre des actions (ex service) spécifiques Ce service permet de forcer l'état de présence indépendamment du capteur de présence. Cela peut être utile si vous souhaitez gérer la présence via un service et non via un capteur. Par exemple, vous pouvez utiliser votre réveil pour forcer l'absence lorsqu'il est allumé. Le code pour appeler ce service est le suivant : -``` +```yaml service : versatile_thermostat.set_presence Les données: présence : "off" @@ -142,7 +142,7 @@ Si le préréglage modifié est actuellement sélectionné, la modification de l Vous pouvez modifier l'une ou les deux températures (lorsqu'elles sont présentes ou absentes) de chaque préréglage. Utilisez le code suivant pour régler la température du préréglage : -``` +```yaml service : versatile_thermostat.set_preset_temperature date: preset : boost @@ -153,7 +153,7 @@ target: ``` Ou pour changer le pré-réglage du mode Air Conditionné (AC) ajoutez un préfixe `_ac`` au nom du preset comme ceci : -``` +```yaml service: versatile_thermostat.set_preset_temperature data: preset: boost_ac @@ -164,14 +164,15 @@ target: ``` > ![Astuce](images/tips.png) _*Notes*_ - - après un redémarrage, les préréglages sont réinitialisés à la température configurée. Si vous souhaitez que votre changement soit permanent, vous devez modifier le préréglage de la température dans la configuration de l'intégration. +> +> - après un redémarrage, les préréglages sont réinitialisés à la température configurée. Si vous souhaitez que votre changement soit permanent, vous devez modifier le préréglage de la température dans la configuration de l'intégration. ## Modifier les paramètres de sécurité Ce service permet de modifier dynamiquement les paramètres de sécurité décrits ici [Configuration avancée](#configuration-avancée). Si le thermostat est en mode ``security`` les nouveaux paramètres sont appliqués immédiatement. Pour changer les paramètres de sécurité utilisez le code suivant : -``` +```yaml service : versatile_thermostat.set_security data: min_on_percent: "0.5" @@ -187,7 +188,7 @@ Il permet de continuer à chauffer même si la fenetre est detectée ouverte. Mis à ``true`` les modifications de status de la fenetre n'auront plus d'effet sur le thermostat, remis à ``false`` cela s'assurera de désactiver le thermostat si la fenetre est toujours ouverte. Pour changer le paramètre de bypass utilisez le code suivant : -``` +```yaml service : versatile_thermostat.set_window_bypass data: window_bypass: true diff --git a/images/add-an-integration.png b/images/add-an-integration.png deleted file mode 100644 index eac8fc2..0000000 Binary files a/images/add-an-integration.png and /dev/null differ diff --git a/images/central_mode.png b/images/central_mode.png deleted file mode 100644 index bd0f1a3..0000000 Binary files a/images/central_mode.png and /dev/null differ diff --git a/images/config-advanced.png b/images/config-advanced.png deleted file mode 100644 index f582eb8..0000000 Binary files a/images/config-advanced.png and /dev/null differ diff --git a/images/config-central-boiler-1.png b/images/config-central-boiler-1.png deleted file mode 100644 index 22f54c5..0000000 Binary files a/images/config-central-boiler-1.png and /dev/null differ diff --git a/images/config-central-boiler-2.png b/images/config-central-boiler-2.png deleted file mode 100644 index 1de1b52..0000000 Binary files a/images/config-central-boiler-2.png and /dev/null differ diff --git a/images/config-complete.png b/images/config-complete.png deleted file mode 100644 index 08de298..0000000 Binary files a/images/config-complete.png and /dev/null differ diff --git a/images/config-features.png b/images/config-features.png deleted file mode 100644 index dab8178..0000000 Binary files a/images/config-features.png and /dev/null differ diff --git a/images/config-linked-entity.png b/images/config-linked-entity.png deleted file mode 100644 index be9aed1..0000000 Binary files a/images/config-linked-entity.png and /dev/null differ diff --git a/images/config-linked-entity2.png b/images/config-linked-entity2.png deleted file mode 100644 index 2c4e451..0000000 Binary files a/images/config-linked-entity2.png and /dev/null differ diff --git a/images/config-linked-entity3.png b/images/config-linked-entity3.png deleted file mode 100644 index fe6707b..0000000 Binary files a/images/config-linked-entity3.png and /dev/null differ diff --git a/images/config-main.png b/images/config-main.png deleted file mode 100644 index bb97337..0000000 Binary files a/images/config-main.png and /dev/null differ diff --git a/images/config-main0.png b/images/config-main0.png deleted file mode 100644 index bedbb84..0000000 Binary files a/images/config-main0.png and /dev/null differ diff --git a/images/config-menu-all-options.png b/images/config-menu-all-options.png deleted file mode 100644 index d961eea..0000000 Binary files a/images/config-menu-all-options.png and /dev/null differ diff --git a/images/config-menu.png b/images/config-menu.png deleted file mode 100644 index 639e951..0000000 Binary files a/images/config-menu.png and /dev/null differ diff --git a/images/config-motion.png b/images/config-motion.png deleted file mode 100644 index 5f9bb99..0000000 Binary files a/images/config-motion.png and /dev/null differ diff --git a/images/config-not-complete.png b/images/config-not-complete.png deleted file mode 100644 index ca1e469..0000000 Binary files a/images/config-not-complete.png and /dev/null differ diff --git a/images/config-power.png b/images/config-power.png deleted file mode 100644 index 6481e99..0000000 Binary files a/images/config-power.png and /dev/null differ diff --git a/images/config-presence.png b/images/config-presence.png deleted file mode 100644 index 164d180..0000000 Binary files a/images/config-presence.png and /dev/null differ diff --git a/images/config-presets.png b/images/config-presets.png deleted file mode 100644 index 275bf73..0000000 Binary files a/images/config-presets.png and /dev/null differ diff --git a/images/config-terminate.png b/images/config-terminate.png deleted file mode 100644 index 3da61e1..0000000 Binary files a/images/config-terminate.png and /dev/null differ diff --git a/images/config-tpi.png b/images/config-tpi.png deleted file mode 100644 index 2872eb1..0000000 Binary files a/images/config-tpi.png and /dev/null differ diff --git a/images/config-use-internal-temp.png b/images/config-use-internal-temp.png deleted file mode 100644 index 288a3d2..0000000 Binary files a/images/config-use-internal-temp.png and /dev/null differ diff --git a/images/config-window-auto.png b/images/config-window-auto.png deleted file mode 100644 index 6b3cdab..0000000 Binary files a/images/config-window-auto.png and /dev/null differ diff --git a/images/config-window-sensor.png b/images/config-window-sensor.png deleted file mode 100644 index a1b5e62..0000000 Binary files a/images/config-window-sensor.png and /dev/null differ diff --git a/images/custom-css-thermostat.png b/images/custom-css-thermostat.png deleted file mode 100644 index 31a047c..0000000 Binary files a/images/custom-css-thermostat.png and /dev/null differ diff --git a/images/dev-tools-turnon-boiler-1.png b/images/dev-tools-turnon-boiler-1.png deleted file mode 100644 index 5360998..0000000 Binary files a/images/dev-tools-turnon-boiler-1.png and /dev/null differ diff --git a/images/dev-tools-turnon-boiler-2.png b/images/dev-tools-turnon-boiler-2.png deleted file mode 100644 index 5b6c1f0..0000000 Binary files a/images/dev-tools-turnon-boiler-2.png and /dev/null differ diff --git a/images/en/config-linked-entity.png b/images/en/config-linked-entity.png deleted file mode 100644 index 550f33e..0000000 Binary files a/images/en/config-linked-entity.png and /dev/null differ diff --git a/images/multi-switch-activation.png b/images/multi-switch-activation.png deleted file mode 100644 index 58ffbd9..0000000 Binary files a/images/multi-switch-activation.png and /dev/null differ diff --git a/images/results-1.png b/images/results-1.png deleted file mode 100644 index 4466de5..0000000 Binary files a/images/results-1.png and /dev/null differ diff --git a/images/results-4.png b/images/results-4.png deleted file mode 100644 index 34c7568..0000000 Binary files a/images/results-4.png and /dev/null differ diff --git a/images/simple-thermostat.png b/images/simple-thermostat.png deleted file mode 100644 index 06b25b5..0000000 Binary files a/images/simple-thermostat.png and /dev/null differ diff --git a/images/thermostat-sensors.png b/images/thermostat-sensors.png deleted file mode 100644 index c3ac2b9..0000000 Binary files a/images/thermostat-sensors.png and /dev/null differ