def test_decode_with_address(self): pkt = Packet.decode('820003600000001b') self.assertEqual(pkt.address, 0x00) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.USER_INTERFACE) self.assertEqual(pkt.data, '000000') self.assertIsNone(pkt.timestamp) self.assertTrue(pkt.is_user_interface_resp)
def test_decode_without_address(self): pkt = Packet.decode('820361230001f6') self.assertIsNone(pkt.address) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS) self.assertEqual(pkt.data, '230001') self.assertIsNone(pkt.timestamp) self.assertFalse(pkt.is_user_interface_resp)
def test_decode_with_address_and_time(self): pkt = Packet.decode('8709036101050018122709413536') self.assertEqual(pkt.address, 0x09) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS) self.assertEqual(pkt.data, '010500') self.assertEqual(pkt.timestamp, datetime.datetime( year=2018, month=12, day=27, hour=9, minute=41, second=35)) self.assertFalse(pkt.is_user_interface_resp)
def test_user_interface_packet_decode(self): pkt = Packet.decode('8300c6012345678912EE7') self.assertEqual(pkt.start, 0x83) self.assertEqual(pkt.address, 0x00) self.assertEqual(pkt.length, 12) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.USER_INTERFACE) self.assertEqual(pkt.data, '12345678912E') self.assertIsNone(pkt.timestamp) self.assertEqual(pkt.checksum, 0xe7)
def test_system_status_packet_decode(self): pkt = Packet.decode('8700036100070018092118370974') self.assertEqual(pkt.start, 0x87) self.assertEqual(pkt.address, 0x00) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS) self.assertEqual(pkt.data, '000700') self.assertEqual(pkt.timestamp, datetime.datetime( year=2018, month=9, day=21, hour=18, minute=37, second=9))
def test_decode_zone_16(self): pkt = Packet.decode('8700036100160019022823032274') self.assertEqual(pkt.start, 0x87) self.assertEqual(pkt.address, 0x00) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS) self.assertEqual(pkt.data, '001600') self.assertEqual(pkt.timestamp, datetime.datetime( year=2019, month=2, day=28, hour=23, minute=3, second=22))
def test_bad_timestamp(self): pkt = Packet.decode('8700036100070019022517600057') self.assertEqual(pkt.start, 0x87) self.assertEqual(pkt.address, 0x00) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS) self.assertEqual(pkt.data, '000700') self.assertEqual(pkt.timestamp, datetime.datetime( year=2019, month=2, day=25, hour=18, minute=0, second=0))
def test_decode_status_update_response(self): ''' 82 00 03 60 070000 14 ''' pkt = Packet.decode('8200036007000014') self.assertEqual(pkt.start, 0x82) self.assertEqual(pkt.address, 0x00) self.assertEqual(pkt.length, 3) self.assertEqual(pkt.seq, 0x00) self.assertEqual(pkt.command, CommandType.USER_INTERFACE) self.assertEqual(pkt.data, '070000') self.assertIsNone(pkt.timestamp)
def test_decode(self): with open(fixture_path('sample_output.txt')) as f: for line in f.readlines(): line = line.strip() pkt = Packet.decode(line) _LOGGER.info("Decoded '%s' into %s", line, pkt)
def test_decode_update(self): pkt = Packet.decode('820003601700867e') event = BaseEvent.decode(pkt) print(pkt) print(event)