first commit
This commit is contained in:
121
README.md
Normal file
121
README.md
Normal file
@ -0,0 +1,121 @@
|
||||
# Modbus to MQTT Bridge Service
|
||||
|
||||
A Python service that reads temperature and humidity data from a Modbus TCP server and publishes the data to an MQTT broker.
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
POE/
|
||||
├── config.py # Configuration constants
|
||||
├── sensor_bridge.py # Core logic for Modbus and MQTT operations
|
||||
├── main.py # Entry point
|
||||
├── requirements.txt # Python dependencies
|
||||
├── README.md # This file
|
||||
├── poe.py # Original single file (backup)
|
||||
└── memory-bank/ # Memory bank directory
|
||||
```
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### 1. Install Dependencies
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 2. Configure Settings
|
||||
Edit `config.py` to match your environment:
|
||||
```python
|
||||
# Modbus configuration
|
||||
MODBUS_HOST = "10.84.48.153"
|
||||
MODBUS_PORT = 505
|
||||
|
||||
# MQTT configuration
|
||||
MQTT_BROKER = "mqtt.service.mesh"
|
||||
MQTT_TOPIC = "Temperature_Humidity"
|
||||
```
|
||||
|
||||
### 3. Run the Service
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
## 📊 Features
|
||||
|
||||
- **Modbus TCP Client**: Reads data from Modbus holding registers
|
||||
- **MQTT Publisher**: Publishes sensor data to MQTT broker
|
||||
- **Data Processing**: Converts raw sensor values to calibrated readings
|
||||
- **Error Handling**: Robust error handling and retry mechanisms
|
||||
- **Logging**: Comprehensive logging for monitoring and debugging
|
||||
|
||||
## 📈 Data Format
|
||||
|
||||
The service publishes JSON data to the MQTT topic:
|
||||
```json
|
||||
{
|
||||
"time": "2024-01-15 10:30:25",
|
||||
"location": "Office",
|
||||
"temperature": 23.5,
|
||||
"humidity": 65.2
|
||||
}
|
||||
```
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
All configuration is centralized in `config.py`:
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|-----------|-------------|---------|
|
||||
| `MODBUS_HOST` | Modbus TCP server IP | "10.84.48.153" |
|
||||
| `MODBUS_PORT` | Modbus TCP port | 505 |
|
||||
| `MQTT_BROKER` | MQTT broker address | "mqtt.service.mesh" |
|
||||
| `MQTT_TOPIC` | MQTT publish topic | "Temperature_Humidity" |
|
||||
| `PUBLISH_INTERVAL` | Data publish interval (seconds) | 10 |
|
||||
| `LOCATION` | Sensor location identifier | "Office" |
|
||||
|
||||
## 📡 Sensor Mapping
|
||||
|
||||
- **Register 0**: Temperature (raw value × 0.1 - 40)
|
||||
- **Register 1**: Humidity (raw value × 0.1)
|
||||
|
||||
## 🛠️ Maintenance
|
||||
|
||||
### Running as a Service
|
||||
|
||||
For production deployment, consider running as a system service:
|
||||
|
||||
```bash
|
||||
# Example systemd service file
|
||||
[Unit]
|
||||
Description=Modbus MQTT Bridge
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=pi
|
||||
WorkingDirectory=/path/to/POE
|
||||
ExecStart=/usr/bin/python3 main.py
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
### Monitoring
|
||||
|
||||
The service provides comprehensive logging. Monitor the logs for:
|
||||
- Connection status
|
||||
- Data reading success/failure
|
||||
- MQTT publish status
|
||||
- Error conditions
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Test thoroughly
|
||||
5. Submit a pull request
|
||||
|
||||
## 📝 License
|
||||
|
||||
This project is licensed under the MIT License.
|
Reference in New Issue
Block a user