Skip to content

Commit 25ffa53

Browse files
authored
Clean client API imports. (#1819)
1 parent d03d128 commit 25ffa53

21 files changed

+103
-158
lines changed

examples/client_async.py

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,10 @@
3131

3232
import helper
3333

34-
# --------------------------------------------------------------------------- #
35-
# import the various client implementations
36-
# --------------------------------------------------------------------------- #
37-
from pymodbus.client import (
38-
AsyncModbusSerialClient,
39-
AsyncModbusTcpClient,
40-
AsyncModbusTlsClient,
41-
AsyncModbusUdpClient,
42-
)
43-
from pymodbus.exceptions import ModbusIOException
44-
45-
46-
logging.basicConfig()
34+
import pymodbus.client as modbusClient
35+
from pymodbus import ModbusException
36+
37+
4738
_logger = logging.getLogger(__file__)
4839
_logger.setLevel("DEBUG")
4940

@@ -55,7 +46,7 @@ def setup_async_client(description=None, cmdline=None):
5546
)
5647
_logger.info("### Create client object")
5748
if args.comm == "tcp":
58-
client = AsyncModbusTcpClient(
49+
client = modbusClient.AsyncModbusTcpClient(
5950
args.host,
6051
port=args.port, # on which port
6152
# Common optional parameters:
@@ -69,7 +60,7 @@ def setup_async_client(description=None, cmdline=None):
6960
# source_address=("localhost", 0),
7061
)
7162
elif args.comm == "udp":
72-
client = AsyncModbusUdpClient(
63+
client = modbusClient.AsyncModbusUdpClient(
7364
args.host,
7465
port=args.port,
7566
# Common optional parameters:
@@ -81,7 +72,7 @@ def setup_async_client(description=None, cmdline=None):
8172
# source_address=None,
8273
)
8374
elif args.comm == "serial":
84-
client = AsyncModbusSerialClient(
75+
client = modbusClient.AsyncModbusSerialClient(
8576
args.port,
8677
# Common optional parameters:
8778
# framer=ModbusRtuFramer,
@@ -96,7 +87,7 @@ def setup_async_client(description=None, cmdline=None):
9687
# handle_local_echo=False,
9788
)
9889
elif args.comm == "tls":
99-
client = AsyncModbusTlsClient(
90+
client = modbusClient.AsyncModbusTlsClient(
10091
args.host,
10192
port=args.port,
10293
# Common optional parameters:
@@ -135,7 +126,7 @@ async def run_a_few_calls(client):
135126
rr = await client.read_holding_registers(4, 2, slave=1)
136127
assert rr.registers[0] == 17
137128
assert rr.registers[1] == 17
138-
except ModbusIOException:
129+
except ModbusException:
139130
pass
140131

141132

examples/client_async_calls.py

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,7 @@
3434

3535
import client_async
3636

37-
import pymodbus.diag_message as req_diag
38-
import pymodbus.mei_message as req_mei
39-
import pymodbus.other_message as req_other
40-
from pymodbus.exceptions import ModbusException
4137

42-
43-
logging.basicConfig()
4438
_logger = logging.getLogger(__file__)
4539
_logger.setLevel("DEBUG")
4640

@@ -56,14 +50,14 @@ async def async_template_call(client):
5650
"""Show complete modbus call, async version."""
5751
try:
5852
rr = await client.read_coils(1, 1, slave=SLAVE)
59-
except ModbusException as exc:
53+
except client_async.ModbusException as exc:
6054
txt = f"ERROR: exception in pymodbus {exc}"
6155
_logger.error(txt)
6256
raise exc
6357
if rr.isError():
6458
txt = "ERROR: pymodbus returned an error!"
6559
_logger.error(txt)
66-
raise ModbusException(txt)
60+
raise client_async.ModbusException(txt)
6761

6862
# Validate data
6963
txt = f"### Template coils response: {rr.bits!s}"
@@ -160,24 +154,24 @@ async def async_handle_input_registers(client):
160154
async def async_execute_information_requests(client):
161155
"""Execute extended information requests."""
162156
_logger.info("### Running information requests.")
163-
rr = await client.execute(req_mei.ReadDeviceInformationRequest(slave=SLAVE))
157+
rr = await client.read_device_information(slave=SLAVE)
164158
assert not rr.isError() # test that call was OK
165159
assert rr.information[0] == b"Pymodbus"
166160

167-
rr = await client.execute(req_other.ReportSlaveIdRequest(slave=SLAVE))
161+
rr = await client.report_slave_id(slave=SLAVE)
168162
assert not rr.isError() # test that call was OK
169-
# assert rr.status
163+
# assert not rr.status
170164

171-
rr = await client.execute(req_other.ReadExceptionStatusRequest(slave=SLAVE))
165+
rr = await client.read_exception_status(slave=SLAVE)
172166
assert not rr.isError() # test that call was OK
173167
# assert not rr.status
174168

175-
rr = await client.execute(req_other.GetCommEventCounterRequest(slave=SLAVE))
169+
rr = await client.diag_get_comm_event_counter(slave=SLAVE)
176170
assert not rr.isError() # test that call was OK
177171
# assert rr.status
178172
# assert not rr.count
179173

180-
rr = await client.execute(req_other.GetCommEventLogRequest(slave=SLAVE))
174+
rr = await client.diag_get_comm_event_log(slave=SLAVE)
181175
assert not rr.isError() # test that call was OK
182176
# assert rr.status
183177
# assert not (rr.event_count + rr.message_count + len(rr.events))
@@ -187,32 +181,27 @@ async def async_execute_diagnostic_requests(client):
187181
"""Execute extended diagnostic requests."""
188182
_logger.info("### Running diagnostic requests.")
189183
message = b"OK"
190-
rr = await client.execute(
191-
req_diag.ReturnQueryDataRequest(message=message, slave=SLAVE)
192-
)
184+
rr = await client.diag_query_data(msg=message, slave=SLAVE)
193185
assert not rr.isError() # test that call was OK
194186
assert rr.message == message
195187

196-
await client.execute(req_diag.RestartCommunicationsOptionRequest(slave=SLAVE))
197-
await client.execute(req_diag.ReturnDiagnosticRegisterRequest(slave=SLAVE))
198-
await client.execute(req_diag.ChangeAsciiInputDelimiterRequest(slave=SLAVE))
199-
200-
# NOT WORKING: _check_call(await client.execute(req_diag.ForceListenOnlyModeRequest(slave=SLAVE)))
201-
# does not send a response
202-
203-
await client.execute(req_diag.ClearCountersRequest())
204-
await client.execute(req_diag.ReturnBusCommunicationErrorCountRequest(slave=SLAVE))
205-
await client.execute(req_diag.ReturnBusExceptionErrorCountRequest(slave=SLAVE))
206-
await client.execute(req_diag.ReturnSlaveMessageCountRequest(slave=SLAVE))
207-
await client.execute(req_diag.ReturnSlaveNoResponseCountRequest(slave=SLAVE))
208-
await client.execute(req_diag.ReturnSlaveNAKCountRequest(slave=SLAVE))
209-
await client.execute(req_diag.ReturnSlaveBusyCountRequest(slave=SLAVE))
210-
await client.execute(
211-
req_diag.ReturnSlaveBusCharacterOverrunCountRequest(slave=SLAVE)
212-
)
213-
await client.execute(req_diag.ReturnIopOverrunCountRequest(slave=SLAVE))
214-
await client.execute(req_diag.ClearOverrunCountRequest(slave=SLAVE))
215-
# NOT WORKING _check_call(await client.execute(req_diag.GetClearModbusPlusRequest(slave=SLAVE)))
188+
await client.diag_restart_communication(True, slave=SLAVE)
189+
await client.diag_read_diagnostic_register(slave=SLAVE)
190+
await client.diag_change_ascii_input_delimeter(slave=SLAVE)
191+
192+
# NOT WORKING: await client.diag_force_listen_only(slave=SLAVE)
193+
194+
await client.diag_clear_counters()
195+
await client.diag_read_bus_comm_error_count(slave=SLAVE)
196+
await client.diag_read_bus_exception_error_count(slave=SLAVE)
197+
await client.diag_read_slave_message_count(slave=SLAVE)
198+
await client.diag_read_slave_no_response_count(slave=SLAVE)
199+
await client.diag_read_slave_nak_count(slave=SLAVE)
200+
await client.diag_read_slave_busy_count(slave=SLAVE)
201+
await client.diag_read_bus_char_overrun_count(slave=SLAVE)
202+
await client.diag_read_iop_overrun_count(slave=SLAVE)
203+
await client.diag_clear_overrun_counter(slave=SLAVE)
204+
# NOT WORKING await client.diag_getclear_modbus_response(slave=SLAVE)
216205

217206

218207
# ------------------------

examples/client_calls.py

Lines changed: 26 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,7 @@
3333

3434
import client_sync
3535

36-
import pymodbus.diag_message as req_diag
37-
import pymodbus.mei_message as req_mei
38-
import pymodbus.other_message as req_other
39-
from pymodbus.exceptions import ModbusException
4036

41-
42-
logging.basicConfig()
4337
_logger = logging.getLogger(__file__)
4438
_logger.setLevel("DEBUG")
4539

@@ -55,14 +49,14 @@ def template_call(client):
5549
"""Show complete modbus call, sync version."""
5650
try:
5751
rr = client.read_coils(32, 1, slave=SLAVE)
58-
except ModbusException as exc:
52+
except client_sync.ModbusException as exc:
5953
txt = f"ERROR: exception in pymodbus {exc}"
6054
_logger.error(txt)
6155
raise exc
6256
if rr.isError():
6357
txt = "ERROR: pymodbus returned an error!"
6458
_logger.error(txt)
65-
raise ModbusException(txt)
59+
raise client_sync.ModbusException(txt)
6660

6761
# Validate data
6862
txt = f"### Template coils response: {rr.bits!s}"
@@ -159,24 +153,24 @@ def handle_input_registers(client):
159153
def execute_information_requests(client): # pragma no cover
160154
"""Execute extended information requests."""
161155
_logger.info("### Running information requests.")
162-
rr = client.execute(req_mei.ReadDeviceInformationRequest(slave=SLAVE))
156+
rr = client.read_device_information(slave=SLAVE)
163157
assert not rr.isError() # test that call was OK
164158
assert rr.information[0] == b"Pymodbus"
165159

166-
rr = client.execute(req_other.ReportSlaveIdRequest(slave=SLAVE))
160+
rr = client.report_slave_id(slave=SLAVE)
167161
assert not rr.isError() # test that call was OK
168-
# assert rr.status
162+
# assert not rr.status
169163

170-
rr = client.execute(req_other.ReadExceptionStatusRequest(slave=SLAVE))
164+
rr = client.read_exception_status(slave=SLAVE)
171165
assert not rr.isError() # test that call was OK
172166
# assert not rr.status
173167

174-
rr = client.execute(req_other.GetCommEventCounterRequest(slave=SLAVE))
168+
rr = client.diag_get_comm_event_counter(slave=SLAVE)
175169
assert not rr.isError() # test that call was OK
176170
# assert rr.status
177171
# assert not rr.count
178172

179-
rr = client.execute(req_other.GetCommEventLogRequest(slave=SLAVE))
173+
rr = client.diag_get_comm_event_log(slave=SLAVE)
180174
assert not rr.isError() # test that call was OK
181175
# assert rr.status
182176
# assert not (rr.event_count + rr.message_count + len(rr.events))
@@ -186,28 +180,27 @@ def execute_diagnostic_requests(client): # pragma no cover
186180
"""Execute extended diagnostic requests."""
187181
_logger.info("### Running diagnostic requests.")
188182
message = b"OK"
189-
rr = client.execute(req_diag.ReturnQueryDataRequest(message=message, slave=SLAVE))
183+
rr = client.diag_query_data(msg=message, slave=SLAVE)
190184
assert not rr.isError() # test that call was OK
191185
assert rr.message == message
192186

193-
client.execute(req_diag.RestartCommunicationsOptionRequest(slave=SLAVE))
194-
client.execute(req_diag.ReturnDiagnosticRegisterRequest(slave=SLAVE))
195-
client.execute(req_diag.ChangeAsciiInputDelimiterRequest(slave=SLAVE))
196-
197-
# NOT WORKING: _check_call(client.execute(req_diag.ForceListenOnlyModeRequest(slave=SLAVE)))
198-
# does not send a response
199-
200-
client.execute(req_diag.ClearCountersRequest())
201-
client.execute(req_diag.ReturnBusCommunicationErrorCountRequest(slave=SLAVE))
202-
client.execute(req_diag.ReturnBusExceptionErrorCountRequest(slave=SLAVE))
203-
client.execute(req_diag.ReturnSlaveMessageCountRequest(slave=SLAVE))
204-
client.execute(req_diag.ReturnSlaveNoResponseCountRequest(slave=SLAVE))
205-
client.execute(req_diag.ReturnSlaveNAKCountRequest(slave=SLAVE))
206-
client.execute(req_diag.ReturnSlaveBusyCountRequest(slave=SLAVE))
207-
client.execute(req_diag.ReturnSlaveBusCharacterOverrunCountRequest(slave=SLAVE))
208-
client.execute(req_diag.ReturnIopOverrunCountRequest(slave=SLAVE))
209-
client.execute(req_diag.ClearOverrunCountRequest(slave=SLAVE))
210-
# NOT WORKING _check_call(client.execute(req_diag.GetClearModbusPlusRequest(slave=SLAVE)))
187+
client.diag_restart_communication(True, slave=SLAVE)
188+
client.diag_read_diagnostic_register(slave=SLAVE)
189+
client.diag_change_ascii_input_delimeter(slave=SLAVE)
190+
191+
# NOT WORKING: await client.diag_force_listen_only(slave=SLAVE)
192+
193+
client.diag_clear_counters()
194+
client.diag_read_bus_comm_error_count(slave=SLAVE)
195+
client.diag_read_bus_exception_error_count(slave=SLAVE)
196+
client.diag_read_slave_message_count(slave=SLAVE)
197+
client.diag_read_slave_no_response_count(slave=SLAVE)
198+
client.diag_read_slave_nak_count(slave=SLAVE)
199+
client.diag_read_slave_busy_count(slave=SLAVE)
200+
client.diag_read_bus_char_overrun_count(slave=SLAVE)
201+
client.diag_read_iop_overrun_count(slave=SLAVE)
202+
client.diag_clear_overrun_counter(slave=SLAVE)
203+
# NOT WORKING client.diag_getclear_modbus_response(slave=SLAVE)
211204

212205

213206
# ------------------------

examples/client_custom_msg.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
1212
"""
1313
import asyncio
14-
import logging
1514
import struct
1615

1716
from pymodbus import Framer
@@ -20,13 +19,6 @@
2019
from pymodbus.pdu import ModbusExceptions, ModbusRequest, ModbusResponse
2120

2221

23-
# --------------------------------------------------------------------------- #
24-
# configure the client logging
25-
# --------------------------------------------------------------------------- #
26-
logging.basicConfig()
27-
log = logging.getLogger(__file__)
28-
log.setLevel(logging.DEBUG)
29-
3022
# --------------------------------------------------------------------------- #
3123
# create your custom message
3224
# --------------------------------------------------------------------------- #

examples/client_payload.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
Works out of the box together with payload_server.py
88
"""
99
import asyncio
10-
import logging
1110
from collections import OrderedDict
1211

1312
import client_async
@@ -16,8 +15,6 @@
1615
from pymodbus.payload import BinaryPayloadBuilder, BinaryPayloadDecoder
1716

1817

19-
logging.basicConfig()
20-
_logger = logging.getLogger(__file__)
2118
ORDER_DICT = {"<": "LITTLE", ">": "BIG"}
2219

2320

0 commit comments

Comments
 (0)