Data Logger: MQTT Sink#
Requirements#
An MQTT implementation of the
SinkLoggerinterface, usingmosquitto(see below)A wrapper class around the plain C
struct mosquittothat can take aSensorValuesinstance, likeSensorValues v = sensor_config.getAllMeasurements(); // ... Mosquitto client("localhost", 1883 /*default MQTT port*/); client.publish(v);
A definition of the MQTT transport format in JSON, like
{ "sensor1": 37.5, "sensor2": 42.666 }
Write unit tests to define the format
Implementation#
MQTT Implementation: mosquitto#
Cross development is a burden, especially when you do C++ with a
handmade Raspberry toolchain. mosquitto is written in pure C.
Installation#
$ sudo apt install mosquitto-dev
$ sudo dnf install mosquitto-devel
Wrapper#
Constructor: allocate client using
mosquitto_new(), and usemosquitto_connect()on itDestructor:
mosquitto_destroy()Prohibit copy
Testing#
Unit test for JSON format
Sample publish program using the wrapper class, in
bin/
Future (Not Part Of This Development Cycle)#
The wrapper class will become more widely available when the boiling pot ((DONE) Boiling Pot (The Beginning)) goes IoT. The pot will broadcast “switch-on”/”switch-off” events and temperature measurements (it only has a single sensor, the temperature of the pot itself) - will need a more flexible input than just
SensorValues