From 48f930c19ea0bc96fd375b87d182e7cb8429512b Mon Sep 17 00:00:00 2001 From: JDierkse Date: Mon, 22 Jun 2020 09:44:05 +0200 Subject: [PATCH] Use Configured MQTT Topic --- Application/ToonBridge.cc | 2 +- Toon/Bridge.cpp | 16 +++++++++++----- Toon/MessageHandler.cpp | 31 +++++++++++++++++++++++-------- Toon/MessageHandler.h | 3 ++- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/Application/ToonBridge.cc b/Application/ToonBridge.cc index 4f12562..1d0156c 100644 --- a/Application/ToonBridge.cc +++ b/Application/ToonBridge.cc @@ -12,7 +12,7 @@ int main(int argc, char** argv) try { Logging::OpenLog(); - Logging::SetLogMask(Logging::Severity::Debug); + Logging::SetLogMask(Logging::Severity::Info); INIReader iniReader("ToonBridge.ini"); if (iniReader.ParseError() != 0) diff --git a/Toon/Bridge.cpp b/Toon/Bridge.cpp index d52e7f1..ff09d33 100644 --- a/Toon/Bridge.cpp +++ b/Toon/Bridge.cpp @@ -9,7 +9,7 @@ namespace Toon { Bridge::Bridge(int port, const ToonSettings& toonSettings, const MQTTSettings& mqttSettings) : m_mqttClient(mqttSettings.hostname, mqttSettings.port), - m_messageHandler(m_mqttClient), + m_messageHandler(m_mqttClient, mqttSettings.topic), m_port(port), m_toonSettings(toonSettings), m_mqttSettings(mqttSettings) @@ -19,9 +19,12 @@ Bridge::Bridge(int port, const ToonSettings& toonSettings, const MQTTSettings& m Bridge::~Bridge() { + std::stringstream ss; + ss << m_mqttSettings.topic << "/BridgeState"; + MQTT::MQTTMessage message; - message.topic = m_mqttSettings.topic; - message.payload = "ToonBridge Stop"; + message.topic = ss.str(); + message.payload = "Stop"; m_mqttClient.Send(message); } @@ -39,9 +42,12 @@ void Bridge::Start() m_pWebSocketSubscription.reset(new WebSocketSubscription(m_toonSettings)); m_messageHandler.Connect(std::bind(&Bridge::TimeToLiveCallback, this, m_pWebSocketSubscription.get(), std::placeholders::_1)); + std::stringstream ss; + ss << m_mqttSettings.topic << "/BridgeState"; + MQTT::MQTTMessage message; - message.topic = m_mqttSettings.topic; - message.payload = "ToonBridge Start"; + message.topic = ss.str(); + message.payload = ss.str(); m_mqttClient.Send(message); } diff --git a/Toon/MessageHandler.cpp b/Toon/MessageHandler.cpp index 5c0b74d..3ff375a 100644 --- a/Toon/MessageHandler.cpp +++ b/Toon/MessageHandler.cpp @@ -1,13 +1,13 @@ #include "MessageHandler.h" -#include #include namespace ToonBridge { namespace Toon { -MessageHandler::MessageHandler(MQTT::MQTT& mqtt) : - m_mqtt(mqtt) +MessageHandler::MessageHandler(MQTT::MQTT& mqtt, const std::string& mqttTopic) : + m_mqtt(mqtt), + m_mqttTopic(mqttTopic) { } @@ -46,8 +46,11 @@ void MessageHandler::Disconnect(size_t connection) void MessageHandler::HandlePowerUsageMessage(const nlohmann::json& data) { + std::stringstream ss; + ss << m_mqttTopic << "/PowerUsage"; + MQTT::MQTTMessage message; - message.topic = "ToonBridge/PowerUsage"; + message.topic = ss.str(); message.payload = data.dump(); m_mqtt.Send(message); /* @@ -74,8 +77,11 @@ void MessageHandler::HandlePowerUsageMessage(const nlohmann::json& data) void MessageHandler::HandleGasUsageMessage(const nlohmann::json& data) { + std::stringstream ss; + ss << m_mqttTopic << "/GasUsage"; + MQTT::MQTTMessage message; - message.topic = "ToonBridge/GasUsage"; + message.topic = ss.str(); message.payload = data.dump(); m_mqtt.Send(message); /* @@ -92,8 +98,11 @@ void MessageHandler::HandleGasUsageMessage(const nlohmann::json& data) void MessageHandler::HandleWaterUsageMessage(const nlohmann::json& data) { + std::stringstream ss; + ss << m_mqttTopic << "/WaterUsage"; + MQTT::MQTTMessage message; - message.topic = "ToonBridge/WaterUsage"; + message.topic = ss.str(); message.payload = data.dump(); m_mqtt.Send(message); /* @@ -109,8 +118,11 @@ void MessageHandler::HandleWaterUsageMessage(const nlohmann::json& data) void MessageHandler::HandleThermostatInfoMessage(const nlohmann::json& data) { + std::stringstream ss; + ss << m_mqttTopic << "/ThermostatInfo"; + MQTT::MQTTMessage message; - message.topic = "ToonBridge/ThermostatInfo"; + message.topic = ss.str(); message.payload = data.dump(); m_mqtt.Send(message); /* @@ -138,8 +150,11 @@ void MessageHandler::HandleThermostatInfoMessage(const nlohmann::json& data) void MessageHandler::HandleThermostatStatesMessage(const nlohmann::json& data) { + std::stringstream ss; + ss << m_mqttTopic << "/ThermostatStates"; + MQTT::MQTTMessage message; - message.topic = "ToonBridge/ThermostatStates"; + message.topic = ss.str(); message.payload = data.dump(); m_mqtt.Send(message); /* diff --git a/Toon/MessageHandler.h b/Toon/MessageHandler.h index 0e0cc60..5b05b73 100644 --- a/Toon/MessageHandler.h +++ b/Toon/MessageHandler.h @@ -13,7 +13,7 @@ namespace Toon { class MessageHandler { public: - MessageHandler(MQTT::MQTT& mqtt); + MessageHandler(MQTT::MQTT& mqtt, const std::string& mqttTopic); ~MessageHandler(); void HandleMessage(const std::string& message); @@ -37,6 +37,7 @@ private: private: MQTT::MQTT& m_mqtt; + std::string m_mqttTopic; TTLMessage m_signal; };