Log your modbus-rtu device data on a Raspberry Pi/Orange Pi and plot graphs of your data. Its been verified to work with a Raspberry Pi with a Linksprite RS485 shield and Orange Pi Zero with USB to RS485 adapter for reading values from ABB ACS310 anda ABB ACS810. By changing the devices.yml file and making a corresponding [model].yml file it should be possible to use other modbus enabled models.
Add support for ModbusTCP and add bridge RTU to TCP vía ESP8266 and multi Influx_DB databases
- Raspberry Pi 3 / Orange Pi Zero
- Linksprite RS485 Shield V3 for RPi or a simpe USB RS485 adapter
- Modbus based device.
- Rasbian or armbian
- Python 3.4 and PIP3
- PyYAML 5.1 (pip3 install -U PyYAML if installed)
- modbus_tk
- InfluxDB
- Grafana
- Add the InfluxData repository
$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - $ source /etc/os-release $ test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
- Download and install
$ sudo apt-get update && sudo apt-get install influxdb
- Start the influxdb service
$ sudo service influxdb start
- Create the database
$ influx CREATE DATABASE db_modbus exit
- Add APT Repository
$ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
- Add Bintray key
$ curl https://packages.grafana.com/gpg.key | sudo apt-key add -
- Now install
$ sudo apt-get update && sudo apt-get install grafana
- Start the service using systemd:
$ sudo systemctl daemon-reload $ sudo systemctl start grafana-server $ systemctl status grafana-server
- Enable the systemd service so that Grafana starts at boot.
$ sudo systemctl enable grafana-server.service
- Go to http://localhost:3000 and login using admin / admin (remember to change password) *source
- Download and install from Github and install pip3
$ git clone https://github.com/GuillermoElectrico/modbus-logger.git $ sudo apt-get install python3-pip
- Run setup script (must be executed as root (sudo) if the application needs to be started from rc.local, see below)
$ cd modbus-logger $ sudo python3 setup.py install
- Make script file executable
$ chmod 777 read_modbus_device.py
- Edit devices.yml to match your configuration
- Test the configuration by running:
./read_modbus_device.py ./read_modbus_device.py --help # Shows you all available parameters
- To run the python script at system startup. Add to following lines to the end of /etc/rc.local but before exit: $ sudo nano /etc/rc.local
## Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
## Start Modbus Logger
sudo python3 /home/pi/modbus-logger/setup.py install &
sudo python3 /home/pi/modbus-logger/read_modbus_device.py --interval 10 > /var/log/modbus-logger.log &
exit 0
```
Log with potential errors are found in /var/log/modbus-logger.log