Skip to content

Commit bac4acf

Browse files
author
bobfox
authored
Merge pull request #57 from sunspec/development
Development
2 parents 222ccce + 9d1fa08 commit bac4acf

File tree

8 files changed

+1579
-1576
lines changed

8 files changed

+1579
-1576
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
setup(
1111
name='pysunspec2',
12-
version='1.0.6',
12+
version='1.0.7',
1313
description='Python SunSpec Tools',
1414
author='SunSpec Alliance',
1515
author_email='support@sunspec.org',

sunspec2/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# pySunSpec version
2-
VERSION = '1.0.6'
2+
VERSION = '1.0.7'

sunspec2/device.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ def _init_access(self, access_regions, index, count):
444444
if isinstance(groups, list) and len(groups) > 0:
445445
for group in groups:
446446
index, count = group._init_access(access_regions, index, count)
447-
elif groups.len > ACCESS_REGION_REGS:
447+
else:
448448
index, count = groups._init_access(access_regions, index, count)
449449

450450
return index, count

sunspec2/modbus/client.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def __init__(self, model_class=SunSpecModbusClientModel):
182182
device.Device.__init__(self, model_class=model_class)
183183
self.did = str(uuid.uuid4())
184184
self.retry_count = 2
185-
self.base_addr_list = [0, 40000, 50000]
185+
self.base_addr_list = [40000, 0, 50000]
186186
self.base_addr = None
187187

188188
def connect(self):
@@ -227,11 +227,14 @@ def scan(self, progress=None, delay=None, connect=True, full_model_read=True):
227227
for addr in self.base_addr_list:
228228
try:
229229
data = self.read(addr, 3)
230-
if data[:4] == b'SunS':
231-
self.base_addr = addr
232-
break
230+
if data:
231+
if data[:4] == b'SunS':
232+
self.base_addr = addr
233+
break
234+
else:
235+
error = 'Device responded - not SunSpec register map'
233236
else:
234-
error = 'Device responded - not SunSpec register map'
237+
error = 'data time out'
235238
except SunSpecModbusClientError as e:
236239
if not error:
237240
error = str(e)

sunspec2/modbus/modbus.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ def _read(self, addr, count, op=FUNC_READ_HOLDING):
528528
data_len = struct.unpack('>H', resp[TCP_HDR_O_LEN:TCP_HDR_O_LEN + 2])
529529
len_remaining = data_len[0] - (len(resp) - TCP_HDR_LEN)
530530
else:
531-
raise ModbusClientError('Response timeout')
531+
raise ModbusClientTimeout('Response timeout')
532532

533533
if not (resp[TCP_HDR_LEN + 1] & 0x80):
534534
len_remaining = (resp[TCP_HDR_LEN + 2] + TCP_HDR_LEN) - len(resp)
@@ -591,6 +591,8 @@ def read(self, addr, count, op=FUNC_READ_HOLDING):
591591
read_offset += read_count
592592
else:
593593
break
594+
except socket.timeout as e:
595+
raise ModbusClientTimeout(str(e))
594596
finally:
595597
if local_connect:
596598
self.disconnect()

0 commit comments

Comments
 (0)