Initial commit
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
#include "MessageHandler.h"
|
||||
#include <Logging.h>
|
||||
#include <sstream>
|
||||
|
||||
|
||||
namespace ToonBridge {
|
||||
namespace Toon {
|
||||
|
||||
MessageHandler::MessageHandler(MQTT::MQTT& mqtt) :
|
||||
m_mqtt(mqtt)
|
||||
{
|
||||
}
|
||||
|
||||
MessageHandler::~MessageHandler()
|
||||
{
|
||||
}
|
||||
|
||||
void MessageHandler::HandleMessage(const std::string& message)
|
||||
{
|
||||
nlohmann::json data = nlohmann::json::parse(message);
|
||||
auto updateDataSet = data["updateDataSet"];
|
||||
|
||||
if (updateDataSet.contains("powerUsage"))
|
||||
HandlePowerUsageMessage(updateDataSet["powerUsage"]);
|
||||
if (updateDataSet.contains("gasUsage"))
|
||||
HandleGasUsageMessage(updateDataSet["gasUsage"]);
|
||||
if (updateDataSet.contains("waterUsage"))
|
||||
HandleWaterUsageMessage(updateDataSet["waterUsage"]);
|
||||
if (updateDataSet.contains("thermostatInfo"))
|
||||
HandleThermostatInfoMessage(updateDataSet["thermostatInfo"]);
|
||||
if (updateDataSet.contains("thermostatStates"))
|
||||
HandleThermostatStatesMessage(updateDataSet["thermostatStates"]);
|
||||
|
||||
m_signal.emit(data["timeToLiveSeconds"]);
|
||||
}
|
||||
|
||||
size_t MessageHandler::Connect(TTLCallbackMethod function)
|
||||
{
|
||||
return m_signal.connect(function);
|
||||
}
|
||||
|
||||
void MessageHandler::Disconnect(size_t connection)
|
||||
{
|
||||
m_signal.disconnect(connection);
|
||||
}
|
||||
|
||||
void MessageHandler::HandlePowerUsageMessage(const nlohmann::json& data)
|
||||
{
|
||||
MQTT::MQTTMessage message;
|
||||
message.topic = "ToonBridge/PowerUsage";
|
||||
message.payload = data.dump();
|
||||
m_mqtt.Send(message);
|
||||
/*
|
||||
{"value":419,
|
||||
"dayCost":1.21,
|
||||
"valueProduced":0,
|
||||
"valueSolar":0,
|
||||
"maxSolar":0,
|
||||
"avgValue":493.92,
|
||||
"avgDayValue":11854.00,
|
||||
"avgProduValue":0,
|
||||
"meterReading":5528208,
|
||||
"meterReadingLow":6886191,
|
||||
"meterReadingProdu":2,
|
||||
"meterReadingLowProdu":87,
|
||||
"dayUsage":5268,
|
||||
"dayLowUsage":2860,
|
||||
"isSmart":1,
|
||||
"lowestDayValue":301,
|
||||
"solarProducedToday":0,
|
||||
"lastUpdatedFromDisplay":1591801516233}
|
||||
*/
|
||||
}
|
||||
|
||||
void MessageHandler::HandleGasUsageMessage(const nlohmann::json& data)
|
||||
{
|
||||
MQTT::MQTTMessage message;
|
||||
message.topic = "ToonBridge/GasUsage";
|
||||
message.payload = data.dump();
|
||||
m_mqtt.Send(message);
|
||||
/*
|
||||
{"value":0,
|
||||
"dayCost":0.32,
|
||||
"avgValue":26.48,
|
||||
"meterReading":2613589,
|
||||
"avgDayValue":635.43,
|
||||
"dayUsage":389,
|
||||
"isSmart":1,
|
||||
"lastUpdatedFromDisplay":1591801517950}
|
||||
*/
|
||||
}
|
||||
|
||||
void MessageHandler::HandleWaterUsageMessage(const nlohmann::json& data)
|
||||
{
|
||||
MQTT::MQTTMessage message;
|
||||
message.topic = "ToonBridge/WaterUsage";
|
||||
message.payload = data.dump();
|
||||
m_mqtt.Send(message);
|
||||
/*
|
||||
{"installed":0,
|
||||
"value":0,
|
||||
"dayCost":0,
|
||||
"dayUsage":0,
|
||||
"meterReading":0,
|
||||
"isSmart":0,
|
||||
"lastUpdatedFromDisplay":1591801517802}
|
||||
*/
|
||||
}
|
||||
|
||||
void MessageHandler::HandleThermostatInfoMessage(const nlohmann::json& data)
|
||||
{
|
||||
MQTT::MQTTMessage message;
|
||||
message.topic = "ToonBridge/ThermostatInfo";
|
||||
message.payload = data.dump();
|
||||
m_mqtt.Send(message);
|
||||
/*
|
||||
{"currentSetpoint":1750,
|
||||
"currentDisplayTemp":2100,
|
||||
"programState":0,
|
||||
"activeState":1,
|
||||
"nextProgram":-1,
|
||||
"nextState":-1,
|
||||
"nextTime":0,
|
||||
"nextSetpoint":0,
|
||||
"hasBoilerFault":0,
|
||||
"errorFound":255,
|
||||
"boilerModuleConnected":1,
|
||||
"realSetpoint":1750,
|
||||
"burnerInfo":"0",
|
||||
"otCommError":"0",
|
||||
"currentModulationLevel":0,
|
||||
"haveOTBoiler":1,
|
||||
"lastUpdatedFromDisplay":1591801515921,
|
||||
"setByLoadShifting":0}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void MessageHandler::HandleThermostatStatesMessage(const nlohmann::json& data)
|
||||
{
|
||||
MQTT::MQTTMessage message;
|
||||
message.topic = "ToonBridge/ThermostatStates";
|
||||
message.payload = data.dump();
|
||||
m_mqtt.Send(message);
|
||||
/*
|
||||
thermostatStates
|
||||
{"currentSetpoint":1750,
|
||||
"currentDisplayTemp":2100,
|
||||
"programState":0,
|
||||
"activeState":1,
|
||||
"nextProgram":-1,
|
||||
"nextState":-1,
|
||||
"nextTime":0,
|
||||
"nextSetpoint":0,
|
||||
"hasBoilerFault":0,
|
||||
"errorFound":255,
|
||||
"boilerModuleConnected":1,
|
||||
"realSetpoint":1750,
|
||||
"burnerInfo":"0",
|
||||
"otCommError":"0",
|
||||
"currentModulationLevel":0,
|
||||
"haveOTBoiler":1,
|
||||
"lastUpdatedFromDisplay":1591801515921,
|
||||
"setByLoadShifting":0}
|
||||
*/
|
||||
}
|
||||
|
||||
} // namespace Toon
|
||||
} // namespace ToonBridge
|
||||
Reference in New Issue
Block a user