35 lines
No EOL
807 B
Python
35 lines
No EOL
807 B
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class RelayState:
|
|
relay_id: int
|
|
state: bool
|
|
|
|
|
|
def resp_to_relay_state(cmd: str) -> RelayState:
|
|
state = True if cmd.find("ON") > -1 else False
|
|
#state = False if cmd.find("OFF") > -1 and state == None else None
|
|
|
|
r_state = RelayState(0, state)
|
|
id = 0
|
|
|
|
if cmd.startswith("T"):
|
|
id = int(cmd[1]) + (8 if cmd[2] == "B" else 0)
|
|
elif cmd.startswith("re_"):
|
|
id = int(cmd[3]) + (8 if cmd[4] == "B" else 0)
|
|
|
|
r_state = RelayState(id, state)
|
|
return r_state
|
|
|
|
|
|
def relay_state_to_cmd(r_state: RelayState) -> str:
|
|
#r[NUM][CMD]
|
|
cmd = 8 if r_state.state else 9
|
|
id = r_state.relay_id
|
|
# banka B
|
|
if id > 8:
|
|
cmd -= 2
|
|
id -= 8
|
|
return f"r{id}{cmd}"
|
|
#return "r" + str(id) + str(cmd) |