Skip to main content

Modbus client/server for qToggleServer

Project description

About

This is an addon for qToggleServer.

With this addon you can read and control Modbus-enabled devices (such as energy meters) via qToggleServer. You can also configure a Modbus server so that your qToggleServer behaves like a Modbus device itself.

Install

Install using pip:

pip install qtoggleserver-modbus

Usage

Serial Client

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        driver = "qtoggleserver.modbus.ModbusSerialClient"
        method = rtu                    # `ascii` (default), `rtu` or `binary`
        serial_port = "/dev/ttyUSB0"
        serial_baud = 9600              # this is the default
        serial_stopbits = 1             # this is the default
        serial_bytesize = 8             # this is the default
        serial_parity = N               # `N`, `E` or `O`
        # see below for common parameters
    }
    ...
]
...

Serial Server

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        driver = "qtoggleserver.modbus.ModbusSerialServer"
        method = rtu                    # `ascii` (default), `rtu` or `binary`
        serial_port = "/dev/ttyUSB0"
        serial_baud = 9600              # this is the default
        serial_stopbits = 1             # this is the default
        serial_bytesize = 8             # this is the default
        serial_parity = N               # `N`, `E` or `O`
        # see below for common parameters
    }
    ...
]
...

TCP Client

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        driver = "qtoggleserver.modbus.ModbusTcpClient"
        method = socket                 # `socket` (default), `ascii`, `rtu` or `binary`
        tcp_host = "192.168.0.2"        # IP or hostname of the Modbus device
        tcp_port = 502                  # Modbus device TCP port
        # see below for common parameters
    }
    ...
]
...

TCP Server

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        driver = "qtoggleserver.modbus.ModbusTcpServer"
        method = socket                 # `socket` (default), `ascii`, `rtu` or `binary`
        tcp_address = "0.0.0.0"         # binds on all interfaces by default
        tcp_port = 502                  # Modbus device TCP port
        # see below for common parameters
    }
    ...
]
...

Passive Serial Client

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        driver = "qtoggleserver.modbus.PassiveModbusSerialClient"
        serial_port = "/dev/ttyUSB0"
        serial_baud = 9600              # this is the default
        serial_stopbits = 1             # this is the default
        serial_bytesize = 8             # this is the default
        serial_parity = N               # `N`, `E` or `O`
        # see below for common parameters
    }
    ...
]
...

Passive TCP(dump) Client

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        driver = "qtoggleserver.modbus.PassiveModbusTcpClient"
        port = 5020                     # TCP port to sniff
        iface = "eth0"                  # network interface to sniff (defaults to `any`)
        master_ip = "192.168.1.122"     # IP address of the master Modbus machine (optional) 
        slave_ip = "192.168.1.123"      # IP address of the slave Modbus machine (optional)
        master_port = 5020              # TCP port of the master Modbus machine (optional) 
        slave_port = 5021               # TCP port of the slave Modbus machine (optional)
        tcpdump = "/usr/bin/tcpdump"    # full path to the `tcpdump` binary (optional) 
        # see below for common parameters
    }
    ...
]
...

Common Parameters

The following parameters are common to all types of Modbus clients and servers:

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        ...
        name = "mydevice"  # an optional name of your choice
        timeout = 5        # in seconds, this is the default
        unit_id = 0           # slave unit id, this is the default
        ports = {
            "port_id1" = {
                modbus_type = coil          # `coil`, discrete_input`, `input_register` or `holding_register`
                address = 1234              # Modbus port address (from `0000` to `9999`)
                # number of successive registers mapped to the port, starting at `address` (defaults to `1`)
                length = 2
                writable = false            # by default is `null`, inferred from `modbus_type`
                # `struct` format to use to group multiple register values into a byte array (defaults to `>` followed
                # by `H` times `length`)
                register_group_fmt = ">HH"
                # `struct` format to use to map register byte array to port value (defaults to `>h`)
                value_fmt = ">i"
            }
            ...
        }
        ...
    }
    ...
]
...

Common Client Parameters

The following parameters are common to all types of Modbus clients:

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        ...
        use_single_functions = false  # set to `true` to use single Modbus access functions instead of multi ones
        initial_delay = 5             # the number of seconds to delay polling after connection (defaults to `0`)
        ...
    }
    ...
]
...

Common Server Parameters

The following parameters are common to all types of Modbus servers:

qtoggleserver.conf:
...
peripherals = [
    ...
    {
        ...
        identity_vendor_name = "My Vendor"
        identity_product_code = "PROD1234"
        identity_major_minor_revision = "3.14.15"
        identity_vendor_url = "https://example.com"
        identity_product_name = "My Product"
        identity_model_name = "My Model"
        identity_user_application_name = "My Custom Model"
        ...
    }
    ...
]
...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qtoggleserver_modbus-1.4.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qtoggleserver_modbus-1.4.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file qtoggleserver_modbus-1.4.0.tar.gz.

File metadata

  • Download URL: qtoggleserver_modbus-1.4.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qtoggleserver_modbus-1.4.0.tar.gz
Algorithm Hash digest
SHA256 ee7041a87068e7627bf7eb5e5c944b75f30906eb779c8a2c1ebd18b11c75cb19
MD5 7b196a071190670874f1b3266894af08
BLAKE2b-256 80e07aec7e1fb64bc1390167cb224c6a552fd638fb0dd05791f592c6fa5df209

See more details on using hashes here.

File details

Details for the file qtoggleserver_modbus-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for qtoggleserver_modbus-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d28f0fadd823a182e653083ed22862b9e54e7090dd3ff9634089941ae09c72aa
MD5 b4c3245e62c4af54d18b23aa9a2cabb8
BLAKE2b-256 50426557804cb0ddfd95e102f0a56d4c3f3db184e0ec7bc25df9f6b337dc429f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page