Initial commit

This commit is contained in:
2020-06-16 09:43:20 +02:00
commit 4f5998cf5f
26 changed files with 696 additions and 0 deletions
+169
View File
@@ -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