Skip to main content

Pymodbus-REPL

Pymodbus-REPL is a REPL (Read-Eval-Print Loop) tool for working with Modbus devices using the Pymodbus library.

Development Setup

Prerequisites

  • Python 3.8+
  • Poetry (installed globally or within a virtual environment)

Dev instructions

  1. Clone the repository:

    git clone https://github.com/pymodbus-dev/repl.git

  2. Navigate to the project directory:

    cd repl

  3. Install dependencies using Poetry:

    poetry install

NOTE This repo is meant to be an helper for pymodbus and the usage requires a working version of pymodbus.

The installed pymodbus library for local development can also have impact on the path resolution while working locally on this repo. To overcome that problem, please make sure to run the client and server files from with in the respective working directories.

For .e.g

Run Server

(pymodbus3.8)
❯ python3 main.py --host 0.0.0.0 --verbose run --modbus-config default_config.json --modbus-server tcp --modbus-framer socket --modbus-port 5020 --unit-id 1 --unit-id 2 -u 4 -r 1 --timeout 2
2024-02-28 14:38:24,952 INFO  logging:97 Modbus server started
2024-02-28 14:38:24,952 DEBUG logging:103 Awaiting connections server_listener
2024-02-28 14:38:24,952 INFO  logging:97 Server listening.

__________                          .______.                    _________
\______   \___.__. _____   ____   __| _/\_ |__  __ __  ______  /   _____/ ______________  __ ___________
 |     ___<   |  |/     \ /  _ \ / __ |  | __ \|  |  \/  ___/  \_____  \_/ __ \_  __ \  \/ // __ \_  __ \\
 |    |    \___  |  Y Y  (  <_> ) /_/ |  | \_\ \  |  /\___ \   /        \  ___/|  | \/\   /\  ___/|  | \/
 |____|    / ____|__|_|  /\____/\____ |  |___  /____//____  > /_______  /\___  >__|    \_/  \___  >__|
           \/          \/            \/      \/           \/          \/     \/                 \/
                                                                                                v2.0.2-Pymodbus3.7.0dev


