-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add blog post about new min/max validation in Climate entity (#2259)
- Loading branch information
1 parent
34d377e
commit 6a1dc11
Showing
1 changed file
with
40 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
--- | ||
author: G Johansson | ||
authorURL: https://github.com/gjohansson-ST | ||
authorImageURL: https://avatars.githubusercontent.com/u/62932417?v=4 | ||
authorTwitter: GJohansson | ||
title: "Climate entity now validates temperature provided in action calls" | ||
--- | ||
|
||
As of Home Assistant Core 2024.8, we have implemented validation for the temperature action call provided by the `ClimateEntity`. | ||
|
||
Integrations no longer need to check this within their own set temperature methods (`async_set_temperature`/`set_temperature`). | ||
|
||
However, it's important that integrations specify the `min_temp` and `max_temp` properties correctly, or the user might not be able to set their correct temperature if validation fails. | ||
Likewise, integrations that handle devices which can operate on both `Celsius` and `Fahrenheit` need to convert their respective `min_temp` and `max_temp` values accordingly. | ||
|
||
|
||
### Example | ||
|
||
Converts a device's native min/max value into the temperature_unit specified by the integration. | ||
|
||
```python | ||
|
||
class MyClimateEntity(ClimateEntity): | ||
"""Implementation of my climate entity.""" | ||
|
||
@property | ||
def min_temp(self) -> float: | ||
"""Return the minimum temperature.""" | ||
return TemperatureConverter.convert( | ||
self.device.min_temp, UnitOfTemperature.CELSIUS, self.temperature_unit | ||
) | ||
|
||
@property | ||
def max_temp(self) -> float: | ||
"""Return the maximum temperature.""" | ||
return TemperatureConverter.convert( | ||
self.device.max_temp, UnitOfTemperature.CELSIUS, self.temperature_unit | ||
) | ||
|
||
``` |