mirror of
https://github.com/home-assistant/core.git
synced 2025-08-06 06:05:10 +02:00
Create a window_covering_mode
attribute and simplify inversion switch
This commit is contained in:
@@ -270,3 +270,8 @@ class WindowCoveringClusterHandler(ClusterHandler):
|
|||||||
def window_covering_type(self) -> WindowCovering.WindowCoveringType | None:
|
def window_covering_type(self) -> WindowCovering.WindowCoveringType | None:
|
||||||
"""Return the window covering type."""
|
"""Return the window covering type."""
|
||||||
return self.cluster.get(WindowCovering.AttributeDefs.window_covering_type.name)
|
return self.cluster.get(WindowCovering.AttributeDefs.window_covering_type.name)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def window_covering_mode(self) -> WindowCovering.WindowCoveringMode | None:
|
||||||
|
"""Return the window covering mode."""
|
||||||
|
return self.cluster.get(WindowCovering.AttributeDefs.window_covering_mode.name)
|
||||||
|
@@ -635,17 +635,19 @@ class WindowCoveringInversionSwitch(ZHASwitchConfigurationEntity):
|
|||||||
|
|
||||||
async def _async_on_off(self, invert: bool) -> None:
|
async def _async_on_off(self, invert: bool) -> None:
|
||||||
"""Turn the entity on or off."""
|
"""Turn the entity on or off."""
|
||||||
name: str = WindowCovering.AttributeDefs.window_covering_mode.name
|
if (current_mode := self._cluster_handler.window_covering_mode) is None:
|
||||||
current_mode: WindowCoveringMode = WindowCoveringMode(
|
await self.async_update()
|
||||||
self._cluster_handler.cluster.get(name)
|
|
||||||
)
|
current_mode = self._cluster_handler.window_covering_mode
|
||||||
send_command: bool = False
|
|
||||||
if invert and WindowCoveringMode.Motor_direction_reversed not in current_mode:
|
if invert and WindowCoveringMode.Motor_direction_reversed not in current_mode:
|
||||||
current_mode |= WindowCoveringMode.Motor_direction_reversed
|
current_mode |= WindowCoveringMode.Motor_direction_reversed
|
||||||
send_command = True
|
|
||||||
elif not invert and WindowCoveringMode.Motor_direction_reversed in current_mode:
|
elif not invert and WindowCoveringMode.Motor_direction_reversed in current_mode:
|
||||||
current_mode &= ~WindowCoveringMode.Motor_direction_reversed
|
current_mode &= ~WindowCoveringMode.Motor_direction_reversed
|
||||||
send_command = True
|
else:
|
||||||
if send_command:
|
return
|
||||||
await self._cluster_handler.write_attributes_safe({name: current_mode})
|
|
||||||
await self.async_update()
|
await self._cluster_handler.write_attributes_safe(
|
||||||
|
{WindowCovering.AttributeDefs.window_covering_mode.name: current_mode}
|
||||||
|
)
|
||||||
|
await self.async_update()
|
||||||
|
Reference in New Issue
Block a user