|
2 | 2 |
|
3 | 3 | from zigpy.quirks import CustomCluster
|
4 | 4 | from zigpy.quirks.v2 import QuirkBuilder
|
5 |
| -from zigpy.quirks.v2.homeassistant import PERCENTAGE, EntityType |
| 5 | +from zigpy.quirks.v2.homeassistant import PERCENTAGE, EntityType, UnitOfTemperature |
| 6 | +from zigpy.quirks.v2.homeassistant.number import NumberDeviceClass |
6 | 7 | from zigpy.quirks.v2.homeassistant.sensor import SensorStateClass
|
7 | 8 | import zigpy.types as t
|
8 | 9 | from zigpy.zcl.clusters.hvac import TemperatureDisplayMode, Thermostat, UserInterface
|
|
22 | 23 | # Boost heating preset mode.
|
23 | 24 | BOOST_HEATING_ATTR_ID = 0x4043
|
24 | 25 |
|
| 26 | +# Outdoor temperature input |
| 27 | +OUTDOOR_TEMP_INPUT_ATTR_ID = 0x4051 |
| 28 | + |
25 | 29 | """Bosch specific user interface attribute ids."""
|
26 | 30 |
|
27 | 31 | # Display on-time (5s - 30s).
|
@@ -86,6 +90,12 @@ class AttributeDefs(Thermostat.AttributeDefs):
|
86 | 90 | type=TemperatureDisplayMode,
|
87 | 91 | access="rw",
|
88 | 92 | )
|
| 93 | + |
| 94 | + outdoor_temperature_input = ZCLAttributeDef( |
| 95 | + id=OUTDOOR_TEMP_INPUT_ATTR_ID, |
| 96 | + type=t.int16s, |
| 97 | + is_manufacturer_specific=True, |
| 98 | + ) |
89 | 99 |
|
90 | 100 |
|
91 | 101 | class BoschUserInterfaceCluster(CustomCluster, UserInterface):
|
@@ -175,5 +185,19 @@ class AttributeDefs(UserInterface.AttributeDefs):
|
175 | 185 | translation_key="display_brightness",
|
176 | 186 | fallback_name="Display brightness",
|
177 | 187 | )
|
| 188 | + # Input for displaying outdoor temperature in the corner of the screen. |
| 189 | + .number( |
| 190 | + BoschThermostatCluster.AttributeDefs.outdoor_temperature_input.name, |
| 191 | + BoschThermostatCluster.cluster_id, |
| 192 | + min_value=-32768, |
| 193 | + max_value=32767, |
| 194 | + step=1, |
| 195 | + unit=UnitOfTemperature.CELSIUS, |
| 196 | + multiplier=0.01, |
| 197 | + entity_type=EntityType.CONFIG, |
| 198 | + device_class=NumberDeviceClass.TEMPERATURE, |
| 199 | + translation_key="outdoor_temperature_input", |
| 200 | + fallback_name="Outdoor temperature input", |
| 201 | + ) |
178 | 202 | .add_to_registry()
|
179 | 203 | )
|
0 commit comments