Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db4052d93b | ||
|
|
a0486a3f54 | ||
|
|
bb7322854e |
45
README.md
45
README.md
@@ -6,7 +6,14 @@
|
|||||||
|
|
||||||
_Component developed by using the amazing development template [blueprint][blueprint]._
|
_Component developed by using the amazing development template [blueprint][blueprint]._
|
||||||
|
|
||||||
This custom component for Home Assistant is an upgrade and complete rewrite of the component "Awesome thermostat" (see [Github](https://github.com/dadge/awesome_thermostat)) with addition of 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.
|
||||||
|
|
||||||
|
## When to use / not use
|
||||||
|
This thermostat aims to command a heater which works only in on/off mode. This thermostat is not suitable for heaters with a pilot wire. The minimal needed configuration to use this thermostat is:
|
||||||
|
1. an equipement like a heater (a switch),
|
||||||
|
2. a temperature sensor (or an input_number)
|
||||||
|
|
||||||
|
Because this integration aims to command the heater considering the preset configured and the room temperature, those informations are mandatory.
|
||||||
|
|
||||||
## Why another thermostat implementation ?
|
## Why another thermostat implementation ?
|
||||||
For my personnal usage, I needed to add a couple of features and also to update the behavior that I implemented in my previous component "Awesome thermostat".
|
For my personnal usage, I needed to add a couple of features and also to update the behavior that I implemented in my previous component "Awesome thermostat".
|
||||||
@@ -129,6 +136,13 @@ Depending of your area and heater, the convergente temperature can be under the
|
|||||||
|
|
||||||
A function parameter is available. Set it to "Linear" to have a linéar growth of temperature or set it to "Atan" to have a more aggressive curve to target temperature depending of your need.
|
A function parameter is available. Set it to "Linear" to have a linéar growth of temperature or set it to "Atan" to have a more aggressive curve to target temperature depending of your need.
|
||||||
|
|
||||||
|
### Some results
|
||||||
|
|
||||||
|
Convergence of temperature to target configured by preset:
|
||||||
|

|
||||||
|
|
||||||
|
Cycle of on/off calculated by the integration:
|
||||||
|

|
||||||
|
|
||||||
Enjoy !
|
Enjoy !
|
||||||
|
|
||||||
@@ -158,6 +172,35 @@ In this example I set ECO mode during the night and the day when nobody's at hom
|
|||||||
|
|
||||||
I hope this example helps you, don't hesitate to give me your feedbacks !
|
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 (see https://home.clouderial.fr/hacs/repository/158654878) is a great integration which allow some customisation which fits well with this thermostat.
|
||||||
|
You can have something like that very easily 
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
## Contributions are welcome!
|
## Contributions are welcome!
|
||||||
|
|
||||||
If you want to contribute to this please read the [Contribution guidelines](CONTRIBUTING.md)
|
If you want to contribute to this please read the [Contribution guidelines](CONTRIBUTING.md)
|
||||||
|
|||||||
@@ -810,7 +810,9 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
|||||||
_LOGGER.debug(event)
|
_LOGGER.debug(event)
|
||||||
new_state = event.data.get("new_state")
|
new_state = event.data.get("new_state")
|
||||||
old_state = event.data.get("old_state")
|
old_state = event.data.get("old_state")
|
||||||
if new_state is None or new_state.state == old_state.state:
|
if new_state is None or (
|
||||||
|
old_state is not None and new_state.state == old_state.state
|
||||||
|
):
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -840,6 +842,10 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
|||||||
"""Check the overpowering condition
|
"""Check the overpowering condition
|
||||||
Turn the preset_mode of the heater to 'power' if power conditions are exceeded
|
Turn the preset_mode of the heater to 'power' if power conditions are exceeded
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if not self._pmax_on:
|
||||||
|
return
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"%s - overpowering check: power=%.3f, max_power=%.3f heater power=%.3f",
|
"%s - overpowering check: power=%.3f, max_power=%.3f heater power=%.3f",
|
||||||
self,
|
self,
|
||||||
|
|||||||
BIN
images/results-1.png
Normal file
BIN
images/results-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
images/results-2.png
Normal file
BIN
images/results-2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
BIN
images/simple-thermostat.png
Normal file
BIN
images/simple-thermostat.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user