Module pyControl4.blind
Controls Control4 blind devices.
Classes
class C4Blind (director: C4Director, item_id: int)-
Expand source code
class C4Blind(C4Entity): async def get_battery_level(self) -> int | None: """Returns the battery of a blind. We currently don't know the range or meaning. """ value = await self.director.get_item_variable_value( self.item_id, "Battery Level" ) if value is None: return None return int(value) async def get_closing(self) -> bool | None: """Returns an indication of whether the blind is moving in the closed direction as a boolean (True=closing, False=opening). If the blind is stopped, reports the direction it last moved. """ value = await self.director.get_item_variable_value(self.item_id, "Closing") if value is None: return None return bool(value) async def get_fully_closed(self) -> bool | None: """Returns an indication of whether the blind is fully closed as a boolean (True=fully closed, False=at least partially open).""" value = await self.director.get_item_variable_value( self.item_id, "Fully Closed" ) if value is None: return None return bool(value) async def get_fully_open(self) -> bool | None: """Returns an indication of whether the blind is fully open as a boolean (True=fully open, False=at least partially closed).""" value = await self.director.get_item_variable_value(self.item_id, "Fully Open") if value is None: return None return bool(value) async def get_level(self) -> int | None: """Returns the level (current position) of a blind as an int 0-100. 0 is fully closed and 100 is fully open. """ value = await self.director.get_item_variable_value(self.item_id, "Level") if value is None: return None return int(value) async def get_open(self) -> bool | None: """Returns an indication of whether the blind is open as a boolean (True=open, False=closed). This is true even if the blind is only partially open. """ value = await self.director.get_item_variable_value(self.item_id, "Open") if value is None: return None return bool(value) async def get_opening(self) -> bool | None: """Returns an indication of whether the blind is moving in the open direction as a boolean (True=opening, False=closing). If the blind is stopped, reports the direction it last moved. """ value = await self.director.get_item_variable_value(self.item_id, "Opening") if value is None: return None return bool(value) async def get_stopped(self) -> bool | None: """Returns an indication of whether the blind is stopped as a boolean (True=stopped, False=moving).""" value = await self.director.get_item_variable_value(self.item_id, "Stopped") if value is None: return None return bool(value) async def get_target_level(self) -> int | None: """Returns the target level (desired position) of a blind as an int 0-100. The blind will move if this is different from the current level. 0 is fully closed and 100 is fully open. """ value = await self.director.get_item_variable_value( self.item_id, "Target Level" ) if value is None: return None return int(value) async def open(self) -> None: """Opens the blind completely.""" await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "SET_LEVEL_TARGET:LEVEL_TARGET_OPEN", {}, ) async def close(self) -> None: """Closes the blind completely.""" await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "SET_LEVEL_TARGET:LEVEL_TARGET_CLOSED", {}, ) async def set_level_target(self, level: int) -> None: """Sets the desired level of a blind; it will start moving towards that level. Level 0 is fully closed and level 100 is fully open. Parameters: `level` - (int) 0-100 """ await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "SET_LEVEL_TARGET", {"LEVEL_TARGET": level}, ) async def stop(self) -> None: """Stops the blind if it is moving. Shortly after stopping, the target level will be set to the level the blind had actually reached when it stopped. """ await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "STOP", {}, ) async def toggle(self) -> None: """Toggles the blind between open and closed. Has no effect if the blind is partially open. """ await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "TOGGLE", {}, )Creates a Control4 object.
Parameters
director- AC4Directorobject that corresponds to the Control4 Director that the device is connected to.item_id- The Control4 item ID.Ancestors
Methods
async def close(self) ‑> None-
Expand source code
async def close(self) -> None: """Closes the blind completely.""" await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "SET_LEVEL_TARGET:LEVEL_TARGET_CLOSED", {}, )Closes the blind completely.
async def get_battery_level(self) ‑> int | None-
Expand source code
async def get_battery_level(self) -> int | None: """Returns the battery of a blind. We currently don't know the range or meaning. """ value = await self.director.get_item_variable_value( self.item_id, "Battery Level" ) if value is None: return None return int(value)Returns the battery of a blind. We currently don't know the range or meaning.
async def get_closing(self) ‑> bool | None-
Expand source code
async def get_closing(self) -> bool | None: """Returns an indication of whether the blind is moving in the closed direction as a boolean (True=closing, False=opening). If the blind is stopped, reports the direction it last moved. """ value = await self.director.get_item_variable_value(self.item_id, "Closing") if value is None: return None return bool(value)Returns an indication of whether the blind is moving in the closed direction as a boolean (True=closing, False=opening). If the blind is stopped, reports the direction it last moved.
async def get_fully_closed(self) ‑> bool | None-
Expand source code
async def get_fully_closed(self) -> bool | None: """Returns an indication of whether the blind is fully closed as a boolean (True=fully closed, False=at least partially open).""" value = await self.director.get_item_variable_value( self.item_id, "Fully Closed" ) if value is None: return None return bool(value)Returns an indication of whether the blind is fully closed as a boolean (True=fully closed, False=at least partially open).
async def get_fully_open(self) ‑> bool | None-
Expand source code
async def get_fully_open(self) -> bool | None: """Returns an indication of whether the blind is fully open as a boolean (True=fully open, False=at least partially closed).""" value = await self.director.get_item_variable_value(self.item_id, "Fully Open") if value is None: return None return bool(value)Returns an indication of whether the blind is fully open as a boolean (True=fully open, False=at least partially closed).
async def get_level(self) ‑> int | None-
Expand source code
async def get_level(self) -> int | None: """Returns the level (current position) of a blind as an int 0-100. 0 is fully closed and 100 is fully open. """ value = await self.director.get_item_variable_value(self.item_id, "Level") if value is None: return None return int(value)Returns the level (current position) of a blind as an int 0-100. 0 is fully closed and 100 is fully open.
async def get_open(self) ‑> bool | None-
Expand source code
async def get_open(self) -> bool | None: """Returns an indication of whether the blind is open as a boolean (True=open, False=closed). This is true even if the blind is only partially open. """ value = await self.director.get_item_variable_value(self.item_id, "Open") if value is None: return None return bool(value)Returns an indication of whether the blind is open as a boolean (True=open, False=closed). This is true even if the blind is only partially open.
async def get_opening(self) ‑> bool | None-
Expand source code
async def get_opening(self) -> bool | None: """Returns an indication of whether the blind is moving in the open direction as a boolean (True=opening, False=closing). If the blind is stopped, reports the direction it last moved. """ value = await self.director.get_item_variable_value(self.item_id, "Opening") if value is None: return None return bool(value)Returns an indication of whether the blind is moving in the open direction as a boolean (True=opening, False=closing). If the blind is stopped, reports the direction it last moved.
async def get_stopped(self) ‑> bool | None-
Expand source code
async def get_stopped(self) -> bool | None: """Returns an indication of whether the blind is stopped as a boolean (True=stopped, False=moving).""" value = await self.director.get_item_variable_value(self.item_id, "Stopped") if value is None: return None return bool(value)Returns an indication of whether the blind is stopped as a boolean (True=stopped, False=moving).
async def get_target_level(self) ‑> int | None-
Expand source code
async def get_target_level(self) -> int | None: """Returns the target level (desired position) of a blind as an int 0-100. The blind will move if this is different from the current level. 0 is fully closed and 100 is fully open. """ value = await self.director.get_item_variable_value( self.item_id, "Target Level" ) if value is None: return None return int(value)Returns the target level (desired position) of a blind as an int 0-100. The blind will move if this is different from the current level. 0 is fully closed and 100 is fully open.
async def open(self) ‑> None-
Expand source code
async def open(self) -> None: """Opens the blind completely.""" await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "SET_LEVEL_TARGET:LEVEL_TARGET_OPEN", {}, )Opens the blind completely.
async def set_level_target(self, level: int) ‑> None-
Expand source code
async def set_level_target(self, level: int) -> None: """Sets the desired level of a blind; it will start moving towards that level. Level 0 is fully closed and level 100 is fully open. Parameters: `level` - (int) 0-100 """ await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "SET_LEVEL_TARGET", {"LEVEL_TARGET": level}, )Sets the desired level of a blind; it will start moving towards that level. Level 0 is fully closed and level 100 is fully open.
Parameters
level- (int) 0-100 async def stop(self) ‑> None-
Expand source code
async def stop(self) -> None: """Stops the blind if it is moving. Shortly after stopping, the target level will be set to the level the blind had actually reached when it stopped. """ await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "STOP", {}, )Stops the blind if it is moving. Shortly after stopping, the target level will be set to the level the blind had actually reached when it stopped.
async def toggle(self) ‑> None-
Expand source code
async def toggle(self) -> None: """Toggles the blind between open and closed. Has no effect if the blind is partially open. """ await self.director.send_post_request( f"/api/v1/items/{self.item_id}/commands", "TOGGLE", {}, )Toggles the blind between open and closed. Has no effect if the blind is partially open.