Use attr** in lightwave (#61881)
Co-authored-by: epenet <epenet@users.noreply.github.com>pull/62129/head
parent
bb538a9782
commit
6778e4058e
|
@ -32,57 +32,46 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
||||||
class LightwaveTrv(ClimateEntity):
|
class LightwaveTrv(ClimateEntity):
|
||||||
"""Representation of a LightWaveRF TRV."""
|
"""Representation of a LightWaveRF TRV."""
|
||||||
|
|
||||||
|
_attr_hvac_mode = HVAC_MODE_HEAT
|
||||||
|
_attr_hvac_modes = [HVAC_MODE_HEAT, HVAC_MODE_OFF]
|
||||||
|
_attr_min_temp = DEFAULT_MIN_TEMP
|
||||||
|
_attr_max_temp = DEFAULT_MAX_TEMP
|
||||||
|
_attr_supported_features = SUPPORT_TARGET_TEMPERATURE
|
||||||
|
_attr_target_temperature_step = 0.5
|
||||||
|
_attr_temperature_unit = TEMP_CELSIUS
|
||||||
|
|
||||||
def __init__(self, name, device_id, lwlink, serial):
|
def __init__(self, name, device_id, lwlink, serial):
|
||||||
"""Initialize LightwaveTrv entity."""
|
"""Initialize LightwaveTrv entity."""
|
||||||
self._name = name
|
self._attr_name = name
|
||||||
self._device_id = device_id
|
self._device_id = device_id
|
||||||
self._state = None
|
|
||||||
self._current_temperature = None
|
|
||||||
self._target_temperature = None
|
|
||||||
self._hvac_action = None
|
|
||||||
self._lwlink = lwlink
|
self._lwlink = lwlink
|
||||||
self._serial = serial
|
self._serial = serial
|
||||||
self._attr_unique_id = f"{serial}-trv"
|
self._attr_unique_id = f"{serial}-trv"
|
||||||
# inhibit is used to prevent race condition on update. If non zero, skip next update cycle.
|
# inhibit is used to prevent race condition on update. If non zero, skip next update cycle.
|
||||||
self._inhibit = 0
|
self._inhibit = 0
|
||||||
|
|
||||||
@property
|
|
||||||
def supported_features(self):
|
|
||||||
"""Flag supported features."""
|
|
||||||
return SUPPORT_TARGET_TEMPERATURE
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Communicate with a Lightwave RTF Proxy to get state."""
|
"""Communicate with a Lightwave RTF Proxy to get state."""
|
||||||
(temp, targ, _, trv_output) = self._lwlink.read_trv_status(self._serial)
|
(temp, targ, _, trv_output) = self._lwlink.read_trv_status(self._serial)
|
||||||
if temp is not None:
|
if temp is not None:
|
||||||
self._current_temperature = temp
|
self._attr_current_temperature = temp
|
||||||
if targ is not None:
|
if targ is not None:
|
||||||
if self._inhibit == 0:
|
if self._inhibit == 0:
|
||||||
self._target_temperature = targ
|
self._attr_target_temperature = targ
|
||||||
if targ == 0:
|
if targ == 0:
|
||||||
# TRV off
|
# TRV off
|
||||||
self._target_temperature = None
|
self._attr_target_temperature = None
|
||||||
if targ >= 40:
|
if targ >= 40:
|
||||||
# Call for heat mode, or TRV in a fixed position
|
# Call for heat mode, or TRV in a fixed position
|
||||||
self._target_temperature = None
|
self._attr_target_temperature = None
|
||||||
else:
|
else:
|
||||||
# Done the job - use proxy next iteration
|
# Done the job - use proxy next iteration
|
||||||
self._inhibit = 0
|
self._inhibit = 0
|
||||||
if trv_output is not None:
|
if trv_output is not None:
|
||||||
if trv_output > 0:
|
if trv_output > 0:
|
||||||
self._hvac_action = CURRENT_HVAC_HEAT
|
self._attr_hvac_action = CURRENT_HVAC_HEAT
|
||||||
else:
|
else:
|
||||||
self._hvac_action = CURRENT_HVAC_OFF
|
self._attr_hvac_action = CURRENT_HVAC_OFF
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self):
|
|
||||||
"""Lightwave trv name."""
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@property
|
|
||||||
def current_temperature(self):
|
|
||||||
"""Property giving the current room temperature."""
|
|
||||||
return self._current_temperature
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def target_temperature(self):
|
def target_temperature(self):
|
||||||
|
@ -92,51 +81,16 @@ class LightwaveTrv(ClimateEntity):
|
||||||
# propagated, the target temp is set back to the
|
# propagated, the target temp is set back to the
|
||||||
# old target on the next poll, showing a false
|
# old target on the next poll, showing a false
|
||||||
# reading temporarily.
|
# reading temporarily.
|
||||||
self._target_temperature = self._inhibit
|
self._attr_target_temperature = self._inhibit
|
||||||
return self._target_temperature
|
return self._attr_target_temperature
|
||||||
|
|
||||||
@property
|
|
||||||
def hvac_modes(self):
|
|
||||||
"""HVAC modes."""
|
|
||||||
return [HVAC_MODE_HEAT, HVAC_MODE_OFF]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def hvac_mode(self):
|
|
||||||
"""HVAC mode."""
|
|
||||||
return HVAC_MODE_HEAT
|
|
||||||
|
|
||||||
@property
|
|
||||||
def hvac_action(self):
|
|
||||||
"""HVAC action."""
|
|
||||||
return self._hvac_action
|
|
||||||
|
|
||||||
@property
|
|
||||||
def min_temp(self):
|
|
||||||
"""Min Temp."""
|
|
||||||
return DEFAULT_MIN_TEMP
|
|
||||||
|
|
||||||
@property
|
|
||||||
def max_temp(self):
|
|
||||||
"""Max Temp."""
|
|
||||||
return DEFAULT_MAX_TEMP
|
|
||||||
|
|
||||||
@property
|
|
||||||
def temperature_unit(self):
|
|
||||||
"""Set temperature unit."""
|
|
||||||
return TEMP_CELSIUS
|
|
||||||
|
|
||||||
@property
|
|
||||||
def target_temperature_step(self):
|
|
||||||
"""Set temperature step."""
|
|
||||||
return 0.5
|
|
||||||
|
|
||||||
def set_temperature(self, **kwargs):
|
def set_temperature(self, **kwargs):
|
||||||
"""Set TRV target temperature."""
|
"""Set TRV target temperature."""
|
||||||
if ATTR_TEMPERATURE in kwargs:
|
if ATTR_TEMPERATURE in kwargs:
|
||||||
self._target_temperature = kwargs[ATTR_TEMPERATURE]
|
self._attr_target_temperature = kwargs[ATTR_TEMPERATURE]
|
||||||
self._inhibit = self._target_temperature
|
self._inhibit = self._attr_target_temperature
|
||||||
self._lwlink.set_temperature(
|
self._lwlink.set_temperature(
|
||||||
self._device_id, self._target_temperature, self._name
|
self._device_id, self._attr_target_temperature, self._attr_name
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_set_hvac_mode(self, hvac_mode):
|
async def async_set_hvac_mode(self, hvac_mode):
|
||||||
|
|
|
@ -29,57 +29,34 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
||||||
class LWRFLight(LightEntity):
|
class LWRFLight(LightEntity):
|
||||||
"""Representation of a LightWaveRF light."""
|
"""Representation of a LightWaveRF light."""
|
||||||
|
|
||||||
|
_attr_supported_features = SUPPORT_BRIGHTNESS
|
||||||
|
_attr_should_poll = False
|
||||||
|
|
||||||
def __init__(self, name, device_id, lwlink):
|
def __init__(self, name, device_id, lwlink):
|
||||||
"""Initialize LWRFLight entity."""
|
"""Initialize LWRFLight entity."""
|
||||||
self._name = name
|
self._attr_name = name
|
||||||
self._device_id = device_id
|
self._device_id = device_id
|
||||||
self._state = None
|
self._attr_brightness = MAX_BRIGHTNESS
|
||||||
self._brightness = MAX_BRIGHTNESS
|
|
||||||
self._lwlink = lwlink
|
self._lwlink = lwlink
|
||||||
|
|
||||||
@property
|
|
||||||
def supported_features(self):
|
|
||||||
"""Flag supported features."""
|
|
||||||
return SUPPORT_BRIGHTNESS
|
|
||||||
|
|
||||||
@property
|
|
||||||
def should_poll(self):
|
|
||||||
"""No polling needed for a LightWave light."""
|
|
||||||
return False
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self):
|
|
||||||
"""Lightwave light name."""
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@property
|
|
||||||
def brightness(self):
|
|
||||||
"""Brightness of this light between 0..MAX_BRIGHTNESS."""
|
|
||||||
return self._brightness
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_on(self):
|
|
||||||
"""Lightwave light is on state."""
|
|
||||||
return self._state
|
|
||||||
|
|
||||||
async def async_turn_on(self, **kwargs):
|
async def async_turn_on(self, **kwargs):
|
||||||
"""Turn the LightWave light on."""
|
"""Turn the LightWave light on."""
|
||||||
self._state = True
|
self._attr_is_on = True
|
||||||
|
|
||||||
if ATTR_BRIGHTNESS in kwargs:
|
if ATTR_BRIGHTNESS in kwargs:
|
||||||
self._brightness = kwargs[ATTR_BRIGHTNESS]
|
self._attr_brightness = kwargs[ATTR_BRIGHTNESS]
|
||||||
|
|
||||||
if self._brightness != MAX_BRIGHTNESS:
|
if self._attr_brightness != MAX_BRIGHTNESS:
|
||||||
self._lwlink.turn_on_with_brightness(
|
self._lwlink.turn_on_with_brightness(
|
||||||
self._device_id, self._name, self._brightness
|
self._device_id, self._attr_name, self._attr_brightness
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self._lwlink.turn_on_light(self._device_id, self._name)
|
self._lwlink.turn_on_light(self._device_id, self._attr_name)
|
||||||
|
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
||||||
async def async_turn_off(self, **kwargs):
|
async def async_turn_off(self, **kwargs):
|
||||||
"""Turn the LightWave light off."""
|
"""Turn the LightWave light off."""
|
||||||
self._state = False
|
self._attr_is_on = False
|
||||||
self._lwlink.turn_off(self._device_id, self._name)
|
self._lwlink.turn_off(self._device_id, self._attr_name)
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
"""Support for LightwaveRF TRV - Associated Battery."""
|
"""Support for LightwaveRF TRV - Associated Battery."""
|
||||||
from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT, SensorEntity
|
from homeassistant.components.sensor import (
|
||||||
from homeassistant.const import CONF_NAME, DEVICE_CLASS_BATTERY, PERCENTAGE
|
SensorDeviceClass,
|
||||||
|
SensorEntity,
|
||||||
|
SensorStateClass,
|
||||||
|
)
|
||||||
|
from homeassistant.const import CONF_NAME, PERCENTAGE
|
||||||
|
|
||||||
from . import CONF_SERIAL, LIGHTWAVE_LINK
|
from . import CONF_SERIAL, LIGHTWAVE_LINK
|
||||||
|
|
||||||
|
@ -25,31 +29,20 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
||||||
class LightwaveBattery(SensorEntity):
|
class LightwaveBattery(SensorEntity):
|
||||||
"""Lightwave TRV Battery."""
|
"""Lightwave TRV Battery."""
|
||||||
|
|
||||||
_attr_device_class = DEVICE_CLASS_BATTERY
|
_attr_device_class = SensorDeviceClass.BATTERY
|
||||||
_attr_native_unit_of_measurement = PERCENTAGE
|
_attr_native_unit_of_measurement = PERCENTAGE
|
||||||
_attr_state_class = STATE_CLASS_MEASUREMENT
|
_attr_state_class = SensorStateClass.MEASUREMENT
|
||||||
|
|
||||||
def __init__(self, name, lwlink, serial):
|
def __init__(self, name, lwlink, serial):
|
||||||
"""Initialize the Lightwave Trv battery sensor."""
|
"""Initialize the Lightwave Trv battery sensor."""
|
||||||
self._name = name
|
self._attr_name = name
|
||||||
self._state = None
|
|
||||||
self._lwlink = lwlink
|
self._lwlink = lwlink
|
||||||
self._serial = serial
|
self._serial = serial
|
||||||
self._attr_unique_id = f"{serial}-trv-battery"
|
self._attr_unique_id = f"{serial}-trv-battery"
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self):
|
|
||||||
"""Return the name of the sensor."""
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@property
|
|
||||||
def native_value(self):
|
|
||||||
"""Return the state of the sensor."""
|
|
||||||
return self._state
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Communicate with a Lightwave RTF Proxy to get state."""
|
"""Communicate with a Lightwave RTF Proxy to get state."""
|
||||||
(dummy_temp, dummy_targ, battery, dummy_output) = self._lwlink.read_trv_status(
|
(dummy_temp, dummy_targ, battery, dummy_output) = self._lwlink.read_trv_status(
|
||||||
self._serial
|
self._serial
|
||||||
)
|
)
|
||||||
self._state = battery
|
self._attr_native_value = battery
|
||||||
|
|
|
@ -23,36 +23,22 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
||||||
class LWRFSwitch(SwitchEntity):
|
class LWRFSwitch(SwitchEntity):
|
||||||
"""Representation of a LightWaveRF switch."""
|
"""Representation of a LightWaveRF switch."""
|
||||||
|
|
||||||
|
_attr_should_poll = False
|
||||||
|
|
||||||
def __init__(self, name, device_id, lwlink):
|
def __init__(self, name, device_id, lwlink):
|
||||||
"""Initialize LWRFSwitch entity."""
|
"""Initialize LWRFSwitch entity."""
|
||||||
self._name = name
|
self._attr_name = name
|
||||||
self._device_id = device_id
|
self._device_id = device_id
|
||||||
self._state = None
|
|
||||||
self._lwlink = lwlink
|
self._lwlink = lwlink
|
||||||
|
|
||||||
@property
|
|
||||||
def should_poll(self):
|
|
||||||
"""No polling needed for a LightWave light."""
|
|
||||||
return False
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self):
|
|
||||||
"""Lightwave switch name."""
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_on(self):
|
|
||||||
"""Lightwave switch is on state."""
|
|
||||||
return self._state
|
|
||||||
|
|
||||||
async def async_turn_on(self, **kwargs):
|
async def async_turn_on(self, **kwargs):
|
||||||
"""Turn the LightWave switch on."""
|
"""Turn the LightWave switch on."""
|
||||||
self._state = True
|
self._attr_is_on = True
|
||||||
self._lwlink.turn_on_switch(self._device_id, self._name)
|
self._lwlink.turn_on_switch(self._device_id, self._attr_name)
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
||||||
async def async_turn_off(self, **kwargs):
|
async def async_turn_off(self, **kwargs):
|
||||||
"""Turn the LightWave switch off."""
|
"""Turn the LightWave switch off."""
|
||||||
self._state = False
|
self._attr_is_on = False
|
||||||
self._lwlink.turn_off(self._device_id, self._name)
|
self._lwlink.turn_off(self._device_id, self._attr_name)
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
Loading…
Reference in New Issue