Create a window_covering_mode
attribute and simplify inversion switch
This commit is contained in:
parent
5dd4ea9b21
commit
048d649b4d
2 changed files with 17 additions and 10 deletions
|
@ -270,3 +270,8 @@ class WindowCoveringClusterHandler(ClusterHandler):
|
|||
def window_covering_type(self) -> WindowCovering.WindowCoveringType | None:
|
||||
"""Return the window covering type."""
|
||||
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:
|
||||
"""Turn the entity on or off."""
|
||||
name: str = WindowCovering.AttributeDefs.window_covering_mode.name
|
||||
current_mode: WindowCoveringMode = WindowCoveringMode(
|
||||
self._cluster_handler.cluster.get(name)
|
||||
)
|
||||
send_command: bool = False
|
||||
if (current_mode := self._cluster_handler.window_covering_mode) is None:
|
||||
await self.async_update()
|
||||
|
||||
current_mode = self._cluster_handler.window_covering_mode
|
||||
|
||||
if invert and WindowCoveringMode.Motor_direction_reversed not in current_mode:
|
||||
current_mode |= WindowCoveringMode.Motor_direction_reversed
|
||||
send_command = True
|
||||
elif not invert and WindowCoveringMode.Motor_direction_reversed in current_mode:
|
||||
current_mode &= ~WindowCoveringMode.Motor_direction_reversed
|
||||
send_command = True
|
||||
if send_command:
|
||||
await self._cluster_handler.write_attributes_safe({name: current_mode})
|
||||
await self.async_update()
|
||||
else:
|
||||
return
|
||||
|
||||
await self._cluster_handler.write_attributes_safe(
|
||||
{WindowCovering.AttributeDefs.window_covering_mode.name: current_mode}
|
||||
)
|
||||
await self.async_update()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue