This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
projects:farmrobot:batteriemanagement [2021/03/21 18:32] jonas [Modbus Python and Watson-IoT MQTT publish on Raspberry Pi 4B] |
projects:farmrobot:batteriemanagement [2021/03/21 19:02] (current) jonas [Modbus Python and Watson-IoT MQTT publish on Raspberry Pi 4B] |
||
|---|---|---|---|
| Line 104: | Line 104: | ||
| ===== Modbus Python and Watson-IoT MQTT publish on Raspberry Pi 4B ===== | ===== Modbus Python and Watson-IoT MQTT publish on Raspberry Pi 4B ===== | ||
| - | Using FTDI USB adapter which can be interfaced on / | + | Using FTDI USB adapter which can be interfaced on / |
| + | Adding the current user to the " | ||
| sudo adduser pi dialout | sudo adduser pi dialout | ||
| - | | + | |
| + | Installing prerequisites: | ||
| sudo apt install python3 | sudo apt install python3 | ||
| wget https:// | wget https:// | ||
| sudo python3 get-pip.py | sudo python3 get-pip.py | ||
| - | sudo pip install pymodbus | + | sudo pip install pymodbus\\ |
| - | \\ | + | |
| + | ModbusSerialClient is the Modbus client that is used to interface the registers on the BMS: | ||
| from pymodbus.client.sync import ModbusSerialClient | from pymodbus.client.sync import ModbusSerialClient | ||
| - | Using IBM Watson IoT platform | + | === IBM Watson IoT platform |
| Creating a new device and gathering credentials: | Creating a new device and gathering credentials: | ||
| Line 129: | Line 131: | ||
| pip install wiotp-sdk | pip install wiotp-sdk | ||
| - | Modbus communication implementation based on: https:// | + | Modbus communication implementation based on: https:// |
| + | === Code: === | ||
| <file py pc_bms_modbus_mqtt.py> | <file py pc_bms_modbus_mqtt.py> | ||
| import numpy as np | import numpy as np | ||
| Line 227: | Line 230: | ||
| ==== Receiving MQTT messages on Watson IoT platform ==== | ==== Receiving MQTT messages on Watson IoT platform ==== | ||
| - | {{: | + | Received messages: |
| + | {{: | ||
| + | |||
| + | Raw status data available: | ||
| + | {{: | ||
| + | |||
| + | ===== Web Interface to view and graph the data ===== | ||
| + | An easy way to set up a web interface is to host a node-red instance on a server, for example on a stationary Raspberry Pi 4, which can be accesses via network or can be made accessible with port forwarding from the internet.\\ | ||
| + | |||
| + | Setting up a Raspberry Pi 4B with docker and docker run portainer. | ||
| + | Create a new Node-Red Stack with a compose file, which creates a node-red web instance on the device on port 1880. | ||
| + | The ip adress is needed which can be requested with: | ||
| + | ifconfig | ||
| + | |||
| + | <file yaml compose.yaml> | ||
| + | version: " | ||
| + | |||
| + | services: | ||
| + | node-red: | ||
| + | image: nodered/ | ||
| + | environment: | ||
| + | - TZ=Europe/ | ||
| + | ports: | ||
| + | - " | ||
| + | networks: | ||
| + | - node-red-net | ||
| + | volumes: | ||
| + | - ~/ | ||
| + | |||
| + | networks: | ||
| + | node-red-net: | ||
| + | </ | ||
| + | |||
| + | The node-red webapp can then be accessed via [[http:// | ||
| + | The Node-RED Dashboard module is needed to display the data with node-red\\ | ||
| + | To install, click the Menu Button and choose " | ||
| + | Then click on install and install in the pop-up window. Then return to the main view.\\ | ||
| + | {{: | ||
| ===== Micropython implementation on espressiv ESP32 DevKitc v4 ===== | ===== Micropython implementation on espressiv ESP32 DevKitc v4 ===== | ||