# pymodbus **Repository Path**: djc0/pymodbus ## Basic Information - **Project Name**: pymodbus - **Description**: No description available - **Primary Language**: Python - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-10-14 - **Last Updated**: 2025-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README PyModbus - A Python Modbus Stack ================================ .. image:: https://github.com/pymodbus-dev/pymodbus/actions/workflows/ci.yml/badge.svg?branch=dev :target: https://github.com/pymodbus-dev/pymodbus/actions/workflows/ci.yml .. image:: https://readthedocs.org/projects/pymodbus/badge/?version=latest :target: https://pymodbus.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. image:: https://pepy.tech/badge/pymodbus :target: https://pepy.tech/project/pymodbus :alt: Downloads Pymodbus is a full Modbus protocol implementation offering client/server with synchronous/asynchronous API a well as simulators. Our releases is defined as X.Y.Z, and we have strict rules what to release when: - **Z**, No API changes! bug fixes and smaller enhancements. - **Y**, API changes, bug fixes and bigger enhancements. - **X**, Major changes in API and/or method to use pymodbus Upgrade examples: - 3.6.1 -> 3.6.9: just plugin the new version, no changes needed. - 3.6.1 -> 3.7.0: Smaller changes to the pymodbus calls might be needed - 2.5.4 -> 3.0.0: Major changes in the application might be needed Current release is `3.7.3 `_. Bleeding edge (not released) is `dev `_. Waiting for v3.8.0 (not released) is `wait_next_API `_. This contains dev + merged pull requests that have API changes, and thus have to wait. All changes are described in `release notes `_ and all API changes are `documented `_ A big thanks to all the `volunteers `_ that helps make pymodbus a great project. Source code on `github `_ Pymodbus in a nutshell ---------------------- Pymodbus consist of 5 parts: - **client**, connect to your favorite device(s) - **server**, simulate your favorite device(s) - **repl**, a commandline text based client/server simulator - **simulator**, an html based server simulator - **examples**, showing both simple and advances usage Common features ^^^^^^^^^^^^^^^ * Full modbus standard protocol implementation * Support for custom function codes * support serial (rs-485), tcp, tls and udp communication * support all standard frames: socket, rtu, rtu-over-tcp, tcp and ascii * does not have third party dependencies, apart from pyserial (optional) * very lightweight project * requires Python >= 3.9 * thorough test suite, that test all corners of the library * automatically tested on Windows, Linux and MacOS combined with python 3.9 - 3.12 * strongly typed API (py.typed present) The modbus protocol specification: Modbus_Application_Protocol_V1_1b3.pdf can be found on `modbus org `_ Client Features ^^^^^^^^^^^^^^^ * asynchronous API and synchronous API for applications * very simple setup and call sequence (just 6 lines of code) * utilities to convert int/float to/from multiple registers * payload builder/decoder to help with complex data `Client documentation `_ Server Features ^^^^^^^^^^^^^^^ * asynchronous implementation for high performance * synchronous API classes for convenience * simulate real life devices * full server control context (device information, counters, etc) * different backend datastores to manage register values * callback to intercept requests/responses * work on RS485 in parallel with other devices `Server documentation `_ REPL Features ^^^^^^^^^^^^^ - server/client commandline emulator - easy test of real device (client) - easy test of client app (server) - simulation of broken requests/responses - simulation of error responses (hard to provoke in real devices) `REPL documentation `_ Simulator Features ^^^^^^^^^^^^^^^^^^ - server simulator with WEB interface - configure the structure of a real device - monitor traffic online - allow distributed team members to work on a virtual device using internet - simulation of broken requests/responses - simulation of error responses (hard to provoke in real devices) `Simulator documentation `_ Use Cases --------- The client is the most typically used. It is embedded into applications, where it abstract the modbus protocol from the application by providing an easy to use API. The client is integrated into some well known projects like `home-assistant `_. Although most system administrators will find little need for a Modbus server, the server is handy to verify the functionality of an application. The simulator and/or server is often used to simulate real life devices testing applications. The server is excellent to perform high volume testing (e.g. houndreds of devices connected to the application). The advantage of the server is that it runs not only a "normal" computers but also on small ones like Raspberry PI. Since the library is written in python, it allows for easy scripting and/or integration into their existing solutions. For more information please browse the project documentation: https://readthedocs.org/docs/pymodbus/en/latest/index.html Install ------- The library is available on pypi.org and github.com to install with - :code:`pip` for those who just want to use the library - :code:`git clone` for those who wants to help or just are curious Be aware that there are a number of project, who have forked pymodbus and - seems just to provide a version frozen in time - extended pymodbus with extra functionality The latter is not because we rejected the extra functionality (we welcome all changes), but because the codeowners made that decision. In both cases, please understand, we cannot offer support to users of these projects as we do not known what have been changed nor what status the forked code have. A growing number of Linux distributions include pymodbus in their standard installation. You need to have python3 installed, preferable 3.11. Install with pip ^^^^^^^^^^^^^^^^ You can install using pip by issuing the following commands in a terminal window:: pip install pymodbus If you want to use the serial interface:: pip install pymodbus[serial] This will install pymodbus with the pyserial dependency. Pymodbus offers a number of extra options: - **repl**, needed by pymodbus.repl - **serial**, needed for serial communication - **simulator**, needed by pymodbus.simulator - **documentation**, needed to generate documentation - **development**, needed for development - **all**, installs all of the above which can be installed as:: pip install pymodbus[