Skip to content

Commit 1c5ae29

Browse files
committed
Support for both python2 and python3
1 parent a9a155a commit 1c5ae29

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

PyGrowatt/growatt_framer.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import struct
2+
import sys
23

34
from pymodbus.exceptions import ModbusIOException
45
from pymodbus.framer import SOCKET_FRAME_HEADER
@@ -123,7 +124,15 @@ def buildPacket(self, message):
123124
return packet
124125

125126
def _xor(self, data):
126-
decrypted = b''
127-
for i in range(0, len(data)):
128-
decrypted += bytes([data[i] ^ self._key[i % len(self._key)]])
129-
return decrypted
127+
if sys.version_info[0] == 2:
128+
decrypted = ''
129+
for i in range(0, len(data)):
130+
decrypted += chr(ord(data[i]) ^ ord(self._key[i % len(self._key)]))
131+
return decrypted
132+
elif sys.version_info[0] == 3:
133+
decrypted = b''
134+
for i in range(0, len(data)):
135+
decrypted += bytes([data[i] ^ self._key[i % len(self._key)]])
136+
return decrypted
137+
else:
138+
return data

test/test_Growatt.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import binascii
2+
import sys
23
from unittest import TestCase
34

45
from pymodbus.datastore import ModbusSparseDataBlock, ModbusSlaveContext
@@ -8,10 +9,18 @@
89

910
def _xor(data):
1011
key = b'Growatt'
11-
decrypted = b''
12-
for i in range(0, len(data)):
13-
decrypted += bytes([data[i] ^ key[i % len(key)]])
14-
return decrypted
12+
if sys.version_info[0] == 2:
13+
decrypted = ''
14+
for i in range(0, len(data)):
15+
decrypted += chr(ord(data[i]) ^ ord(key[i % len(key)]))
16+
return decrypted
17+
elif sys.version_info[0] == 3:
18+
decrypted = b''
19+
for i in range(0, len(data)):
20+
decrypted += bytes([data[i] ^ key[i % len(key)]])
21+
return decrypted
22+
else:
23+
return data
1524

1625

1726
class TestGrowattBufferedEnergyRequest(TestCase):

0 commit comments

Comments
 (0)