Skip to content

Commit 4c896d1

Browse files
committed
#157 Pass remote unit id when using remote slave context
1 parent 22f1843 commit 4c896d1

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

pymodbus/datastore/remote.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ class RemoteSlaveContext(IModbusSlaveContext):
1717
a remote device (depending on the client used)
1818
'''
1919

20-
def __init__(self, client):
20+
def __init__(self, client, unit=None):
2121
''' Initializes the datastores
2222
2323
:param client: The client to retrieve values with
24+
:param unit: Unit ID of the remote slave
2425
'''
2526
self._client = client
27+
self.unit = unit
2628
self.__build_mapping()
2729

2830
def reset(self):
@@ -77,17 +79,20 @@ def __build_mapping(self):
7779
A quick helper method to build the function
7880
code mapper.
7981
'''
82+
kwargs = {}
83+
if self.unit:
84+
kwargs["unit"] = self.unit
8085
self.__get_callbacks = {
81-
'd': lambda a, c: self._client.read_discrete_inputs(a, c),
82-
'c': lambda a, c: self._client.read_coils(a, c),
83-
'h': lambda a, c: self._client.read_holding_registers(a, c),
84-
'i': lambda a, c: self._client.read_input_registers(a, c),
86+
'd': lambda a, c: self._client.read_discrete_inputs(a, c, **kwargs),
87+
'c': lambda a, c: self._client.read_coils(a, c, **kwargs),
88+
'h': lambda a, c: self._client.read_holding_registers(a, c, **kwargs),
89+
'i': lambda a, c: self._client.read_input_registers(a, c, **kwargs),
8590
}
8691
self.__set_callbacks = {
87-
'd': lambda a, v: self._client.write_coils(a, v),
88-
'c': lambda a, v: self._client.write_coils(a, v),
89-
'h': lambda a, v: self._client.write_registers(a, v),
90-
'i': lambda a, v: self._client.write_registers(a, v),
92+
'd': lambda a, v: self._client.write_coils(a, v, **kwargs),
93+
'c': lambda a, v: self._client.write_coils(a, v, **kwargs),
94+
'h': lambda a, v: self._client.write_registers(a, v, **kwargs),
95+
'i': lambda a, v: self._client.write_registers(a, v, **kwargs),
9196
}
9297

9398
def __extract_result(self, fx, result):

0 commit comments

Comments
 (0)