implemented method to toggle nightlight on some SP3 devices (#159)
* implemented method to toggle nightlight on some SP3 devices * implement nightlight feature to cli * check_power/check_nightligh fixes for py2.7
This commit is contained in:
parent
39cc64efce
commit
33a2e4ae54
2 changed files with 51 additions and 4 deletions
|
@ -391,7 +391,20 @@ class sp2(device):
|
|||
"""Sets the power state of the smart plug."""
|
||||
packet = bytearray(16)
|
||||
packet[0] = 2
|
||||
packet[4] = 1 if state else 0
|
||||
if self.check_nightlight():
|
||||
packet[4] = 3 if state else 2
|
||||
else:
|
||||
packet[4] = 1 if state else 0
|
||||
self.send_packet(0x6a, packet)
|
||||
|
||||
def set_nightlight(self, state):
|
||||
"""Sets the night light state of the smart plug"""
|
||||
packet = bytearray(16)
|
||||
packet[0] = 2
|
||||
if self.check_power():
|
||||
packet[4] = 3 if state else 1
|
||||
else:
|
||||
packet[4] = 2 if state else 0
|
||||
self.send_packet(0x6a, packet)
|
||||
|
||||
def check_power(self):
|
||||
|
@ -402,10 +415,24 @@ class sp2(device):
|
|||
err = response[0x22] | (response[0x23] << 8)
|
||||
if err == 0:
|
||||
payload = self.decrypt(bytes(response[0x38:]))
|
||||
if type(payload[0x4]) == int:
|
||||
state = bool(payload[0x4])
|
||||
if ord(payload[0x4]) == 1 or ord(payload[0x4]) == 3:
|
||||
state = True
|
||||
else:
|
||||
state = bool(ord(payload[0x4]))
|
||||
state = False
|
||||
return state
|
||||
|
||||
def check_nightlight(self):
|
||||
"""Returns the power state of the smart plug."""
|
||||
packet = bytearray(16)
|
||||
packet[0] = 1
|
||||
response = self.send_packet(0x6a, packet)
|
||||
err = response[0x22] | (response[0x23] << 8)
|
||||
if err == 0:
|
||||
payload = self.decrypt(bytes(response[0x38:]))
|
||||
if ord(payload[0x4]) == 2 or ord(payload[0x4]) == 3:
|
||||
state = True
|
||||
else:
|
||||
state = False
|
||||
return state
|
||||
|
||||
def get_energy(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue