48 lines
1.0 KiB
C++
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
|