predavalnice-kontroler/tse_serial/tse_serial_interpreter.py

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)