Log Modbus Energy Meter data to InfluxDB on a Raspberry Pi and publish values via MQTT
- Python 98.1%
- Shell 1.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .gitignore | ||
| CHANGELOG.md | ||
| LICENSE | ||
| meters.yml | ||
| metertype_SDM120.yml | ||
| metertype_SDM630.yml | ||
| modbuslog.ini | ||
| modbuslog.py | ||
| modbuslog.service | ||
| readings_names.yml | ||
| README.md | ||
| sdm_setid.py | ||
| setup.py | ||
| systemctl_service_install.sh | ||
| systemctl_service_uninstall.sh | ||
| write_register.py | ||
Modbus Energy Meter Logger and MQTT gateway
Log Modbus Energy Meter data to InfluxDB on a Raspberry Pi and publish values via MQTT
Based on original project on Github
Added features
- base configuration using ini file
- MQTT publishing to use the readings in other systems
- split data aquiring completely in momentary (power) and energy readings with different intervals
- calculate daily total energy usage and log to file system as a backup
- higher sample rate for momentary power reading, write to database on power changes and/or interval
- separate interval for aquiring/writing energy readings
- split InfluxDB logging in momentary (power) and energy readings (seperate databases if desired to enable usage of different retention policies and continuous queries)
- enhanced meters configuration to support that changes, using yaml file as in original project
- many more improvements
Verified to work on a Raspberry Pi 4 with Digitus USB-RS485 Interface, reading values from 3 Eastron SDM120 instruments. By changing the meters.yml file and making a corresponding metertype_[model].yml file it should be possible to use other modbus enabled models.
Requirements
Hardware
- Raspberry Pi 2/3/4
- RS485 USB interface or RS485 Shield for RPi
- Modbus based Energy Meter(s), e.g WEBIQ 131D / Eastron SDM120 or WEBIQ 343L / Eastron SMD630
Software
- Rasbian
- Python 3.7 and PIP
- Minimalmodbus
- InfluxDB
- Grafana
Prerequisite
The original project has been documented at Hackster. Please follow the instructions there for more detailed information. Also check original project on Github.