1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
"""Controls Control4 Fan devices."""
from pyControl4 import C4Entity
class C4Fan(C4Entity):
# ------------------------
# Fan State Getters
# ------------------------
async def getState(self):
"""
Returns the current power state of the fan.
Returns:
bool: True if the fan is on, False otherwise.
"""
value = await self.director.getItemVariableValue(self.item_id, "IS_ON")
return bool(value)
async def getSpeed(self):
"""
Returns the current speed of the fan controller.
Valid speed values:
0 - Off
1 - Low
2 - Medium
3 - Medium High
4 - High
Note:
Only valid for fan controllers. On non-dimmer switches,
use `getState()` instead.
Returns:
int: Current fan speed (0–4).
"""
value = await self.director.getItemVariableValue(self.item_id, "CURRENT_SPEED")
return int(value)
# ------------------------
# Fan Control Setters
# ------------------------
async def setSpeed(self, speed: int):
"""
Sets the fan speed or turns it off.
Parameters:
speed (int): Fan speed level:
0 - Off
1 - Low
2 - Medium
3 - Medium High
4 - High
"""
await self.director.sendPostRequest(
f"/api/v1/items/{self.item_id}/commands",
"SET_SPEED",
{"SPEED": speed},
)
async def setPreset(self, preset: int):
"""
Sets the fan's preset speed — the speed used when the fan is
turned on without specifying speed.
Parameters:
preset (int): Preset fan speed level:
0 - Off
1 - Low
2 - Medium
3 - Medium High
4 - High
"""
await self.director.sendPostRequest(
f"/api/v1/items/{self.item_id}/commands",
"DESIGNATE_PRESET",
{"PRESET": preset},
)
|