diff --git a/libraries/MySensors/core/MyGatewayTransportMQTTClient.cpp b/libraries/MySensors/core/MyGatewayTransportMQTTClient.cpp index a2c1d6c..4528c8e 100644 --- a/libraries/MySensors/core/MyGatewayTransportMQTTClient.cpp +++ b/libraries/MySensors/core/MyGatewayTransportMQTTClient.cpp @@ -59,9 +59,9 @@ MyMessage _mqttMsg; bool gatewayTransportSend(MyMessage &message) { if (!_client.connected()) return false; - snprintf_P(_fmtBuffer, MY_GATEWAY_MAX_SEND_LENGTH, PSTR(MY_MQTT_PUBLISH_TOPIC_PREFIX "/%d/%d/%d/%d/%d"), message.sender, message.sensor, mGetCommand(message), mGetAck(message), message.type); - debug(PSTR("Sending message on topic: %s\n"), _fmtBuffer); - return _client.publish(_fmtBuffer, message.getString(_convBuffer)); + char *mqttMsg = protocolFormatMQTT(message); + debug(PSTR("Sending message on topic: %s\n"), mqttMsg); + return _client.publish(mqttMsg, message.getString(_convBuffer)); } diff --git a/libraries/MySensors/core/MyProtocolMySensors.cpp b/libraries/MySensors/core/MyProtocolMySensors.cpp index f9ffe12..109f749 100644 --- a/libraries/MySensors/core/MyProtocolMySensors.cpp +++ b/libraries/MySensors/core/MyProtocolMySensors.cpp @@ -100,6 +100,16 @@ char * protocolFormat(MyMessage &message) { return _fmtBuffer; } +char * protocolFormatMQTTTopic(const char* prefix, MyMessage &message) { + snprintf_P(_fmtBuffer, MY_GATEWAY_MAX_SEND_LENGTH, PSTR("%s/%d/%d/%d/%d/%d"), prefix, message.sender, message.sensor, mGetCommand(message), mGetAck(message), message.type); + return _fmtBuffer; +} + +char * protocolFormatMQTTSubscribe(const char* prefix) { + snprintf_P(_fmtBuffer, MY_GATEWAY_MAX_SEND_LENGTH, PSTR("%s/+/+/+/+/+"), prefix); + return _fmtBuffer; +} + uint8_t protocolH2i(char c) { uint8_t i = 0; if (c <= '9')