Last Code Revision Date: 01-Sep-2025
This project bridges Modbus TCP/IP devices and MQTT brokers, publishing Modbus register values as raw payloads to individual MQTT topics. It uses pymodbus
and paho-mqtt
for Modbus and MQTT communication.
Package | Version | Description |
---|---|---|
pymodbus | 3.11.1 | Modbus protocol implementation |
paho-mqtt | 2.1.0 | MQTT client library for Python |
src/config.py
modbus-mqtt-publisher-01092025
├── src
│ ├── main.py # Main application logic
│ ├── modbus_client.py # Modbus TCP client wrapper
│ ├── mqtt_publisher.py # MQTT publisher with auto-reconnect
│ └── config.py # User configuration for Modbus/MQTT/topics/interval
├── requirements.txt # Python dependencies
├── README.md # Project documentation
git clone <repository-url>
cd modbus-mqtt-publisher-01092025
pip install -r requirements.txt
Edit src/config.py
to set:
Example (src/config.py
):
MODBUS_READ_CONFIG = {
"holding_registers": {
"addresses": [0, 1, 2, 5, 6, 7],
"mqtt_topic": "modbus/holding_registers"
}
}
UPDATE_INTERVAL = 5 # seconds
To enable other data types (coils, discrete inputs, input registers), uncomment and configure them in MODBUS_READ_CONFIG
.
Start the publisher:
python src/main.py
modbus/holding_registers/2
.MODBUS_READ_CONFIG
as needed).34.03$