Changelog
All these version would not be possible without a lot of work from volunteers!
We, the maintainers, are greatful for each pull requests small or big, that helps make pymodbus a better product.
Authors: contains a complete list of volunteers have contributed to each major version.
Version 3.6.2
Set documentation to v3.6.2.
Version 3.6.1
Solve pypi upload error.
Version 3.6.0
doc: Fix a code mismatch in client.rst
Update README.
truncated duration to milliseconds
Update examples for current dev.
Ignore all remaining implicit optional (#1888)
docstring
Remove unnecessary abort() call
Enable RUF013 (implicit optional) (#1882)
Support aiohttp 3.9.0b1 (#1886)
Actually perform aiohttp runner teardown
Pin to working aiohttp (#1884)
Docstring typo cleanup (#1879)
Clean client API imports. (#1819)
Update issue template.
Eliminiate implicit optional in reconnect_delay* (#1874)
Split client base in sync/async version (#1878)
Rework host/port and listener setup (#1866)
use baudrate directly (#1872)
Eliminate more implicit optional (#1871)
Fix serial server args order (#1870)
Relax test task/thread checker. (#1867)
Make doc link references version dependent. (#1864)
Remove pre-commit (#1860)
Ruff reduce ignores. (#1862)
Bump ruff to 0.1.3 and remove ruff.toml (#1861)
More elegant noop. (#1859)
Cache (#1829)
Eliminate more implicit optional (#1858)
Ignore files downloaded by pytest (#1857)
Avoid malicious user path input (#1855)
Add more return types to transport (#1852)
Do not attempt to close an already-closed serial connection (#1853)
Fix stopbits docstring typo (#1850)
Convert type hints to PEP585 (#1846)
Eliminate even more implicit optional (#1845)
Eliminate more implicit optionals in client (#1844)
Eliminate implicit optional in transport_serial (#1843)
Make client type annotations compatible with async client usage (#1842)
Merge pull request #1838 from pymodbus-dev/ruff
Eliminate implicit optional in simulator (#1841)
eliminate implicit optional for callback_disconnected (#1840)
pre-commit run –all-files
Update exclude paths
Replace black with ruff
Use other dependency groups for ‘all’ (#1834)
Cleanup author/maintainer fields (#1833)
Consistent messages if imports fail (#1831)
Client/Server framer as enum. (#1822)
Solve relative path in examples. (#1828)
Eliminate implicit optional for CommParams types (#1825)
Add 3.12 classifier (#1826)
Bump actions/stale to 8.0.0 (#1824)
Cleanup paths included in mypy/pylint (#1823)
Client documentation amended and updated. (#1820)
Import aiohttp in way pleasing mypy. (#1818)
Update doc, remove md files. (#1814)
Bump dependencies. (#1816)
Solve pylint / pytest.
fix pylint.
Examples are without parent module.
Wrong zip of examples.
Serial delay (#1810)
Add python 3.12. (#1800)
Release errors (pyproject.toml changes). (#1811)
Version 3.5.4
Release errors (pyproject.toml changes). (#1811)
Version 3.5.3
Simplify transport_serial (modbus use) (#1808)
Reduce transport_serial (#1807)
Change to pyproject.toml. (#1805)
fixes access to asyncio loop via loop property of SerialTransport (#1804)
Bump aiohttp to support python 3.12. (#1802)
README wrong links. (#1801)
CI caching. (#1796)
Solve pylint unhappy. (#1799)
Clean except last 7 days. (#1798)
Reconect_delay == 0, do not reconnect. (#1795)
Update simulator.py method docstring (#1793)
add type to isError. (#1781)
Allow repr(ModbusException) to return complete information (#1779)
Update docs. (#1777)
Version 3.5.2
server tracer example. (#1773)
sync connect missing. (#1772)
simulator future problem. (#1771)
Version 3.5.1
Always close socket on error (reset_sock). (#1767)
Revert reset_socket change.
add close_comm_on_error to example.
Test long term (HomeAsistant problem). (#1765)
Update ruff to 0.0.287 (#1764)
Remove references to ModbusSerialServer.start (#1759) (#1762)
Readd test to get 100% coverage.
transport: Don’t raise a RunTimeError in ModbusProtocol.error_received() (#1758)
Version 3.5.0
Async retry (#1752)
test_client: Fix test_client_protocol_execute() (#1751)
Use enums for constants (#1743)
Local Echo Broadcast with Async Clients (#1744)
Fix #1746 . Return missing result (#1748)
Document nullmodem. (#1739)
Add system health check to all tests. (#1736)
Handle partial message in ReadDeviceInformationResponse (#1738)
Broadcast with Handle Local Echo (#1737)
transport_emulator, part II. (#1710)
Added file AUTHORS, to list all Volunteers. (#1734)
Fix #1702 and #1728 (#1733)
Clear retry count when success. (#1732)
RFC: Reduce parameters for REPL server classes (#1714)
retries=1, solved. (#1731)
Impoved the example “server_updating.py” (#1720)
pylint 3.11 (#1730)
Correct retry loop. (#1729)
Fix faulty not check (#1725)
bugfix local echo handling on sync clients (#1723)
Updated copyright in LICENSE.
Correct README pre-commit.
Fix custom message parsing in RTU framer (#1716)
Request tracer (#1715)
pymodbus.server: allow strings for “-p” paramter (#1713)
New nullmodem and transport. (#1696)
xdist loadscope (test is not split). (#1708)
Add client performance example. (#1707)
Version 3.4.1
Fix serial startup problems. (#1701)
pass source_address in tcp client. (#1700)
serial server use source_address[0]. (#1699)
Examples coverage nearly 100%. (#1694)
new async serial (#1681)
Docker is not supported (lack of maintainer). (#1693)
Forwarder write_coil –> write_coil. (#1691)
Change default source_address to (0.0.0.0, 502) (#1690)
Update ruff to 0.0.277 (#1689)
Fix dict comprehension (#1687)
Removed requests dependency from contrib/explain.py (#1688)
Fix broken test (#1685)
Fix readme badges (#1682)
Bump aiohttp from 3.8.3 to 3.8.5 (#1680)
pygments from 2.14.0 to 2.15.0 (#1677)
Version 3.4.0
Handle partial local echo. (#1675)
clarify handle_local_echo. (#1674)
async_client: add retries/reconnect. (#1672)
Fix 3.11 problem. (#1673)
Add new example simulator server/client. (#1671)
examples/contrib/explain.py leveraging Rapid SCADA (#1665)
_logger missed basicConfig. (#1670)
Bug fix for #1662 (#1663)
Bug fix for #1661 (#1664)
Fix typo in config.rst (#1660)
test action_increment. (#1659)
test codeql (#1655)
mypy complaints. (#1656)
Remove self.params from async client (#1640)
Drop test of pypy with python 3.8.
repair server_async.py (#1644)
move common framer to base. (#1639)
Restrict Return diag call to bytes. (#1638)
use slave= in diag requests. (#1636)
transport listen in server. (#1628)
CI test.
Integrate transport in server. (#1617)
fix getFrameStart for ExceptionResponse (#1627)
Add min/min to simulator actions.
Change to “sync client” in forwarder example (#1625)
Remove docker (lack of maintenance). (#1623)
Clean defaults (#1618)
Reduce CI log with no debug. (#1616)
prepare server to use transport. (#1607)
Fix RemoteSlaveContext (#1599)
Combine stale and lock. (#1608)
update pytest + extensions. (#1610)
Change version follow PEP 440. (#1609)
Fix regression with REPL server not listening (#1604)
Remove handler= for server classes. (#1602)
Fix write function codes (#1598)
transport nullmodem (#1591)
move test of examples to subdirectory. (#1592)
transport as object, not base class. (#1572)
Simple examples. (#1590)
transport_connect as bool. (#1587)
Prepare dev (#1588)
Release corrections. (#1586)
Version 3.3.2
Fix RemoteSlaveContext (#1599)
Change version follow PEP 440. (#1609)
Fix regression with REPL server not listening (#1604)
Fix write function codes (#1598)
Release corrections. (#1586)
Version 3.3.1
transport fixes and 100% test coverage. (#1580)
Delay self.loop until connect(). (#1579)
Added mechanism to determine if server did not start cleanly (#1539)
Proof transport reconnect works. (#1577)
Fix non-shared block doc in config.rst. (#1573)
Version 3.3.0
Stabilize windows tests. (#1567)
Bump mypy 1.3.0 (#1568)
Transport integrated in async clients. (#1541)
Client async corrections (due to 3.1.2) (#1565)
Server_async[udp], solve 3.1.1 problem. (#1564)
Remove ModbusTcpDiagClient. (#1560)
Remove old method from Python2/3 transition (#1559)
Switch to ruff’s version of bandit (#1557)
Allow reading/writing address 0 in the simulator (#1552)
Remove references to “defer_start”. (#1548)
Client more robust against faulty response. (#1547)
Fix missing package_data directives for simulator web (#1544)
Fix installation instructions (#1543)
Solve pytest timeout problem. (#1540)
DiagnosticStatus encode missing tuple check. (#1533)
test SparseDataStore. (#1532)
BinaryPayloadBuilder.to_string to BinaryPayloadBuilder.encode (#1526)
Adding flake8-pytest-style` to ruff (#1520)
Simplify version management. (#1522)
pylint and pre-commit autoupdate (#1519)
Add type hint (#1512)
Add action to lock issues/PR. (#1508)
New common transport layer. (#1492)
Solve serial close raise problem.
Remove old config values (#1503)
Document pymodbus.simulator. (#1502)
Refactor REPL server to reduce complexity (#1499)
Don’t catch KeyboardInterrupt twice for REPL server (#1498)
Refactor REPL client to reduce complexity (#1489)
pymodbus.server: listen on ID 1 by default (#1496)
Clean framer/__init__.py (#1494)
Duplicate transactions in UDP. (#1486)
clean ProcessIncommingPacket. (#1491)
Enable pyupgrade (U) rules in ruff (#1484)
clean_workflow.yaml solve parameter problem.
Correct wrong import in test. (#1483)
Implement pyflakes-simplify (#1480)
Test case for UDP duplicate msg issue (#1470)
Test of write_coil. (#1479)
Test reuse of client object. (#1475)
Comment about addressing when shared=false (#1474)
Remove old aliases to OSError (#1473)
pymodbus.simulator fixes (#1463)
Fix wrong error message with pymodbus console (#1456)
update modbusrtuframer (#1435)
Server multidrop test.: (#1451)
mypy problem ModbusResponse.
Version 3.2.2
Add forgotten await
Version 3.2.1
add missing server.start(). (#1443)
Don’t publish univeral (Python2 / Python 3) wheels (#1423)
Remove unneccesary custom LOG_LEVEL check (#1424)
Include py.typed in package (#1422)
Version 3.2.0
Add value <-> registers converter helpers. (#1413)
Add pre-commit config (#1406)
Make baud rate configurable for examples (#1410)
Clean __init_ and update log module. (#1411)
Simulator add calls functionality. (#1390)
Add note about not being thread safe. (#1404)
Update docker-publish.yml
Forward retry_on_empty and retries by calling transaction (#1401)
serial sync recv interval (#1389)
Add tests for writing multiple writes with a single value (#1402)
Enable mypy in CI (#1388)
Limit use of Singleton. (#1397)
Cleanup interfaces (#1396)
Add request names. (#1391)
Simulator, register look and feel. (#1387)
Fix enum for REPL server (#1384)
Remove unneeded attribute (#1383)
Fix mypy errors in reactive server (#1381)
remove nosec (#1379)
Fix type hints for http_server (#1369)
Merge pull request #1380 from pymodbus-dev/requirements
remove second client instance in async mode. (#1367)
Pin setuptools to prevent breakage with Version including “X” (#1373)
Lint and type hints for REPL (#1364)
Clean mixin execute (#1366)
Remove unused setup_commands.py. (#1362)
Run black on top-level files and /doc (#1361)
repl config path (#1359)
Fix NoReponse -> NoResponse (#1358)
Make whole main async. (#1355)
Fix more typing issues (#1351)
Test sync task (#1341)
Fixed text in ModbusClientMixin’s writes (#1352)
lint /doc (#1345)
Remove unused linters (#1344)
Allow log level as string or integer. (#1343)
Sync serial, clean recv. (#1340)
Test server task, async completed (#1318)
main() should be sync (#1339)
Bug: Fixed caused by passing wrong arg (#1336)
Version 3.1.3
Solve log problem in payload.
Fix register type check for size bigger than 3 registers (6 bytes) (#1323)
Re-add SQL tests. (#1329)
Central logging. (#1324)
Skip sqlAlchemy test. (#1325)
Solve 1319 (#1320)
Version 3.1.2
Update README.rst
Correct README link. (#1316)
More direct readme links for REPL (#1314)
Add classifier for 3.11 (#1312)
Update README.rst (#1313)
Delete ModbusCommonBlock.png (#1311)
Add modbus standard to README. (#1308)
fix no auto reconnect after close/connect in TCPclient (#1298)
Update examples.rst (#1307)
var name clarification (#1304)
Bump external libraries. (#1302)
Reorganize documentation to make it easier accessible (#1299)
Simulator documentation (first version). (#1296)
Updated datastore Simulator. (#1255)
Update links to pydmodbus-dev (#1291)
Change riptideio to pymodbus-dev. (#1292)
#1258 Avoid showing unit as a seperate command line argument (#1288)
Solve docker cache problem. (#1287)
Version 3.1.1
add missing server.start() (#1282)
small performance improvement on debug log (#1279)
Fix Unix sockets parsing (#1281)
client: Allow unix domain socket. (#1274)
transfer timeout to protocol object. (#1275)
Add ModbusUnixServer / StartAsyncUnixServer. (#1273)
Added return in AsyncModbusSerialClient.connect (#1271)
add connect() to the very first example (#1270)
Solve docker problem. (#1268)
Test stop of server task. (#1256)
Version 3.1.0
Add xdist pr default. (#1253)
Create docker-publish.yml (#1250)
Parallelize pytest with pytest-xdist (#1247)
Support Python3.11 (#1246)
Fix reconnectDelay to be within (100ms, 5min) (#1244)
Fix typos in comments (#1233)
WEB simulator, first version. (#1226)
Clean async serial problem. (#1235)
terminate when using ‘randomize’ and ‘change_rate’ at the same time (#1231)
Used tooled python and OS (#1232)
add ‘change_rate’ randomization option (#1229)
add check_ci.sh (#1225)
Simplify CI and use cache. (#1217)
Solve issue 1210, update simulator (#1211)
Add missing client calls in mixin.py. (#1206)
Advanced simulator with cross memory. (#1195)
AsyncModbusTcp/UdpClient honors delay_ms == 0 (#1203) (#1205)
Fix #1188 and some pylint issues (#1189)
Serial receive incomplete bytes.issue #1183 (#1185)
Handle echo (#1186)
Add updating server example. (#1176)
Version 3.0.2
Add pygments as requirement for repl
Update datastore remote to handle write requests (#1166)
Allow multiple servers. (#1164)
Fix typo. (#1162)
Transfer parms. to connected client. (#1161)
Repl enhancements 2 (#1141)
Server simulator with datastore with json data. (#1157)
Avoid unwanted reconnects (#1154)
Do not initialize framer twice. (#1153)
Allow timeout as float. (#1152)
Improve Docker Support (#1145)
Fix unreachable code in AsyncModbusTcpClient (#1151)
Fix type hints for port and timeout (#1147)
Start/stop multiple servers. (#1138)
Server/asyncio.py correct logging when disconnecting the socket (#1135)
Add Docker and container registry support (#1132)
Removes undue reported error when forwarding (#1134)
Obey timeout parameter on connection (#1131)
Readme typos (#1129)
Clean noqa directive. (#1125)
Add isort and activate CI fail for black/isort. (#1124)
Update examples. (#1117)
Move logging configuration behind function call (#1120)
serial2TCP forwarding example (#1116)
Make serial import dynamic. (#1114)
Bugfix ModbusSerialServer setup so handler is called correctly. (#1113)
Clean configurations. (#1111)
Version 3.0.1
Faulty release!
Version 3.0.0
Solve multiple incomming frames. (#1107)
Up coverage, tests are 100%. (#1098)
Prepare for rc1. (#1097)
Prepare 3.0.0dev5 (#1095)
Adapt serial tests. (#1094)
Allow windows. (#1093)
Remove server sync code and combine with async code. (#1092)
Solve test of tls by adding certificates and remove bugs (#1080)
Simplify server implementation. (#1071)
Do not filter using unit id in the received response (#1076)
Hex values for repl arguments (#1075)
All parameters in class parameter. (#1070)
Add len parameter to decode_bits. (#1062)
New combined test for all types of clients. (#1061)
Dev mixin client (#1056)
Add/update client documentation, including docstrings etc. (#1055)
Add unit to arguments (#1041)
Add timeout to all pytest. (#1037)
Simplify client parent classes. (#1018)
Clean copyright statements, to ensure we follow FOSS rules. (#1014)
Rectify sync/async client parameters. (#1013)
Clean client directory structure for async. (#1010)
Remove async_io, simplify AsyncModbus<x>Client. (#1009)
remove init_<something>_client(). (#1008)
Remove async factory. (#1001)
Remove loop parameter from client/server (#999)
add example async client. (#997)
Change async ModbusSerialClient to framer= from method=. (#994)
Add forwarder example with multiple slaves. (#992)
Remove async get_factory. (#990)
Remove unused ModbusAccessControl. (#989)
Solve problem with remote datastore. (#988)
Remove unused schedulers. (#976)
Remove twisted (#972)
Remove/Update tornado/twister tests. (#971)
remove easy_install and ez_setup (#964)
Fix mask write register (#961)
Activate pytest-asyncio. (#949)
Changed default framer for serial to be ModbusRtuFramer. (#948)
Remove tornado. (#935)
Pylint, check method parameter documentation. (#909)
Add get_response_pdu_size to mask read/write. (#922)
Minimum python version is 3.8. (#921)
Ensure make doc fails on warnings and/or errors. (#920)
Remove central makefile. (#916)
Re-organize examples (#914)
Documentation cleanup and clarification (#689)
Update doc for repl. (#910)
Include package and tests in coverage measurement (#912)
Use response byte length if available (#880)
better fix for rtu incomplete frames (#511)
Remove twisted/tornado from doc. (#904)
Update classifiers for pypi. (#907)
Documentation updates
PEP8 compatibale code
More tooling and CI updates
Remove python2 compatibility code (#564)
Remove Python2 checks and Python2 code snippets
Misc co-routines related fixes
Fix CI for python3 and remove PyPI from CI
Fix mask_write_register call. (#685)
Add support for byte strings in the device information fields (#693)
Catch socket going away. (#722)
Misc typo errors (#718)
Support python3.10
Implement asyncio ModbusSerialServer
ModbusTLS updates (tls handshake, default framer)
Support broadcast messages with asyncio client
Fix for lazy loading serial module with asyncio clients.
Updated examples and tests
Support python3.7 and above
Support creating asyncio clients from with in coroutines.
Version 2.5.3
Fix retries on tcp client failing randomly.
Fix Asyncio client timeout arg not being used.
Treat exception codes as valid responses
Fix examples (modbus_payload)
Add missing identity argument to async ModbusSerialServer
Version 2.5.2
Add kwarg reset_socket to control closing of the socket on read failures (set to True by default).
Add –reset-socket/–no-reset-socket to REPL client.
Version 2.5.1
Bug fix TCP Repl server.
Support multiple UID’s with REPL server.
Support serial for URL (sync serial client)
Bug fix/enhancements, close socket connections only on empty or invalid response
Version 2.5.0
Support response types stray and empty in repl server.
Minor updates in asyncio server.
Update reactive server to send stray response of given length.
Transaction manager updates on retries for empty and invalid packets.
Test fixes for asyncio client and transaction manager.
Fix sync client and processing of incomplete frames with rtu framers
Support synchronous diagnostic client (TCP)
Server updates (REPL and async)
Handle Memory leak in sync servers due to socketserver memory leak
Minor fix in documentations
Travis fix for Mac OSX
Disable unnecessary deprecation warning while using async clients.
Use Github actions for builds in favor of travis.
Documentation updates
Disable strict mode by default.
Fix ReportSlaveIdRequest request
Sparse datablock initialization updates.
Support REPL for modbus server (only python3 and asyncio)
Fix REPL client for write requests
Fix examples
Asyncio server
Asynchronous server (with custom datablock)
Fix version info for servers
Fix and enhancements to Tornado clients (seril and tcp)
Fix and enhancements to Asyncio client and server
Update Install instructions
Synchronous client retry on empty and error enhancments
Add new modbus state RETRYING
Support runtime response manipulations for Servers
Bug fixes with logging module in servers
Asyncio modbus serial server support
Version 2.4.0
Support async moduls tls server/client
Add local echo option
Add exponential backoffs on retries.
REPL - Support broadcasts.
Fix framers using wrong unit address.
Update documentation for serial_forwarder example
Fix error with rtu client for local_echo
Fix asyncio client not working with already running loop
Fix passing serial arguments to async clients
Support timeouts to break out of responspe await when server goes offline
Misc updates and bugfixes.
Version 2.3.0
Support Modbus TLS (client / server)
Distribute license with source
BinaryPayloadDecoder/Encoder now supports float16 on python3.6 and above
Fix asyncio UDP client/server
Minor cosmetic updates
Asyncio Server implementation (Python 3.7 and above only)
Bug fix for DiagnosticStatusResponse when odd sized response is received
Remove Pycrypto from dependencies and include cryptodome instead
Remove SIX requirement pinned to exact version.
Minor bug-fixes in documentations.
Version 2.2.0
Support Python 3.7
Fix to task cancellations and CRC errors for async serial clients.
Fix passing serial settings to asynchronous serial server.
Fix AttributeError when setting interCharTimeout for serial clients.
Provide an option to disable inter char timeouts with Modbus RTU.
Add support to register custom requests in clients and server instances.
Fix read timeout calculation in ModbusTCP.
Fix SQLDbcontext always returning InvalidAddress error.
Fix SQLDbcontext update failure
Fix Binary payload example for endianess.
Fix BinaryPayloadDecoder.to_coils and BinaryPayloadBuilder.fromCoils methods.
Fix tornado async serial client TypeError while processing incoming packet.
Fix erroneous CRC handling in Modbus RTU framer.
Support broadcasting in Modbus Client and Servers (sync).
Fix asyncio examples.
Improved logging in Modbus Server .
ReportSlaveIdRequest would fetch information from Device identity instead of hardcoded Pymodbus.
Fix regression introduced in 2.2.0rc2 (Modbus sync client transaction failing)
Minor update in factory.py, now server logs prints received request instead of only function code
Version 2.1.0
Fix Issues with Serial client where in partial data was read when the response size is unknown.
Fix Infinite sleep loop in RTU Framer.
Add pygments as extra requirement for repl.
Add support to modify modbus client attributes via repl.
Update modbus repl documentation.
More verbose logs for repl.
Version 2.0.1
Fix unicode decoder error with BinaryPayloadDecoder in some platforms
Avoid unnecessary import of deprecated modules with dependencies on twisted
Version 2.0.0
Async client implementation based on Tornado, Twisted and asyncio with backward compatibility support for twisted client.
Allow reusing existing[running] asyncio loop when creating async client based on asyncio.
Allow reusing address for Modbus TCP sync server.
Add support to install tornado as extra requirement while installing pymodbus.
Support Pymodbus REPL
Add support to python 3.7.
Bug fix and enhancements in examples.
Async client implementation based on Tornado, Twisted and asyncio
Version 1.5.2
Fix serial client is_socket_open method
Version 1.5.1
Fix device information selectors
Fixed behaviour of the MEI device information command as a server when an invalid object_id is provided by an external client.
Add support for repeated MEI device information Object IDs (client/server)
Added support for encoding device information when it requires more than one PDU to pack.
Added REPR statements for all syncchronous clients
Added isError method to exceptions, Any response received can be tested for success before proceeding.
Add examples for MEI read device information request
Version 1.5.0
Improve transaction speeds for sync clients (RTU/ASCII), now retry on empty happens only when retry_on_empty kwarg is passed to client during intialization
Fix tcp servers (sync/async) not processing requests with transaction id > 255
Introduce new api to check if the received response is an error or not (response.isError())
Move timing logic to framers so that irrespective of client, correct timing logics are followed.
Move framers from transaction.py to respective modules
Fix modbus payload builder and decoder
Async servers can now have an option to defer reactor.run() when using Start<Tcp/Serial/Udo>Server(…,defer_reactor_run=True)
Fix UDP client issue while handling MEI messages (ReadDeviceInformationRequest)
Add expected response lengths for WriteMultipleCoilRequest and WriteMultipleRegisterRequest
Fix _rtu_byte_count_pos for GetCommEventLogResponse
Add support for repeated MEI device information Object IDs
Fix struct errors while decoding stray response
Modbus read retries works only when empty/no message is received
Change test runner from nosetest to pytest
Fix Misc examples
Version 1.4.0
Bug fix Modbus TCP client reading incomplete data
Check for slave unit id before processing the request for serial clients
Bug fix serial servers with Modbus Binary Framer
Bug fix header size for ModbusBinaryFramer
Bug fix payload decoder with endian Little
Payload builder and decoder can now deal with the wordorder as well of 32/64 bit data.
Support Database slave contexts (SqlStore and RedisStore)
Custom handlers could be passed to Modbus TCP servers
Asynchronous Server could now be stopped when running on a seperate thread (StopServer)
Signal handlers on Asynchronous servers are now handled based on current thread
Registers in Database datastore could now be read from remote clients
Fix examples in contrib (message_parser.py/message_generator.py/remote_server_context)
Add new example for SqlStore and RedisStore (db store slave context)
Fix minor comaptibility issues with utilities.
Update test requirements
Update/Add new unit tests
Move twisted requirements to extra so that it is not installed by default on pymodbus installtion
Version 1.3.2
ModbusSerialServer could now be stopped when running on a seperate thread.
Fix issue with server and client where in the frame buffer had values from previous unsuccesful transaction
Fix response length calculation for ModbusASCII protocol
Fix response length calculation ReportSlaveIdResponse, DiagnosticStatusResponse
Fix never ending transaction case when response is received without header and CRC
Fix tests
Version 1.3.1
Recall socket recv until get a complete response
Register_write_message.py: Observe skip_encode option when encoding a single register request
Fix wrong expected response length for coils and discrete inputs
Fix decode errors with ReadDeviceInformationRequest and ReportSlaveIdRequest on Python3
Move MaskWriteRegisterRequest/MaskWriteRegisterResponse to register_write_message.py from file_message.py
Python3 compatible examples [WIP]
Misc updates with examples
Fix encoding problem for ReadDeviceInformationRequest method on python3
Fix problem with the usage of ord in python3 while cleaning up receive buffer
Fix struct unpack errors with BinaryPayloadDecoder on python3 - string vs bytestring error
Calculate expected response size for ReadWriteMultipleRegistersRequest
Enhancement for ModbusTcpClient, ModbusTcpClient can now accept connection timeout as one of the parameter
Misc updates
Timing improvements over MODBUS Serial interface
Modbus RTU use 3.5 char silence before and after transactions
Bug fix on FifoTransactionManager , flush stray data before transaction
Update repository information
Added ability to ignore missing slaves
Added ability to revert to ZeroMode
Passed a number of extra options through the stack
Fixed documenation and added a number of examples
Version 1.2.0
Reworking the transaction managers to be more explicit and to handle modbus RTU over TCP.
Adding examples for a number of unique requested use cases
Allow RTU framers to fail fast instead of staying at fault
Working on datastore saving and loading
Version 1.1.0
Fixing memory leak in clients and servers (removed __del__)
Adding the ability to override the client framers
Working on web page api and GUI
Moving examples and extra code to contrib sections
Adding more documentation
Version 1.0.0
Adding support for payload builders to form complex encoding and decoding of messages.
Adding BCD and binary payload builders
Adding support for pydev
Cleaning up the build tools
Adding a message encoding generator for testing.
Now passing kwargs to base of PDU so arguments can be used correctly at all levels of the protocol.
A number of bug fixes (see bug tracker and commit messages)