From 1814ce999b69579ba01aa48945c7b4d82b38a168 Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Sat, 15 Jan 2022 17:19:04 +0100 Subject: [PATCH] added python script to craft messages --- test-msg-gen.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test-msg-gen.py diff --git a/test-msg-gen.py b/test-msg-gen.py new file mode 100644 index 00000000..1f2cf813 --- /dev/null +++ b/test-msg-gen.py @@ -0,0 +1,45 @@ +import binascii +import struct +import codecs + +print("Calculate NSPanel hex command from JSON payload\n") + +#value = input("Enter JSON:\n") +value = "entityUpdHeading,Heading1234" + +def crc16(data:bytes, poly:hex=0xA001) -> str: + ''' + CRC-16 MODBUS HASHING ALGORITHM + ''' + crc = 0xFFFF + for b in data: + crc ^= b + for _ in range(8): + crc = ((crc >> 1) ^ poly + if (crc & 0x0001) + else crc >> 1) + return crc + + +payload = bytes(value, 'ascii') + +header = binascii.unhexlify('55BB') + +print("length:", len(value)) + +length = len(value).to_bytes(1, 'little') + +bytes_payload = header + length + payload + +#print("bytes_payload:", bytes_payload) + +msg_crc = crc16(bytes_payload) + +#print('{:04x}'.format(msg_crc)) + +crc=struct.pack('H', msg_crc) + +command=binascii.hexlify(bytes_payload + crc) + +print("\n\n") +print(bytes.decode(command)) \ No newline at end of file