MAGRA
a = bytearray([0x20, 0x05, 0x00, 0x10, 0x100-(0x20+0x05+0x00+0x10)])
Для вычисления контрольной суммы можно использовать преимущество bytearray():
>>> a = bytearray([0x20, 0x05, 0x00, 0x10])
>>> a.append(0x100 - sum(a))
>>> a
bytearray(b' \x05\x00\x10\xcb')
>>>
Там ещё надо добавить кое-что:
>>> a = bytearray([0x20, 0x05, 0x00, 0x10])
>>> a.append((0x100 - sum(a)) & 0xFF)
>>> a
bytearray(b' \x05\x00\x10\xcb')
>>>
Контрольная сумма однобайтовая, а сумма байт может получиться больше байта.
Для приёма тоже bytearray() используй, чтобы оперировать числами, а не строками.
>>> b = bytearray('abc')
>>> list(b)
[97, 98, 99]
>>>