Set target value on LCN regulator lock (#133870)

This commit is contained in:
Andre Lengwenus 2025-01-17 11:15:42 +01:00 committed by GitHub
parent 689d7d3cd9
commit 99d250f222
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 17 additions and 8 deletions

View File

@ -32,6 +32,7 @@ from .const import (
CONF_MAX_TEMP, CONF_MAX_TEMP,
CONF_MIN_TEMP, CONF_MIN_TEMP,
CONF_SETPOINT, CONF_SETPOINT,
CONF_TARGET_VALUE_LOCKED,
DOMAIN, DOMAIN,
) )
from .entity import LcnEntity from .entity import LcnEntity
@ -93,6 +94,9 @@ class LcnClimate(LcnEntity, ClimateEntity):
self.regulator_id = pypck.lcn_defs.Var.to_set_point_id(self.setpoint) self.regulator_id = pypck.lcn_defs.Var.to_set_point_id(self.setpoint)
self.is_lockable = config[CONF_DOMAIN_DATA][CONF_LOCKABLE] self.is_lockable = config[CONF_DOMAIN_DATA][CONF_LOCKABLE]
self.target_value_locked = config[CONF_DOMAIN_DATA].get(
CONF_TARGET_VALUE_LOCKED, -1
)
self._max_temp = config[CONF_DOMAIN_DATA][CONF_MAX_TEMP] self._max_temp = config[CONF_DOMAIN_DATA][CONF_MAX_TEMP]
self._min_temp = config[CONF_DOMAIN_DATA][CONF_MIN_TEMP] self._min_temp = config[CONF_DOMAIN_DATA][CONF_MIN_TEMP]
@ -171,7 +175,9 @@ class LcnClimate(LcnEntity, ClimateEntity):
self._is_on = True self._is_on = True
self.async_write_ha_state() self.async_write_ha_state()
elif hvac_mode == HVACMode.OFF: elif hvac_mode == HVACMode.OFF:
if not await self.device_connection.lock_regulator(self.regulator_id, True): if not await self.device_connection.lock_regulator(
self.regulator_id, True, self.target_value_locked
):
return return
self._is_on = False self._is_on = False
self._target_temperature = None self._target_temperature = None

View File

@ -35,6 +35,7 @@ CONF_DIMMABLE = "dimmable"
CONF_TRANSITION = "transition" CONF_TRANSITION = "transition"
CONF_MOTOR = "motor" CONF_MOTOR = "motor"
CONF_LOCKABLE = "lockable" CONF_LOCKABLE = "lockable"
CONF_TARGET_VALUE_LOCKED = "target_value_locked"
CONF_VARIABLE = "variable" CONF_VARIABLE = "variable"
CONF_VALUE = "value" CONF_VALUE = "value"
CONF_RELVARREF = "value_reference" CONF_RELVARREF = "value_reference"

View File

@ -8,5 +8,5 @@
"documentation": "https://www.home-assistant.io/integrations/lcn", "documentation": "https://www.home-assistant.io/integrations/lcn",
"iot_class": "local_push", "iot_class": "local_push",
"loggers": ["pypck"], "loggers": ["pypck"],
"requirements": ["pypck==0.8.1", "lcn-frontend==0.2.2"] "requirements": ["pypck==0.8.3", "lcn-frontend==0.2.3"]
} }

View File

@ -24,6 +24,7 @@ from .const import (
CONF_REGISTER, CONF_REGISTER,
CONF_REVERSE_TIME, CONF_REVERSE_TIME,
CONF_SETPOINT, CONF_SETPOINT,
CONF_TARGET_VALUE_LOCKED,
CONF_TRANSITION, CONF_TRANSITION,
KEYS, KEYS,
LED_PORTS, LED_PORTS,
@ -58,6 +59,7 @@ DOMAIN_DATA_CLIMATE: VolDictType = {
vol.Optional(CONF_MAX_TEMP, default=DEFAULT_MAX_TEMP): vol.Coerce(float), vol.Optional(CONF_MAX_TEMP, default=DEFAULT_MAX_TEMP): vol.Coerce(float),
vol.Optional(CONF_MIN_TEMP, default=DEFAULT_MIN_TEMP): vol.Coerce(float), vol.Optional(CONF_MIN_TEMP, default=DEFAULT_MIN_TEMP): vol.Coerce(float),
vol.Optional(CONF_LOCKABLE, default=False): vol.Coerce(bool), vol.Optional(CONF_LOCKABLE, default=False): vol.Coerce(bool),
vol.Optional(CONF_TARGET_VALUE_LOCKED, default=-1): vol.Coerce(float),
vol.Optional(CONF_UNIT_OF_MEASUREMENT, default=UnitOfTemperature.CELSIUS): vol.In( vol.Optional(CONF_UNIT_OF_MEASUREMENT, default=UnitOfTemperature.CELSIUS): vol.In(
UnitOfTemperature.CELSIUS, UnitOfTemperature.FAHRENHEIT UnitOfTemperature.CELSIUS, UnitOfTemperature.FAHRENHEIT
), ),

4
requirements_all.txt generated
View File

@ -1287,7 +1287,7 @@ lakeside==0.13
laundrify-aio==1.2.2 laundrify-aio==1.2.2
# homeassistant.components.lcn # homeassistant.components.lcn
lcn-frontend==0.2.2 lcn-frontend==0.2.3
# homeassistant.components.ld2410_ble # homeassistant.components.ld2410_ble
ld2410-ble==0.1.1 ld2410-ble==0.1.1
@ -2195,7 +2195,7 @@ pypalazzetti==0.1.19
pypca==0.0.7 pypca==0.0.7
# homeassistant.components.lcn # homeassistant.components.lcn
pypck==0.8.1 pypck==0.8.3
# homeassistant.components.pjlink # homeassistant.components.pjlink
pypjlink2==1.2.1 pypjlink2==1.2.1

View File

@ -1086,7 +1086,7 @@ lacrosse-view==1.0.3
laundrify-aio==1.2.2 laundrify-aio==1.2.2
# homeassistant.components.lcn # homeassistant.components.lcn
lcn-frontend==0.2.2 lcn-frontend==0.2.3
# homeassistant.components.ld2410_ble # homeassistant.components.ld2410_ble
ld2410-ble==0.1.1 ld2410-ble==0.1.1
@ -1788,7 +1788,7 @@ pyownet==0.10.0.post1
pypalazzetti==0.1.19 pypalazzetti==0.1.19
# homeassistant.components.lcn # homeassistant.components.lcn
pypck==0.8.1 pypck==0.8.3
# homeassistant.components.pjlink # homeassistant.components.pjlink
pypjlink2==1.2.1 pypjlink2==1.2.1

View File

@ -107,7 +107,7 @@ async def test_set_hvac_mode_off(hass: HomeAssistant, entry: MockConfigEntry) ->
blocking=True, blocking=True,
) )
lock_regulator.assert_awaited_with(0, True) lock_regulator.assert_awaited_with(0, True, -1)
state = hass.states.get("climate.climate1") state = hass.states.get("climate.climate1")
assert state is not None assert state is not None
@ -124,7 +124,7 @@ async def test_set_hvac_mode_off(hass: HomeAssistant, entry: MockConfigEntry) ->
blocking=True, blocking=True,
) )
lock_regulator.assert_awaited_with(0, True) lock_regulator.assert_awaited_with(0, True, -1)
state = hass.states.get("climate.climate1") state = hass.states.get("climate.climate1")
assert state is not None assert state is not None