Pārlūkot izejas kodu

Use Configured MQTT Topic

JDierkse 5 gadi atpakaļ
vecāks
revīzija
48f930c19e
4 mainītis faili ar 37 papildinājumiem un 15 dzēšanām
  1. 1 1
      Application/ToonBridge.cc
  2. 11 5
      Toon/Bridge.cpp
  3. 23 8
      Toon/MessageHandler.cpp
  4. 2 1
      Toon/MessageHandler.h

+ 1 - 1
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)

+ 11 - 5
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);
 }
 

+ 23 - 8
Toon/MessageHandler.cpp

@@ -1,13 +1,13 @@
 #include "MessageHandler.h"
-#include <Logging.h>
 #include <sstream>
 
 
 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);
 	/*

+ 2 - 1
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;
 };