Skip to content

Commit

Permalink
Support for both python2 and python3
Browse files Browse the repository at this point in the history
  • Loading branch information
aaronjbrown committed May 2, 2021
1 parent a9a155a commit 1c5ae29
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
17 changes: 13 additions & 4 deletions PyGrowatt/growatt_framer.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import struct
import sys

from pymodbus.exceptions import ModbusIOException
from pymodbus.framer import SOCKET_FRAME_HEADER
Expand Down Expand Up @@ -123,7 +124,15 @@ def buildPacket(self, message):
return packet

def _xor(self, data):
decrypted = b''
for i in range(0, len(data)):
decrypted += bytes([data[i] ^ self._key[i % len(self._key)]])
return decrypted
if sys.version_info[0] == 2:
decrypted = ''
for i in range(0, len(data)):
decrypted += chr(ord(data[i]) ^ ord(self._key[i % len(self._key)]))
return decrypted
elif sys.version_info[0] == 3:
decrypted = b''
for i in range(0, len(data)):
decrypted += bytes([data[i] ^ self._key[i % len(self._key)]])
return decrypted
else:
return data
17 changes: 13 additions & 4 deletions test/test_Growatt.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import binascii
import sys
from unittest import TestCase

from pymodbus.datastore import ModbusSparseDataBlock, ModbusSlaveContext
Expand All @@ -8,10 +9,18 @@

def _xor(data):
key = b'Growatt'
decrypted = b''
for i in range(0, len(data)):
decrypted += bytes([data[i] ^ key[i % len(key)]])
return decrypted
if sys.version_info[0] == 2:
decrypted = ''
for i in range(0, len(data)):
decrypted += chr(ord(data[i]) ^ ord(key[i % len(key)]))
return decrypted
elif sys.version_info[0] == 3:
decrypted = b''
for i in range(0, len(data)):
decrypted += bytes([data[i] ^ key[i % len(key)]])
return decrypted
else:
return data


class TestGrowattBufferedEnergyRequest(TestCase):
Expand Down

0 comments on commit 1c5ae29

Please sign in to comment.