Files
ToonBridge/Toon/MessageHandler.h
T
2020-09-03 09:06:09 +02:00

48 lines
1.0 KiB
C++

#ifndef TOON_MESSAGEHANDLER_H
#define TOON_MESSAGEHANDLER_H
#include <MQTT.h>
#include <SimpleSignal.h>
#include <json.hpp>
#include <string>
namespace ToonBridge {
namespace Toon {
class MessageHandler
{
public:
MessageHandler(MQTT::MQTT& mqtt, const std::string& mqttTopic);
~MessageHandler();
void HandleMessage(const std::string& message);
public:
typedef std::function<void()> ReconnectCallbackMethod;
public:
size_t Connect(ReconnectCallbackMethod function);
void Disconnect(size_t connection);
private:
typedef Simple::Signal<void()> TTLMessage;
private:
void HandlePowerUsageMessage(const nlohmann::json& data);
void HandleGasUsageMessage(const nlohmann::json& data);
void HandleWaterUsageMessage(const nlohmann::json& data);
void HandleThermostatInfoMessage(const nlohmann::json& data);
void HandleThermostatStatesMessage(const nlohmann::json& data);
private:
MQTT::MQTT& m_mqtt;
std::string m_mqttTopic;
TTLMessage m_signal;
};
} // namespace Toon
} // namespace ToonBridge
#endif // DEVICE_ACTIVITYDEVICE_H