SERVER > 2024-02-28 14:39:15,352 DEBUG logging:103 Connected to server
2024-02-28 14:39:15,352 DEBUG logging:103 recv: 0x0 0x1 0x0 0x0 0x0 0x6 0x1 0x4 0x0 0x1 0x0 0x1 old_data:  addr=None
2024-02-28 14:39:15,352 DEBUG logging:103 Handling data: 0x0 0x1 0x0 0x0 0x0 0x6 0x1 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:15,352 DEBUG logging:103 Processing: 0x0 0x1 0x0 0x0 0x0 0x6 0x1 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:15,352 DEBUG logging:103 Factory Request[ReadInputRegistersRequest': 4]
2024-02-28 14:39:15,352 DEBUG logging:103 validate: fc-[4] address-1: count-1
2024-02-28 14:39:15,352 DEBUG logging:103 getValues: fc-[4] address-1: count-1
2024-02-28 14:39:15,352 DEBUG logging:103 send: 0x0 0x1 0x0 0x0 0x0 0x5 0x1 0x4 0x2 0xc5 0x7c
2024-02-28 14:39:37,029 DEBUG logging:103 recv: 0x0 0x2 0x0 0x0 0x0 0x6 0x4 0x4 0x0 0x1 0x0 0x1 old_data:  addr=None
2024-02-28 14:39:37,029 DEBUG logging:103 Handling data: 0x0 0x2 0x0 0x0 0x0 0x6 0x4 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:37,029 DEBUG logging:103 Processing: 0x0 0x2 0x0 0x0 0x0 0x6 0x4 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:37,029 DEBUG logging:103 Factory Request[ReadInputRegistersRequest': 4]
2024-02-28 14:39:37,029 DEBUG logging:103 validate: fc-[4] address-1: count-1
2024-02-28 14:39:37,029 DEBUG logging:103 getValues: fc-[4] address-1: count-1
2024-02-28 14:39:37,029 DEBUG logging:103 send: 0x0 0x2 0x0 0x0 0x0 0x5 0x4 0x4 0x2 0xc7 0xbe
2024-02-28 14:39:41,010 DEBUG logging:103 recv: 0x0 0x3 0x0 0x0 0x0 0x6 0x5 0x4 0x0 0x1 0x0 0x1 old_data:  addr=None
2024-02-28 14:39:41,010 DEBUG logging:103 Handling data: 0x0 0x3 0x0 0x0 0x0 0x6 0x5 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:41,010 DEBUG logging:103 Processing: 0x0 0x3 0x0 0x0 0x0 0x6 0x5 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:41,010 DEBUG logging:103 Not a valid slave id - 5, ignoring!!
2024-02-28 14:39:41,010 DEBUG logging:103 Resetting frame - Current Frame in buffer - 0x0 0x3 0x0 0x0 0x0 0x6 0x5 0x4 0x0 0x1 0x0 0x1
2024-02-28 14:39:44,015 DEBUG logging:103 -> transport: received eof
2024-02-28 14:39:44,015 DEBUG logging:103 Connection lost server due to None
2024-02-28 14:39:44,015 DEBUG logging:103 Handler for stream [server] has been canceled

Run client

pymodbus/repl/client on  repl-server-startup [!?] via 🐍 v3.8.13 (pymodbus3.8)
❯ python3 main.py tcp --port 5020 --framer tcp

----------------------------------------------------------------------------
__________          _____             .___  __________              .__
\______   \___.__. /     \   ____   __| _/  \______   \ ____ ______ |  |
 |     ___<   |  |/  \ /  \ /  _ \ / __ |    |       _// __ \\\____ \|  |
 |    |    \___  /    Y    (  <_> ) /_/ |    |    |   \  ___/|  |_> >  |__
 |____|    / ____\____|__  /\____/\____ | /\ |____|_  /\___  >   __/|____/
           \/            \/            \/ \/        \/     \/|__|
                                                v2.0.2 - Pymodbus-3.7.0dev
----------------------------------------------------------------------------

> client.read_input_registers address 1 count 1 slave 1
{
    "registers": [
        50556
    ]
}

> client.read_input_registers address 1 count 1 slave 4
{
    "registers": [
        51134
    ]
}

> client.read_input_registers address 1 count 1 slave 5
{
    "original_function_code": "4 (0x4)",
    "error": "[Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)"
}

>

Running Tests

To run tests, use the following command:

poetry run pytest

Building Distribution

To build the distribution package, use the following command:

poetry build

This will create distribution packages in the dist/ directory.

Usage

Pymodbus Client

Refer REPL Client

Pymodbus Server

Refer REPL Server

Contributing

  • Fork the repository.
  • Create a new branch (git checkout -b feature-name).
  • Make your changes and commit them (git commit -am 'Add feature').
  • Push to the branch (git push origin feature-name).
  • Create a new Pull Request.

License

This project is licensed under the MIT License.

Metadata

Release files for pymodbus-repl 2.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymodbus-repl 2.0.4
File Size Uploaded Provenance
pymodbus_repl-2.0.4.tar.gz 32.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pymodbus-repl 2.0.4
File Interpreter ABI Platform
pymodbus_repl-2.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 68.9 kB

Release files / pymodbus_repl-2.0.4.tar.gz

Download URL pymodbus_repl-2.0.4.tar.gz
Size 32.9 kB
Tags Source
SHA-256 checksum
How to use checksums
46ce229085abd9124d4e9cd62762954fe8296c95759877df8e4ae59156d6bc69
BLAKE2b-256 checksum
How to use checksums
1d69d55bfdb8223c10d3db217854fde7fc2dc0745ce99afd562493988b86f7b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.6

Release files / pymodbus_repl-2.0.4-py3-none-any.whl

Download URL pymodbus_repl-2.0.4-py3-none-any.whl
Size 36.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be26bfabdc6db2e77d961740645974705880df4097e7daa3aae6026c698019f9
BLAKE2b-256 checksum
How to use checksums
9a6f13a45d105cd3815ef6399fca470f9122fe630bdbc1305e65bf153bbe8dc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.6

Security for pymodbus-repl 2.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

2.0.4 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page