Add humidity to KNX climate (#128844)

This commit is contained in:
Alexander Knöbel 2024-10-20 22:17:00 +02:00 committed by GitHub
parent 94534f714c
commit f01231277b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 44 additions and 3 deletions

View File

@ -136,6 +136,9 @@ def _create_climate(xknx: XKNX, config: ConfigType) -> XknxClimate:
ClimateSchema.CONF_FAN_SPEED_STATE_ADDRESS
),
fan_speed_mode=config[ClimateSchema.CONF_FAN_SPEED_MODE],
group_address_humidity_state=config.get(
ClimateSchema.CONF_HUMIDITY_STATE_ADDRESS
),
)
@ -397,6 +400,11 @@ class KNXClimate(KnxYamlEntity, ClimateEntity):
await self._device.set_fan_speed(self._fan_modes_percentages[fan_mode_index])
@property
def current_humidity(self) -> float | None:
"""Return the current humidity."""
return self._device.humidity.value
@property
def extra_state_attributes(self) -> dict[str, Any] | None:
"""Return device specific state attributes."""

View File

@ -11,7 +11,7 @@
"loggers": ["xknx", "xknxproject"],
"quality_scale": "platinum",
"requirements": [
"xknx==3.2.0",
"xknx==3.3.0",
"xknxproject==3.8.1",
"knx-frontend==2024.9.10.221729"
],

View File

@ -347,6 +347,7 @@ class ClimateSchema(KNXPlatformSchema):
CONF_FAN_MAX_STEP = "fan_max_step"
CONF_FAN_SPEED_MODE = "fan_speed_mode"
CONF_FAN_ZERO_MODE = "fan_zero_mode"
CONF_HUMIDITY_STATE_ADDRESS = "humidity_state_address"
DEFAULT_NAME = "KNX Climate"
DEFAULT_SETPOINT_SHIFT_MODE = "DPT6010"
@ -439,6 +440,7 @@ class ClimateSchema(KNXPlatformSchema):
vol.Optional(CONF_FAN_ZERO_MODE, default=FAN_OFF): vol.Coerce(
FanZeroMode
),
vol.Optional(CONF_HUMIDITY_STATE_ADDRESS): ga_list_validator,
}
),
)

View File

@ -2995,7 +2995,7 @@ xbox-webapi==2.0.11
xiaomi-ble==0.32.0
# homeassistant.components.knx
xknx==3.2.0
xknx==3.3.0
# homeassistant.components.knx
xknxproject==3.8.1

View File

@ -2381,7 +2381,7 @@ xbox-webapi==2.0.11
xiaomi-ble==0.32.0
# homeassistant.components.knx
xknx==3.2.0
xknx==3.3.0
# homeassistant.components.knx
xknxproject==3.8.1

View File

@ -819,3 +819,34 @@ async def test_fan_speed_zero_mode_auto(hass: HomeAssistant, knx: KNXTestKit) ->
)
await knx.assert_write("1/2/6", (0x0,))
knx.assert_state("climate.test", HVACMode.HEAT, fan_mode="auto")
async def test_climate_humidity(hass: HomeAssistant, knx: KNXTestKit) -> None:
"""Test KNX climate humidity."""
await knx.setup_integration(
{
ClimateSchema.PLATFORM: {
CONF_NAME: "test",
ClimateSchema.CONF_TEMPERATURE_ADDRESS: "1/2/3",
ClimateSchema.CONF_TARGET_TEMPERATURE_STATE_ADDRESS: "1/2/5",
ClimateSchema.CONF_HUMIDITY_STATE_ADDRESS: "1/2/16",
}
}
)
# read states state updater
await knx.assert_read("1/2/3")
await knx.assert_read("1/2/5")
# StateUpdater initialize state
await knx.receive_response("1/2/5", RAW_FLOAT_22_0)
await knx.receive_response("1/2/3", RAW_FLOAT_21_0)
# Query status
await knx.assert_read("1/2/16")
await knx.receive_response("1/2/16", (0x14, 0x74))
knx.assert_state(
"climate.test",
HVACMode.HEAT,
current_humidity=45.6,
)