3.4 KiB
PID Controller Logging via MQTT
This document outlines the setup for logging PID controller data to an InfluxDB instance via MQTT and how to visualize this data in Grafana.
Firmware MQTT Setup
The firmware is configured to send PID controller data (Setpoint, Process Value, and heating state) to an MQTT broker. This data is then picked up by a Telegraf instance, which forwards it to InfluxDB.
Enabling the Feature
To enable MQTT logging, ensure the following line is present and not commented out in cassandra-rc2/src/config.h:
#define ENABLE_MQTT_LOGGING
MQTT Configuration
The MQTT broker details are configured in cassandra-rc2/src/PHApp-Mqtt.cpp. You may need to change the MQTT_BROKER IP address to match your environment.
#define MQTT_BROKER "192.168.1.100" // Replace with your MQTT broker's IP address
#define MQTT_PORT 1883
Data Format
The firmware sends data using the InfluxDB Line Protocol. The format is as follows:
- Measurement:
pid_controller - Tags:
controller_id: (integer) The ID of the PID controller (e.g., 1, 2, ... 8).
- Fields:
sp: (integer) The Setpoint value.pv: (integer) The Process Value.heating: (boolean) The heating state (trueorfalse).
Example Payload:
pid_controller,controller_id=1 sp=150,pv=148,heating=true
This message is published to the topic pid/controller/<id>.
Grafana: Adding InfluxDB Data Source
Follow these steps to connect your Grafana instance to the InfluxDB container.
-
Navigate to Grafana: Open your web browser and go to
http://localhost:3000. -
Login: Use the default credentials
adminfor both username and password, unless you have changed them. You will be prompted to change the password on first login. -
Go to Data Sources:
- In the left-hand menu, hover over the Configuration (cog) icon.
- Click on Data Sources.
-
Add Data Source:
- Click the "Add new data source" button.
- Select "InfluxDB" from the list of time series databases.
-
Configure the Connection:
- Name: Give your data source a name, for example,
InfluxDB_PID. - Query Language: Select Flux.
- URL: Set the URL to
http://influxdb:8086. Grafana and InfluxDB are in the same Docker network, so they can communicate using their service names. - Authentication: Leave the "Basic auth" and "With credentials" toggles off.
- Organization: Enter
my-org. - Token: Enter
my-super-token. - Default Bucket: Enter
my-bucket. - Min time interval:
10s(optional, but good practice to match the Telegraf flush interval).
The credentials and settings are derived from your
docker-compose.yamlfile:DOCKER_INFLUXDB_INIT_USERNAME: adminDOCKER_INFLUXDB_INIT_PASSWORD: admin123DOCKER_INFLUXDB_INIT_ORG: my-orgDOCKER_INFLUXDB_INIT_BUCKET: my-bucketDOCKER_INFLUXDB_INIT_ADMIN_TOKEN: my-super-token
- Name: Give your data source a name, for example,
-
Save & Test:
- Click the "Save & test" button at the bottom of the page.
- You should see a green notification saying "Data source is working".
You are now ready to create dashboards and query your PID controller data from InfluxDB in Grafana.