Web frontend
TO BE DOCUMENTED.
pymodbus.simulator
The easiest way to run the simulator with web is to use “pymodbus.simulator” from the commandline.
TO BE DOCUMENTED.
HTTP server for modbus simulator.
- class pymodbus.server.simulator.http_server.CallTracer(call: bool = False, fc: int = -1, address: int = -1, count: int = -1, data: bytes = b'')
Bases:
object
Define call/response traces.
- class pymodbus.server.simulator.http_server.CallTypeMonitor(active: bool = False, trace_response: bool = False, range_start: int = -1, range_stop: int = -1, function: int = -1, hex: bool = False, decode: bool = False)
Bases:
object
Define Request/Response monitor.
- class pymodbus.server.simulator.http_server.CallTypeResponse(active: int = -1, split: int = 0, delay: int = 0, junk_len: int = 10, error_response: int = 0, change_rate: int = 0, clear_after: int = 1)
Bases:
object
Define Response manipulation.
- class pymodbus.server.simulator.http_server.ModbusSimulatorServer(modbus_server: str = 'server', modbus_device: str = 'device', http_host: str = '0.0.0.0', http_port: int = 8080, log_file: str = 'server.log', json_file: str = 'setup.json', custom_actions_module: str | None = None)
Bases:
object
ModbusSimulatorServer.
- Parameters:
modbus_server – Server name in json file (default: “server”)
modbus_device – Device name in json file (default: “client”)
http_host – TCP host for HTTP (default: “localhost”)
http_port – TCP port for HTTP (default: 8080)
json_file – setup file (default: “setup.json”)
custom_actions_module – python module with custom actions (default: none)
if either http_port or http_host is none, HTTP will not be started. This class starts a http server, that serves a couple of endpoints:
“<addr>/” static files
“<addr>/api/log” log handling, HTML with GET, REST-API with post
“<addr>/api/registers” register handling, HTML with GET, REST-API with post
“<addr>/api/calls” call (function code / message) handling, HTML with GET, REST-API with post
“<addr>/api/server” server handling, HTML with GET, REST-API with post
Example:
from pymodbus.server import ModbusSimulatorServer async def run(): simulator = ModbusSimulatorServer( modbus_server="my server", modbus_device="my device", http_host="localhost", http_port=8080) await simulator.run_forever(only_start=True) ... await simulator.stop()
- async start_modbus_server(app)
Start Modbus server as asyncio task.
- async stop_modbus_server(app)
Stop modbus server.
- async run_forever(only_start=False)
Start modbus and http servers.
- async stop()
Stop modbus and http servers.
- async handle_html_static(request)
Handle static html.
- async handle_html(request)
Handle html.
- async handle_json(request)
Handle api registers.
- build_html_registers(params, html)
Build html registers page.
- build_html_calls(params: dict, html: str) str
Build html calls page.
- build_html_log(_params, html)
Build html log page.
- build_html_server(_params, html)
Build html server page.
- build_json_registers(params, json_dict)
Build html registers page.
- build_json_calls(params, json_dict)
Build html calls page.
- build_json_log(params, json_dict)
Build json log page.
- build_json_server(params, json_dict)
Build html server page.
- helper_build_html_submit(params)
Build html register submit.
- action_clear(_params, _range_start, _range_stop)
Clear register filter.
- action_stop(_params, _range_start, _range_stop)
Stop call monitoring.
- action_reset(_params, _range_start, _range_stop)
Reset call simulation.
- action_add(params, range_start, range_stop)
Build list of registers matching filter.
- action_monitor(params, range_start, range_stop)
Start monitoring calls.
- action_set(params, _range_start, _range_stop)
Set register value.
- action_simulate(params, _range_start, _range_stop)
Simulate responses.
- server_response_manipulator(response)
Manipulate responses.
All server responses passes this filter before being sent. The filter returns:
response, either original or modified
skip_encoding, signals whether or not to encode the response
- server_request_tracer(request, *_addr)
Trace requests.
All server requests passes this filter before being handled.