Merge pull request #247 from mysensors/fix-mqtt-topic-naming

Split subscripe/publish MQTT topic
This commit is contained in:
Henrik Ekblad
2015-11-10 07:19:10 +01:00
5 changed files with 17 additions and 11 deletions
+5 -2
View File
@@ -94,8 +94,11 @@
#if !defined(MY_CONTROLLER_IP_ADDRESS)
#error You must specify MY_CONTROLLER_IP_ADDRESS (MQTT broker address)
#endif
#if !defined(MY_MQTT_TOPIC_PREFIX)
#error You must specify a topic prefix MY_MQTT_TOPIC_PREFIX for this MQTT client
#if !defined(MY_MQTT_PUBLISH_TOPIC_PREFIX)
#error You must specify a topic publish prefix MY_MQTT_PUBLISH_TOPIC_PREFIX for this MQTT client
#endif
#if !defined(MY_MQTT_SUBSCRIBE_TOPIC_PREFIX)
#error You must specify a topic subscribe prefix MY_MQTT_SUBSCRIBE_TOPIC_PREFIX for this MQTT client
#endif
#if !defined(MY_MQTT_CLIENT_ID)
#error You must define a unique MY_MQTT_CLIENT_ID for this MQTT client
@@ -23,7 +23,7 @@
#include "MyGatewayTransport.h"
#include "MyMessage.h"
// Topic structure: MY_MQTT_TOPIC_PREFIX/NODE-ID/SENSOR-ID/CMD-TYPE/ACK-FLAG/SUB-TYPE
// Topic structure: MY_MQTT_PUBLISH_TOPIC_PREFIX/NODE-ID/SENSOR-ID/CMD-TYPE/ACK-FLAG/SUB-TYPE
@@ -53,7 +53,7 @@ MyMessage _mqttMsg;
bool gatewayTransportSend(MyMessage &message) {
if (!_client.connected())
return false;
snprintf_P(_fmtBuffer, MY_GATEWAY_MAX_SEND_LENGTH, PSTR(MY_MQTT_TOPIC_PREFIX "/%d/%d/%d/%d/%d"), message.sender, message.sensor, mGetCommand(message), mGetAck(message), message.type);
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));
}
@@ -71,7 +71,7 @@ void incomingMQTT(char* topic, byte* payload,
switch (i) {
case 0: {
// Topic prefix
if (strcmp_P(str, MY_MQTT_TOPIC_PREFIX) != 0) {
if (strcmp_P(str, MY_MQTT_SUBSCRIBE_TOPIC_PREFIX) != 0) {
// Message not for us or malformed!
return;
}
@@ -126,7 +126,7 @@ bool reconnectMQTT() {
// Once connected, publish an announcement...
//_client.publish("outTopic","hello world");
// ... and resubscribe
_client.subscribe(MY_MQTT_TOPIC_PREFIX "/+/+/+/+/+");
_client.subscribe(MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "/+/+/+/+/+");
return true;
}
return false;
@@ -72,8 +72,9 @@
#define MY_GATEWAY_MQTT_CLIENT
// Set this nodes topic prefix
#define MY_MQTT_TOPIC_PREFIX "mygateway"
// Set this nodes subscripe and publish topic prefix
#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
// Set MQTT client id
#define MY_MQTT_CLIENT_ID "mysensors-1"
@@ -69,8 +69,9 @@
#define MY_GATEWAY_MQTT_CLIENT
// Set this nodes topic prefix
#define MY_MQTT_TOPIC_PREFIX "mygateway"
// Set this nodes subscripe and publish topic prefix
#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
// Set MQTT client id
#define MY_MQTT_CLIENT_ID "mysensors-1"
+2 -1
View File
@@ -101,6 +101,7 @@ MY_RS485_BAUD_RATE LITERAL1
MY_RS485_MAX_MESSAGE_LENGTH LITERAL1
MY_INCLUSION_BUTTON_EXTERNAL_PULLUP LITERAL1
MY_W5100_SPI_EN LITERAL1
MY_MQTT_TOPIC_PREFIX LITERAL1
MY_MQTT_SUBSCRIBE_TOPIC_PREFIX LITERAL1
MY_MQTT_PUBLISH_TOPIC_PREFIX LITERAL1
MY_MQTT_CLIENT_ID LITERAL1
MY_GATEWAY_MQTT_CLIENT LITERAL1