From d92af918933ce6a5db696c6b44bedac9357951c2 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 29 Aug 2021 17:13:19 +0200 Subject: [PATCH] Implement PushButton packet --- MAXPacket.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/MAXPacket.py b/MAXPacket.py index 67a03d4..79507bb 100644 --- a/MAXPacket.py +++ b/MAXPacket.py @@ -1,5 +1,5 @@ import math - +from enum import Enum class MAXPacketFactory: def create_packet(rec: str): @@ -16,6 +16,8 @@ class MAXPacketFactory: return MAXWakeUpPacket(rec) elif pkt_type == 0xF0: return MAXResetPacket(rec) + elif pkt_type == 0x50: + return MAXPushButtonPacket(rec) else: print("Unknown message type: {}".format(pkt_type)) result = MAXPacket() @@ -116,6 +118,32 @@ class MAXAckPacket(MAXPacket): return result +class PushButtonState(Enum): + AUTO = 0 + ECO = 1 + UNKNOWN = 2 + + +class MAXPushButtonPacket(MAXPacket): + def __init__(self, rec: str): + self.from_received(rec) + if rec[26:27] == "0": + self.button_state = PushButtonState.ECO + elif rec[26:27] == "1": + self.button_state = PushButtonState.AUTO + else: + self.button_state = PushButtonState.UNKNOWN + if rec[23:24] == "5": + self.retransmit = 1 + else: + self.retransmit = 0 + + def to_string(self): + result = "{}\nMAXPushButtonPacket: button_state={} retransmit={}".format(super().to_string(), + self.button_state, self.retransmit) + return result + + class MAXWakeUpPacket(MAXPacket): def __init__(self, rec): super().__init__()