arduino-doughboy/src/Network/MQTT.h

48 lines
1.3 KiB
C++

#ifndef DOUGH_MQTT_H
#define DOUGH_MQTT_H
#include <MQTT.h>
#include <MQTTClient.h>
#include "Network/WiFi.h"
#include "Data/Measurement.h"
#include "UI/Logger.h"
#include "config.h"
namespace Dough
{
// This class encapsulates the connection to the MQTT broker.
// MQTT is used to publish measurements and to store configuration data.
class MQTT;
typedef void (*MQTTConnectHandler)(MQTT *mqtt);
typedef void (*MQTTMessageHandler)(String &key, String &value);
class MQTT
{
public:
static MQTT *Instance();
void setup();
void onConnect(MQTTConnectHandler callback);
void onMessage(MQTTMessageHandler callback);
bool isConnected();
bool connect();
void subscribe(const char *key);
void procesIncomingsMessages();
void publish(const char *key, const char *payload);
void publish(const char *key, int payload);
void publish(const char *key, Measurement measurement);
private:
MQTT();
MQTTClient _mqttClient;
Logger _logger;
MQTTConnectHandler _onConnect = nullptr;
MQTTClientCallbackSimple _onMessage = nullptr;
static void handleMessage(String &topic, String &payload);
char *_mqttDeviceId;
};
}
#endif