|
@@ -17,6 +17,7 @@ COMMAND_TURN_OFF = f"{COMMAND_HEADER}0f70010000"
|
|
|
COMMAND_TURN_ON = f"{COMMAND_HEADER}0f70010100"
|
|
|
COMMAND_TOGGLE = f"{COMMAND_HEADER}0f70010200"
|
|
|
COMMAND_GET_VOLTAGE_AND_CURRENT = f"{COMMAND_HEADER}0f7106000000"
|
|
|
+COMMAND_GET_SWITCH_STATE = f"{COMMAND_HEADER}0f7101000000"
|
|
|
PASSIVE_POLL_INTERVAL = 10 * 60
|
|
|
|
|
|
|
|
@@ -87,6 +88,15 @@ class SwitchbotRelaySwitch(SwitchbotEncryptedDevice):
|
|
|
}
|
|
|
return None
|
|
|
|
|
|
+ async def get_basic_info(self) -> dict[str, Any] | None:
|
|
|
+ """Get the current state of the switch."""
|
|
|
+ result = await self._send_command(COMMAND_GET_SWITCH_STATE)
|
|
|
+ if self._check_command_result(result, 0, {1}):
|
|
|
+ return {
|
|
|
+ "is_on": result[1] & 0x01 != 0,
|
|
|
+ }
|
|
|
+ return None
|
|
|
+
|
|
|
def poll_needed(self, seconds_since_last_poll: float | None) -> bool:
|
|
|
"""Return if device needs polling."""
|
|
|
if self._force_next_update:
|