Use class attrs and shorthand attrs for Shelly (#101249)
parent
85e782055b
commit
0fdf04391b
|
@ -148,6 +148,7 @@ class BlockSleepingClimate(
|
||||||
self.last_state_attributes: Mapping[str, Any]
|
self.last_state_attributes: Mapping[str, Any]
|
||||||
self._preset_modes: list[str] = []
|
self._preset_modes: list[str] = []
|
||||||
self._last_target_temp = SHTRV_01_TEMPERATURE_SETTINGS["default"]
|
self._last_target_temp = SHTRV_01_TEMPERATURE_SETTINGS["default"]
|
||||||
|
self._attr_name = coordinator.name
|
||||||
|
|
||||||
if self.block is not None and self.device_block is not None:
|
if self.block is not None and self.device_block is not None:
|
||||||
self._unique_id = f"{self.coordinator.mac}-{self.block.description}"
|
self._unique_id = f"{self.coordinator.mac}-{self.block.description}"
|
||||||
|
@ -160,6 +161,9 @@ class BlockSleepingClimate(
|
||||||
]
|
]
|
||||||
elif entry is not None:
|
elif entry is not None:
|
||||||
self._unique_id = entry.unique_id
|
self._unique_id = entry.unique_id
|
||||||
|
self._attr_device_info = DeviceInfo(
|
||||||
|
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)},
|
||||||
|
)
|
||||||
|
|
||||||
self._channel = cast(int, self._unique_id.split("_")[1])
|
self._channel = cast(int, self._unique_id.split("_")[1])
|
||||||
|
|
||||||
|
@ -173,11 +177,6 @@ class BlockSleepingClimate(
|
||||||
"""Set unique id of entity."""
|
"""Set unique id of entity."""
|
||||||
return self._unique_id
|
return self._unique_id
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self) -> str:
|
|
||||||
"""Name of entity."""
|
|
||||||
return self.coordinator.name
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def target_temperature(self) -> float | None:
|
def target_temperature(self) -> float | None:
|
||||||
"""Set target temperature."""
|
"""Set target temperature."""
|
||||||
|
@ -256,13 +255,6 @@ class BlockSleepingClimate(
|
||||||
"""Preset available modes."""
|
"""Preset available modes."""
|
||||||
return self._preset_modes
|
return self._preset_modes
|
||||||
|
|
||||||
@property
|
|
||||||
def device_info(self) -> DeviceInfo:
|
|
||||||
"""Device info."""
|
|
||||||
return DeviceInfo(
|
|
||||||
connections={(CONNECTION_NETWORK_MAC, self.coordinator.mac)},
|
|
||||||
)
|
|
||||||
|
|
||||||
def _check_is_off(self) -> bool:
|
def _check_is_off(self) -> bool:
|
||||||
"""Return if valve is off or on."""
|
"""Return if valve is off or on."""
|
||||||
return bool(
|
return bool(
|
||||||
|
@ -354,7 +346,7 @@ class BlockSleepingClimate(
|
||||||
severity=ir.IssueSeverity.ERROR,
|
severity=ir.IssueSeverity.ERROR,
|
||||||
translation_key="device_not_calibrated",
|
translation_key="device_not_calibrated",
|
||||||
translation_placeholders={
|
translation_placeholders={
|
||||||
"device_name": self.name,
|
"device_name": self.coordinator.name,
|
||||||
"ip_address": self.coordinator.device.ip_address,
|
"ip_address": self.coordinator.device.ip_address,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -70,14 +70,14 @@ class BlockShellyCover(ShellyBlockEntity, CoverEntity):
|
||||||
"""Entity that controls a cover on block based Shelly devices."""
|
"""Entity that controls a cover on block based Shelly devices."""
|
||||||
|
|
||||||
_attr_device_class = CoverDeviceClass.SHUTTER
|
_attr_device_class = CoverDeviceClass.SHUTTER
|
||||||
|
_attr_supported_features = (
|
||||||
|
CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE | CoverEntityFeature.STOP
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, coordinator: ShellyBlockCoordinator, block: Block) -> None:
|
def __init__(self, coordinator: ShellyBlockCoordinator, block: Block) -> None:
|
||||||
"""Initialize block cover."""
|
"""Initialize block cover."""
|
||||||
super().__init__(coordinator, block)
|
super().__init__(coordinator, block)
|
||||||
self.control_result: dict[str, Any] | None = None
|
self.control_result: dict[str, Any] | None = None
|
||||||
self._attr_supported_features = (
|
|
||||||
CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE | CoverEntityFeature.STOP
|
|
||||||
)
|
|
||||||
if self.coordinator.device.settings["rollers"][0]["positioning"]:
|
if self.coordinator.device.settings["rollers"][0]["positioning"]:
|
||||||
self._attr_supported_features |= CoverEntityFeature.SET_POSITION
|
self._attr_supported_features |= CoverEntityFeature.SET_POSITION
|
||||||
|
|
||||||
|
@ -146,14 +146,14 @@ class RpcShellyCover(ShellyRpcEntity, CoverEntity):
|
||||||
"""Entity that controls a cover on RPC based Shelly devices."""
|
"""Entity that controls a cover on RPC based Shelly devices."""
|
||||||
|
|
||||||
_attr_device_class = CoverDeviceClass.SHUTTER
|
_attr_device_class = CoverDeviceClass.SHUTTER
|
||||||
|
_attr_supported_features = (
|
||||||
|
CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE | CoverEntityFeature.STOP
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, coordinator: ShellyRpcCoordinator, id_: int) -> None:
|
def __init__(self, coordinator: ShellyRpcCoordinator, id_: int) -> None:
|
||||||
"""Initialize rpc cover."""
|
"""Initialize rpc cover."""
|
||||||
super().__init__(coordinator, f"cover:{id_}")
|
super().__init__(coordinator, f"cover:{id_}")
|
||||||
self._id = id_
|
self._id = id_
|
||||||
self._attr_supported_features = (
|
|
||||||
CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE | CoverEntityFeature.STOP
|
|
||||||
)
|
|
||||||
if self.status["pos_control"]:
|
if self.status["pos_control"]:
|
||||||
self._attr_supported_features |= CoverEntityFeature.SET_POSITION
|
self._attr_supported_features |= CoverEntityFeature.SET_POSITION
|
||||||
|
|
||||||
|
|
|
@ -326,7 +326,6 @@ class ShellyBlockEntity(CoordinatorEntity[ShellyBlockCoordinator]):
|
||||||
super().__init__(coordinator)
|
super().__init__(coordinator)
|
||||||
self.block = block
|
self.block = block
|
||||||
self._attr_name = get_block_entity_name(coordinator.device, block)
|
self._attr_name = get_block_entity_name(coordinator.device, block)
|
||||||
self._attr_should_poll = False
|
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
||||||
)
|
)
|
||||||
|
@ -364,7 +363,6 @@ class ShellyRpcEntity(CoordinatorEntity[ShellyRpcCoordinator]):
|
||||||
"""Initialize Shelly entity."""
|
"""Initialize Shelly entity."""
|
||||||
super().__init__(coordinator)
|
super().__init__(coordinator)
|
||||||
self.key = key
|
self.key = key
|
||||||
self._attr_should_poll = False
|
|
||||||
self._attr_device_info = {
|
self._attr_device_info = {
|
||||||
"connections": {(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
"connections": {(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
||||||
}
|
}
|
||||||
|
@ -571,7 +569,6 @@ class ShellySleepingBlockAttributeEntity(ShellyBlockAttributeEntity):
|
||||||
self.block: Block | None = block # type: ignore[assignment]
|
self.block: Block | None = block # type: ignore[assignment]
|
||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
|
|
||||||
self._attr_should_poll = False
|
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
||||||
)
|
)
|
||||||
|
@ -643,7 +640,6 @@ class ShellySleepingRpcAttributeEntity(ShellyRpcAttributeEntity):
|
||||||
self.attribute = attribute
|
self.attribute = attribute
|
||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
|
|
||||||
self._attr_should_poll = False
|
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
connections={(CONNECTION_NETWORK_MAC, coordinator.mac)}
|
||||||
)
|
)
|
||||||
|
|
|
@ -122,7 +122,6 @@ async def async_setup_entry(
|
||||||
class ShellyBlockEvent(ShellyBlockEntity, EventEntity):
|
class ShellyBlockEvent(ShellyBlockEntity, EventEntity):
|
||||||
"""Represent Block event entity."""
|
"""Represent Block event entity."""
|
||||||
|
|
||||||
_attr_should_poll = False
|
|
||||||
entity_description: ShellyBlockEventDescription
|
entity_description: ShellyBlockEventDescription
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -160,7 +159,6 @@ class ShellyBlockEvent(ShellyBlockEntity, EventEntity):
|
||||||
class ShellyRpcEvent(CoordinatorEntity[ShellyRpcCoordinator], EventEntity):
|
class ShellyRpcEvent(CoordinatorEntity[ShellyRpcCoordinator], EventEntity):
|
||||||
"""Represent RPC event entity."""
|
"""Represent RPC event entity."""
|
||||||
|
|
||||||
_attr_should_poll = False
|
|
||||||
entity_description: ShellyRpcEventDescription
|
entity_description: ShellyRpcEventDescription
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
|
Loading…
Reference in New Issue