mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 21:26:43 +00:00
Cleanup MQTT_TOPIC defines
This commit is contained in:
parent
75f76a7f3e
commit
f80cd90d94
@ -256,12 +256,12 @@ void dispatch_command(const char* topic, const char* payload, bool update)
|
||||
// Strip command/config prefix from the topic and process the payload
|
||||
void dispatch_topic_payload(const char* topic, const char* payload, bool update)
|
||||
{
|
||||
if(!strcmp_P(topic, PSTR(HASP_TOPIC_COMMAND))) {
|
||||
if(!strcmp_P(topic, PSTR(MQTT_TOPIC_COMMAND))) {
|
||||
dispatch_text_line((char*)payload);
|
||||
return;
|
||||
}
|
||||
|
||||
if(topic == strstr_P(topic, PSTR(HASP_TOPIC_COMMAND "/"))) { // startsWith command/
|
||||
if(topic == strstr_P(topic, PSTR(MQTT_TOPIC_COMMAND "/"))) { // startsWith command/
|
||||
topic += 8u;
|
||||
dispatch_command(topic, (char*)payload, update);
|
||||
return;
|
||||
@ -832,10 +832,10 @@ void dispatch_send_discovery(const char*, const char*)
|
||||
size_t len = serializeJson(doc, data);
|
||||
switch(mqtt_send_discovery(data, len)) {
|
||||
case MQTT_ERR_OK:
|
||||
LOG_TRACE(TAG_MQTT_PUB, F("discovery => %s"), data);
|
||||
LOG_TRACE(TAG_MQTT_PUB, F(MQTT_TOPIC_DISCOVERY " => %s"), data);
|
||||
break;
|
||||
case MQTT_ERR_PUB_FAIL:
|
||||
LOG_ERROR(TAG_MQTT_PUB, F(D_MQTT_FAILED " discovery => %s"), data);
|
||||
LOG_ERROR(TAG_MQTT_PUB, F(D_MQTT_FAILED " " MQTT_TOPIC_DISCOVERY " => %s"), data);
|
||||
break;
|
||||
case MQTT_ERR_NO_CONN:
|
||||
LOG_ERROR(TAG_MQTT, F(D_MQTT_NOT_CONNECTED));
|
||||
|
@ -39,10 +39,49 @@ bool mqttGetConfig(const JsonObject& settings);
|
||||
bool mqttSetConfig(const JsonObject& settings);
|
||||
#endif
|
||||
|
||||
#define HASP_TOPIC_COMMAND "command"
|
||||
|
||||
// #ifndef WINDOWS
|
||||
// String mqttGetNodename(void);
|
||||
// #endif
|
||||
|
||||
#ifndef MQTT_PREFIX
|
||||
#define MQTT_PREFIX "hasp"
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_TOPIC_STATE
|
||||
#define MQTT_TOPIC_STATE "state"
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_TOPIC_COMMAND
|
||||
#define MQTT_TOPIC_COMMAND "command"
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_TOPIC_DISCOVERY
|
||||
#define MQTT_TOPIC_DISCOVERY "discovery"
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_TOPIC_BROADCAST
|
||||
#define MQTT_TOPIC_BROADCAST "broadcast"
|
||||
#endif
|
||||
|
||||
#define MQTT_TOPIC_LWT "LWT"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// These defaults may be overwritten with values saved by the web interface
|
||||
|
||||
#ifndef MQTT_GROUPNAME
|
||||
#define MQTT_GROUPNAME "plates";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_HOST
|
||||
#define MQTT_HOST "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PORT
|
||||
#define MQTT_PORT 1883;
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_USER
|
||||
#define MQTT_USER "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PASSW
|
||||
#define MQTT_PASSW "";
|
||||
#endif
|
||||
|
||||
#endif // HASP_MQTT_H
|
@ -106,7 +106,7 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id)
|
||||
char buffer[128];
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR(HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("stype")] = buffer; // subtype = "p0b0"
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~state/" HASP_OBJECT_NOTATION), page, id);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~" MQTT_TOPIC_STATE "/" HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("t")] = buffer; // topic
|
||||
|
||||
doc[F("atype")] = "trigger"; // automation_type
|
||||
@ -148,7 +148,7 @@ void mqtt_ha_register_switch(uint8_t page, uint8_t id)
|
||||
char buffer[128];
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR(HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("stype")] = buffer; // subtype = "p0b0"
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~state/" HASP_OBJECT_NOTATION), page, id);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("~" MQTT_TOPIC_STATE "/" HASP_OBJECT_NOTATION), page, id);
|
||||
doc[F("t")] = buffer; // topic
|
||||
|
||||
doc[F("atype")] = F("binary_sensor"); // automation_type
|
||||
@ -169,7 +169,7 @@ void mqtt_ha_register_connectivity()
|
||||
|
||||
// start from static keys and values that do not change
|
||||
deserializeJson(doc, F("{\"device_class\":\"connectivity\",\"stat_t\":\"~LWT\",\"pl_on\":\"online\",\"pl_off\":"
|
||||
"\"offline\",\"json_attr_t\":\"~state/statusupdate\"}"));
|
||||
"\"offline\",\"json_attr_t\":\"~" MQTT_TOPIC_STATE "/statusupdate\"}"));
|
||||
mqtt_ha_add_device_ids(doc);
|
||||
mqtt_ha_add_unique_id(doc, item);
|
||||
|
||||
@ -187,13 +187,13 @@ void mqtt_ha_register_backlight()
|
||||
|
||||
// start from static keys and values that do not change
|
||||
deserializeJson(doc, F("{"
|
||||
"\"cmd_t\":\"~" HASP_TOPIC_COMMAND "/light\","
|
||||
"\"stat_t\":\"~state/light\","
|
||||
"\"cmd_t\":\"~" MQTT_TOPIC_COMMAND "/light\","
|
||||
"\"stat_t\":\"~" MQTT_TOPIC_STATE "/light\","
|
||||
"\"pl_on\":\"on\","
|
||||
"\"pl_off\":\"off\","
|
||||
"\"avty_t\":\"~LWT\","
|
||||
"\"bri_stat_t\":\"~state/dim\","
|
||||
"\"bri_cmd_t\":\"~" HASP_TOPIC_COMMAND "/dim\","
|
||||
"\"bri_stat_t\":\"~" MQTT_TOPIC_STATE "/dim\","
|
||||
"\"bri_cmd_t\":\"~" MQTT_TOPIC_COMMAND "/dim\","
|
||||
"\"bri_scl\":100}"));
|
||||
mqtt_ha_add_device_ids(doc);
|
||||
mqtt_ha_add_unique_id(doc, item);
|
||||
@ -215,8 +215,8 @@ void mqtt_ha_register_moodlight()
|
||||
|
||||
// start from static keys and values that do not change
|
||||
deserializeJson(doc, F("{"
|
||||
"\"cmd_t\":\"~" HASP_TOPIC_COMMAND "/moodlight\","
|
||||
"\"stat_t\":\"~state/moodlight\","
|
||||
"\"cmd_t\":\"~" MQTT_TOPIC_COMMAND "/moodlight\","
|
||||
"\"stat_t\":\"~" MQTT_TOPIC_STATE "/moodlight\","
|
||||
"\"platform\":\"mqtt\","
|
||||
"\"schema\":\"json\","
|
||||
"\"rgb\":true,"
|
||||
@ -225,12 +225,12 @@ void mqtt_ha_register_moodlight()
|
||||
|
||||
/* deserializeJson(doc, F("{"
|
||||
"\"cmd_t\":\"~command/moodlight\","
|
||||
// "\"stat_t\":\"~state/moodlight\","
|
||||
// "\"stat_t\":\"~" MQTT_TOPIC_STATE "/moodlight\","
|
||||
"\"avty_t\":\"~LWT\","
|
||||
"\"bri_stat_t\":\"~state/moodlight/dim\","
|
||||
"\"bri_stat_t\":\"~" MQTT_TOPIC_STATE "/moodlight/dim\","
|
||||
"\"bri_cmd_t\":\"~command/moodlight/dim\","
|
||||
"\"bri_scl\":100,"
|
||||
"\"rgb_stat_t\":\"~state/moodlight/rgb\","
|
||||
"\"rgb_stat_t\":\"~" MQTT_TOPIC_STATE "/moodlight/rgb\","
|
||||
"\"rgb_cmd_t\":\"~command/moodlight/rgb\"}"));
|
||||
*/
|
||||
mqtt_ha_add_device_ids(doc);
|
||||
@ -256,7 +256,8 @@ void mqtt_ha_register_idle()
|
||||
snprintf_P(item, sizeof(item), PSTR("idle"));
|
||||
|
||||
// start from static keys and values that do not change
|
||||
deserializeJson(doc, F("{\"stat_t\":\"~state/idle\",\"avty_t\":\"~LWT\",\"json_attr_t\":\"~state/statusupdate\"}"));
|
||||
deserializeJson(doc, F("{\"stat_t\":\"~" MQTT_TOPIC_STATE
|
||||
"/idle\",\"avty_t\":\"~LWT\",\"json_attr_t\":\"~" MQTT_TOPIC_STATE "/statusupdate\"}"));
|
||||
mqtt_ha_add_device_ids(doc);
|
||||
mqtt_ha_add_unique_id(doc, item);
|
||||
|
||||
@ -273,8 +274,8 @@ void mqtt_ha_register_activepage()
|
||||
snprintf_P(item, sizeof(item), PSTR("page"));
|
||||
|
||||
// start from static keys and values that do not change
|
||||
deserializeJson(doc,
|
||||
F("{\"cmd_t\":\"~" HASP_TOPIC_COMMAND "/page\",\"stat_t\":\"~state/page\",\"avty_t\":\"~LWT\"}"));
|
||||
deserializeJson(doc, F("{\"cmd_t\":\"~" MQTT_TOPIC_COMMAND "/page\",\"stat_t\":\"~" MQTT_TOPIC_STATE
|
||||
"/page\",\"avty_t\":\"~LWT\"}"));
|
||||
mqtt_ha_add_device_ids(doc);
|
||||
mqtt_ha_add_unique_id(doc, item);
|
||||
|
||||
|
@ -63,36 +63,6 @@ const char* mqttGroupTopic = TOPIC;
|
||||
bool mqttEnabled = false;
|
||||
bool mqttHAautodiscover = true;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// These defaults may be overwritten with values saved by the web interface
|
||||
#ifndef MQTT_HOST
|
||||
#define MQTT_HOST "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PORT
|
||||
#define MQTT_PORT 1883;
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_USER
|
||||
#define MQTT_USER "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PASSW
|
||||
#define MQTT_PASSW "";
|
||||
#endif
|
||||
#ifndef MQTT_NODENAME
|
||||
#define MQTT_NODENAME "";
|
||||
#endif
|
||||
#ifndef MQTT_GROUPNAME
|
||||
#define MQTT_GROUPNAME "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PREFIX
|
||||
#define MQTT_PREFIX "hasp"
|
||||
#endif
|
||||
|
||||
#define LWT_TOPIC "LWT"
|
||||
|
||||
std::recursive_mutex dispatch_mtx;
|
||||
std::recursive_mutex publish_mtx;
|
||||
|
||||
@ -164,12 +134,12 @@ static void mqtt_message_cb(char* topic, char* payload, size_t length)
|
||||
}
|
||||
|
||||
// catch a dangling LWT from a previous connection if it appears
|
||||
if(!strcmp_P(topic, PSTR(LWT_TOPIC))) { // endsWith LWT
|
||||
if(!strcmp_P(topic, PSTR(MQTT_TOPIC_LWT))) { // endsWith LWT
|
||||
if(!strcasecmp_P((char*)payload, PSTR("offline"))) {
|
||||
{
|
||||
char msg[8];
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 8];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" LWT_TOPIC), mqttNodeTopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_LWT), mqttNodeTopic);
|
||||
snprintf_P(msg, sizeof(msg), PSTR("online"));
|
||||
|
||||
// /*bool res =*/mqttClient.publish(tmp_topic, msg, true);
|
||||
@ -254,12 +224,12 @@ void onConnect(void* context, MQTTAsync_successData* response)
|
||||
|
||||
printf("Successful connection\n");
|
||||
|
||||
mqtt_subscribe(context, TOPIC HASP_TOPIC_COMMAND "/#");
|
||||
mqtt_subscribe(context, TOPIC HASP_TOPIC_COMMAND);
|
||||
mqtt_subscribe(context, TOPIC MQTT_TOPIC_COMMAND "/#");
|
||||
mqtt_subscribe(context, TOPIC MQTT_TOPIC_COMMAND);
|
||||
mqtt_subscribe(context, TOPIC "light");
|
||||
mqtt_subscribe(context, TOPIC "dim");
|
||||
|
||||
mqttPublish(TOPIC LWT_TOPIC, "online", false);
|
||||
mqttPublish(TOPIC MQTT_TOPIC_LWT, "online", false);
|
||||
|
||||
mqtt_send_object_state(0, 0, "connected");
|
||||
std::cout << std::endl;
|
||||
@ -340,15 +310,15 @@ bool mqttIsConnected()
|
||||
void mqtt_send_state(const __FlashStringHelper* subtopic, const char* payload)
|
||||
{
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 20];
|
||||
printf(("%sstate/%s\n"), mqttNodeTopic, subtopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), ("%sstate/%s"), mqttNodeTopic, subtopic);
|
||||
printf(("%s" MQTT_TOPIC_STATE "/%s\n"), mqttNodeTopic, subtopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), ("%s" MQTT_TOPIC_STATE "/%s"), mqttNodeTopic, subtopic);
|
||||
mqttPublish(tmp_topic, payload, false);
|
||||
}
|
||||
|
||||
void mqtt_send_object_state(uint8_t pageid, uint8_t btnid, const char* payload)
|
||||
{
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 20];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/p%ub%u"), mqttNodeTopic, pageid, btnid);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_STATE "/p%ub%u"), mqttNodeTopic, pageid, btnid);
|
||||
mqttPublish(tmp_topic, payload, false);
|
||||
}
|
||||
|
||||
|
@ -63,34 +63,6 @@ uint32_t mqttPublishCount;
|
||||
uint32_t mqttReceiveCount;
|
||||
uint32_t mqttFailedCount;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// These defaults may be overwritten with values saved by the web interface
|
||||
#ifndef MQTT_HOST
|
||||
#define MQTT_HOST "10.1.0.208";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PORT
|
||||
#define MQTT_PORT 1883;
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_USER
|
||||
#define MQTT_USER "hasp";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PASSW
|
||||
#define MQTT_PASSW "hasp";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_GROUPNAME
|
||||
#define MQTT_GROUPNAME "plates";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PREFIX
|
||||
#define MQTT_PREFIX "hasp"
|
||||
#endif
|
||||
|
||||
#define LWT_TOPIC "LWT"
|
||||
|
||||
std::string mqttServer = MQTT_HOST;
|
||||
std::string mqttUser = MQTT_USER;
|
||||
std::string mqttPassword = MQTT_PASSW;
|
||||
@ -143,10 +115,11 @@ static void mqtt_message_cb(char* topic, char* payload, size_t length)
|
||||
return;
|
||||
|
||||
#ifdef HASP_USE_BROADCAST
|
||||
} else if(topic == strstr_P(topic, PSTR(MQTT_PREFIX "/broadcast/"))) { // broadcast discovery topic
|
||||
} else if(topic == strstr_P(topic, PSTR(MQTT_PREFIX "/" MQTT_TOPIC_BROADCAST
|
||||
"/"))) { // /" MQTT_TOPIC_BROADCAST "/ discovery topic
|
||||
|
||||
// broadcast topic
|
||||
topic += strlen(MQTT_PREFIX "/broadcast/"); // shorten topic
|
||||
// /" MQTT_TOPIC_BROADCAST "/ topic
|
||||
topic += strlen(MQTT_PREFIX "/" MQTT_TOPIC_BROADCAST "/"); // shorten topic
|
||||
dispatch_topic_payload(topic, (const char*)payload, length > 0);
|
||||
return;
|
||||
#endif
|
||||
@ -167,7 +140,7 @@ static void mqtt_message_cb(char* topic, char* payload, size_t length)
|
||||
}
|
||||
|
||||
// catch a dangling LWT from a previous connection if it appears
|
||||
if(!strcmp_P(topic, PSTR(LWT_TOPIC))) { // endsWith LWT
|
||||
if(!strcmp_P(topic, PSTR(MQTT_TOPIC_LWT))) { // endsWith LWT
|
||||
if(!strcasecmp_P((char*)payload, PSTR("offline"))) {
|
||||
{
|
||||
char msg[8];
|
||||
@ -251,22 +224,23 @@ bool mqttIsConnected()
|
||||
int mqtt_send_state(const __FlashStringHelper* subtopic, const char* payload)
|
||||
{
|
||||
char tmp_topic[mqttNodeTopic.length() + 20];
|
||||
// printf(("%sstate/%s\n"), mqttNodeTopic, subtopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), ("%sstate/%s"), mqttNodeTopic.c_str(), subtopic);
|
||||
// printf(("%s" MQTT_TOPIC_STATE "/%s\n"), mqttNodeTopic, subtopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), ("%s" MQTT_TOPIC_STATE "/%s"), mqttNodeTopic.c_str(), subtopic);
|
||||
return mqttPublish(tmp_topic, payload, strlen(payload), false);
|
||||
}
|
||||
|
||||
int mqtt_send_discovery(const char* payload, size_t len)
|
||||
{
|
||||
char tmp_topic[20];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR(MQTT_PREFIX "/discovery"));
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR(MQTT_PREFIX "/" MQTT_TOPIC_DISCOVERY));
|
||||
return mqttPublish(tmp_topic, payload, len, false);
|
||||
}
|
||||
|
||||
int mqtt_send_object_state(uint8_t pageid, uint8_t btnid, const char* payload)
|
||||
{
|
||||
char tmp_topic[mqttNodeTopic.length() + 20];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/p%ub%u"), mqttNodeTopic.c_str(), pageid, btnid);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_STATE "/p%ub%u"), mqttNodeTopic.c_str(), pageid,
|
||||
btnid);
|
||||
return mqttPublish(tmp_topic, payload, strlen(payload), false);
|
||||
}
|
||||
|
||||
@ -278,10 +252,10 @@ static void onConnect(void* context)
|
||||
|
||||
LOG_VERBOSE(TAG_MQTT, D_MQTT_CONNECTED, mqttServer.c_str(), haspDevice.get_hostname());
|
||||
|
||||
topic = mqttGroupTopic + HASP_TOPIC_COMMAND "/#";
|
||||
topic = mqttGroupTopic + MQTT_TOPIC_COMMAND "/#";
|
||||
mqtt_subscribe(mqtt_client, topic.c_str());
|
||||
|
||||
topic = mqttNodeTopic + HASP_TOPIC_COMMAND "/#";
|
||||
topic = mqttNodeTopic + MQTT_TOPIC_COMMAND "/#";
|
||||
mqtt_subscribe(mqtt_client, topic.c_str());
|
||||
|
||||
topic = mqttGroupTopic + "config/#";
|
||||
@ -291,7 +265,7 @@ static void onConnect(void* context)
|
||||
mqtt_subscribe(mqtt_client, topic.c_str());
|
||||
|
||||
#ifdef HASP_USE_BROADCAST
|
||||
topic = MQTT_PREFIX "/broadcast/" HASP_TOPIC_COMMAND "/#";
|
||||
topic = MQTT_PREFIX "/" MQTT_TOPIC_BROADCAST "/" MQTT_TOPIC_COMMAND "/#";
|
||||
mqtt_subscribe(mqtt_client, topic.c_str());
|
||||
#endif
|
||||
|
||||
@ -412,7 +386,7 @@ void mqttSetup()
|
||||
|
||||
printf("%s %d\n", __FILE__, __LINE__);
|
||||
mqttLwtTopic = mqttNodeTopic;
|
||||
mqttLwtTopic += LWT_TOPIC;
|
||||
mqttLwtTopic += MQTT_TOPIC_LWT;
|
||||
|
||||
printf("%s %d\n", __FILE__, __LINE__);
|
||||
}
|
||||
|
@ -54,36 +54,6 @@ uint32_t mqttPublishCount;
|
||||
uint32_t mqttReceiveCount;
|
||||
uint32_t mqttFailedCount;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// These defaults may be overwritten with values saved by the web interface
|
||||
#ifndef MQTT_HOST
|
||||
#define MQTT_HOST "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PORT
|
||||
#define MQTT_PORT 1883;
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_USER
|
||||
#define MQTT_USER "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PASSW
|
||||
#define MQTT_PASSW "";
|
||||
#endif
|
||||
#ifndef MQTT_NODENAME
|
||||
#define MQTT_NODENAME "";
|
||||
#endif
|
||||
#ifndef MQTT_GROUPNAME
|
||||
#define MQTT_GROUPNAME "";
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_PREFIX
|
||||
#define MQTT_PREFIX "hasp"
|
||||
#endif
|
||||
|
||||
#define LWT_TOPIC "LWT"
|
||||
|
||||
char mqttServer[16] = MQTT_HOST;
|
||||
char mqttUser[23] = MQTT_USER;
|
||||
char mqttPassword[32] = MQTT_PASSW;
|
||||
@ -130,8 +100,8 @@ bool mqtt_send_lwt(bool online)
|
||||
char tmp_payload[8];
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 4];
|
||||
strncpy(tmp_topic, mqttNodeTopic, sizeof(tmp_topic));
|
||||
strncat_P(tmp_topic, PSTR(LWT_TOPIC), sizeof(tmp_topic));
|
||||
// snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" LWT_TOPIC), mqttNodeTopic);
|
||||
strncat_P(tmp_topic, PSTR(MQTT_TOPIC_LWT), sizeof(tmp_topic));
|
||||
// snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_LWT), mqttNodeTopic);
|
||||
|
||||
size_t len = snprintf_P(tmp_payload, sizeof(tmp_payload), online ? PSTR("online") : PSTR("offline"));
|
||||
bool res = mqttPublish(tmp_topic, tmp_payload, len, true);
|
||||
@ -142,21 +112,22 @@ bool mqtt_send_lwt(bool online)
|
||||
int mqtt_send_object_state(uint8_t pageid, uint8_t btnid, const char* payload)
|
||||
{
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 16];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/" HASP_OBJECT_NOTATION), mqttNodeTopic, pageid, btnid);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_STATE "/" HASP_OBJECT_NOTATION), mqttNodeTopic,
|
||||
pageid, btnid);
|
||||
return mqttPublish(tmp_topic, payload, false);
|
||||
}
|
||||
|
||||
int mqtt_send_state(const char* subtopic, const char* payload)
|
||||
{
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 20];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/%s"), mqttNodeTopic, subtopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_STATE "/%s"), mqttNodeTopic, subtopic);
|
||||
return mqttPublish(tmp_topic, payload, false);
|
||||
}
|
||||
|
||||
int mqtt_send_discovery(const char* payload, size_t len)
|
||||
{
|
||||
char tmp_topic[20];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR(MQTT_PREFIX "/discovery"));
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR(MQTT_PREFIX "/" MQTT_TOPIC_DISCOVERY));
|
||||
return mqttPublish(tmp_topic, payload, len, false);
|
||||
}
|
||||
|
||||
@ -188,10 +159,10 @@ static void mqtt_message_cb(char* topic, byte* payload, unsigned int length)
|
||||
return;
|
||||
|
||||
#ifdef HASP_USE_BROADCAST
|
||||
} else if(topic == strstr_P(topic, PSTR(MQTT_PREFIX "/broadcast/"))) { // broadcast discovery topic
|
||||
} else if(topic == strstr_P(topic, PSTR(MQTT_PREFIX "/" MQTT_TOPIC_BROADCAST "/"))) { // broadcast topic
|
||||
|
||||
// Broadcast topic
|
||||
topic += strlen_P(PSTR(MQTT_PREFIX "/broadcast/")); // shorten topic
|
||||
topic += strlen_P(PSTR(MQTT_PREFIX "/" MQTT_TOPIC_BROADCAST "/")); // shorten topic
|
||||
dispatch_topic_payload(topic, (const char*)payload, length > 0);
|
||||
return;
|
||||
#endif
|
||||
@ -212,12 +183,12 @@ static void mqtt_message_cb(char* topic, byte* payload, unsigned int length)
|
||||
}
|
||||
|
||||
// catch a dangling LWT from a previous connection if it appears
|
||||
/* if(!strcmp_P(topic, PSTR(LWT_TOPIC))) { // endsWith LWT
|
||||
/* if(!strcmp_P(topic, PSTR(MQTT_TOPIC_LWT))) { // endsWith LWT
|
||||
if(!strcasecmp_P((char*)payload, PSTR("offline"))) {
|
||||
{
|
||||
char msg[8];
|
||||
char tmp_topic[strlen(mqttNodeTopic) + 8];
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" LWT_TOPIC), mqttNodeTopic);
|
||||
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%s" MQTT_TOPIC_LWT), mqttNodeTopic);
|
||||
snprintf_P(msg, sizeof(msg), PSTR("online"));
|
||||
|
||||
// bool res =
|
||||
@ -266,8 +237,8 @@ void mqttStart()
|
||||
}
|
||||
|
||||
// Attempt to connect and set LWT and Clean Session
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s" LWT_TOPIC), mqttNodeTopic); // lastWillTopic
|
||||
snprintf_P(lastWillPayload, sizeof(lastWillPayload), PSTR("offline")); // lastWillPayload
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("%s" MQTT_TOPIC_LWT), mqttNodeTopic); // lastWillTopic
|
||||
snprintf_P(lastWillPayload, sizeof(lastWillPayload), PSTR("offline")); // lastWillPayload
|
||||
|
||||
haspProgressMsg(F(D_MQTT_CONNECTING));
|
||||
haspProgressVal(mqttReconnectCount * 5);
|
||||
@ -320,16 +291,16 @@ void mqttStart()
|
||||
|
||||
// Subscribe to our incoming topics
|
||||
char topic[64];
|
||||
snprintf_P(topic, sizeof(topic), PSTR("%s" HASP_TOPIC_COMMAND "/#"), mqttGroupTopic);
|
||||
snprintf_P(topic, sizeof(topic), PSTR("%s" MQTT_TOPIC_COMMAND "/#"), mqttGroupTopic);
|
||||
mqttSubscribeTo(topic);
|
||||
snprintf_P(topic, sizeof(topic), PSTR("%s" HASP_TOPIC_COMMAND "/#"), mqttNodeTopic);
|
||||
snprintf_P(topic, sizeof(topic), PSTR("%s" MQTT_TOPIC_COMMAND "/#"), mqttNodeTopic);
|
||||
mqttSubscribeTo(topic);
|
||||
// F_topic = F("%sconfig/#");
|
||||
// mqttSubscribeTo(F_topic, mqttGroupTopic);
|
||||
// mqttSubscribeTo(F("%s"LWT_TOPIC), mqttNodeTopic);
|
||||
// mqttSubscribeTo(F("%s"MQTT_TOPIC_LWT), mqttNodeTopic);
|
||||
|
||||
#ifdef HASP_USE_BROADCAST
|
||||
snprintf_P(topic, sizeof(topic), PSTR(MQTT_PREFIX "/broadcast/" HASP_TOPIC_COMMAND "/#"));
|
||||
snprintf_P(topic, sizeof(topic), PSTR(MQTT_PREFIX "/" MQTT_TOPIC_BROADCAST "/" MQTT_TOPIC_COMMAND "/#"));
|
||||
mqttSubscribeTo(topic);
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user