|
|
@ -10,9 +10,12 @@ |
|
|
|
#define DBG_MQTTCLIENT(format, ...) do { } while(0) |
|
|
|
#define DBG_MQTTCLIENT(format, ...) do { } while(0) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
MQTT_Client mqttClient; |
|
|
|
MQTT_Client mqttClient; // main mqtt client used by esp-link
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef BRUNNELS |
|
|
|
char* statusTopicStr; |
|
|
|
char* statusTopicStr; |
|
|
|
static char* onlineMsgStr; |
|
|
|
static char* onlineMsgStr; |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
static MqttCallback connected_cb; |
|
|
|
static MqttCallback connected_cb; |
|
|
|
static MqttCallback disconnected_cb; |
|
|
|
static MqttCallback disconnected_cb; |
|
|
@ -21,10 +24,12 @@ static MqttDataCallback data_cb; |
|
|
|
|
|
|
|
|
|
|
|
void ICACHE_FLASH_ATTR |
|
|
|
void ICACHE_FLASH_ATTR |
|
|
|
mqttConnectedCb(uint32_t *args) { |
|
|
|
mqttConnectedCb(uint32_t *args) { |
|
|
|
MQTT_Client* client = (MQTT_Client*)args; |
|
|
|
|
|
|
|
DBG_MQTTCLIENT("MQTT Client: Connected\n"); |
|
|
|
DBG_MQTTCLIENT("MQTT Client: Connected\n"); |
|
|
|
MQTT_Subscribe(client, "system/time", 0); |
|
|
|
//MQTT_Client* client = (MQTT_Client*)args;
|
|
|
|
|
|
|
|
//MQTT_Subscribe(client, "system/time", 0); // handy for testing
|
|
|
|
|
|
|
|
#ifdef BRUNNELS |
|
|
|
MQTT_Publish(client, "announce/all", onlineMsgStr, 0, 0); |
|
|
|
MQTT_Publish(client, "announce/all", onlineMsgStr, 0, 0); |
|
|
|
|
|
|
|
#endif |
|
|
|
if (connected_cb) |
|
|
|
if (connected_cb) |
|
|
|
connected_cb(args); |
|
|
|
connected_cb(args); |
|
|
|
} |
|
|
|
} |
|
|
@ -49,6 +54,7 @@ void ICACHE_FLASH_ATTR |
|
|
|
mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len) { |
|
|
|
mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len) { |
|
|
|
// MQTT_Client* client = (MQTT_Client*)args;
|
|
|
|
// MQTT_Client* client = (MQTT_Client*)args;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MQTTCLIENT_DBG |
|
|
|
char *topicBuf = (char*)os_zalloc(topic_len + 1); |
|
|
|
char *topicBuf = (char*)os_zalloc(topic_len + 1); |
|
|
|
char *dataBuf = (char*)os_zalloc(data_len + 1); |
|
|
|
char *dataBuf = (char*)os_zalloc(data_len + 1); |
|
|
|
|
|
|
|
|
|
|
@ -58,9 +64,10 @@ mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *da |
|
|
|
os_memcpy(dataBuf, data, data_len); |
|
|
|
os_memcpy(dataBuf, data, data_len); |
|
|
|
dataBuf[data_len] = 0; |
|
|
|
dataBuf[data_len] = 0; |
|
|
|
|
|
|
|
|
|
|
|
DBG_MQTTCLIENT("MQTT Client: Received topic: %s, data: %s\n", topicBuf, dataBuf); |
|
|
|
os_printf("MQTT Client: Received topic: %s, data: %s\n", topicBuf, dataBuf); |
|
|
|
os_free(topicBuf); |
|
|
|
os_free(topicBuf); |
|
|
|
os_free(dataBuf); |
|
|
|
os_free(dataBuf); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
if (data_cb) |
|
|
|
if (data_cb) |
|
|
|
data_cb(args, topic, topic_len, data, data_len); |
|
|
|
data_cb(args, topic, topic_len, data, data_len); |
|
|
@ -82,21 +89,16 @@ wifiStateChangeCb(uint8_t status) |
|
|
|
void ICACHE_FLASH_ATTR |
|
|
|
void ICACHE_FLASH_ATTR |
|
|
|
mqtt_client_init() |
|
|
|
mqtt_client_init() |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (flashConfig.mqtt_enable) { |
|
|
|
|
|
|
|
MQTT_Init(&mqttClient, flashConfig.mqtt_host, flashConfig.mqtt_port, 0, flashConfig.mqtt_timeout, |
|
|
|
MQTT_Init(&mqttClient, flashConfig.mqtt_host, flashConfig.mqtt_port, 0, flashConfig.mqtt_timeout, |
|
|
|
flashConfig.mqtt_clientid, flashConfig.mqtt_username, flashConfig.mqtt_password, |
|
|
|
flashConfig.mqtt_clientid, flashConfig.mqtt_username, flashConfig.mqtt_password, |
|
|
|
flashConfig.mqtt_keepalive); |
|
|
|
flashConfig.mqtt_keepalive); |
|
|
|
|
|
|
|
|
|
|
|
if (flashConfig.mqtt_status_enable) { |
|
|
|
|
|
|
|
// removed client_id concat for now until a better solution is devised
|
|
|
|
// removed client_id concat for now until a better solution is devised
|
|
|
|
// statusTopicStr = (char*)os_zalloc(strlen(flashConfig.mqtt_clientid) + strlen(flashConfig.mqtt_status_topic) + 2);
|
|
|
|
// statusTopicStr = (char*)os_zalloc(strlen(flashConfig.mqtt_clientid) + strlen(flashConfig.mqtt_status_topic) + 2);
|
|
|
|
// os_strcpy(statusTopicStr, flashConfig.mqtt_clientid);
|
|
|
|
// os_strcpy(statusTopicStr, flashConfig.mqtt_clientid);
|
|
|
|
// os_strcat(statusTopicStr, "/");
|
|
|
|
// os_strcat(statusTopicStr, "/");
|
|
|
|
|
|
|
|
|
|
|
|
statusTopicStr = (char*)os_zalloc(strlen(flashConfig.mqtt_status_topic) + 1); |
|
|
|
#ifdef BRUNNELS |
|
|
|
os_strcpy(statusTopicStr, flashConfig.mqtt_status_topic); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char* onlineMsg = " is online"; |
|
|
|
char* onlineMsg = " is online"; |
|
|
|
onlineMsgStr = (char*)os_zalloc(strlen(flashConfig.mqtt_clientid) + strlen(onlineMsg) + 1); |
|
|
|
onlineMsgStr = (char*)os_zalloc(strlen(flashConfig.mqtt_clientid) + strlen(onlineMsg) + 1); |
|
|
|
os_strcpy(onlineMsgStr, flashConfig.mqtt_clientid); |
|
|
|
os_strcpy(onlineMsgStr, flashConfig.mqtt_clientid); |
|
|
@ -112,12 +114,15 @@ mqtt_client_init() |
|
|
|
os_strcpy(lwtMsgStr, flashConfig.mqtt_clientid); |
|
|
|
os_strcpy(lwtMsgStr, flashConfig.mqtt_clientid); |
|
|
|
os_strcat(lwtMsgStr, lwt); |
|
|
|
os_strcat(lwtMsgStr, lwt); |
|
|
|
MQTT_InitLWT(&mqttClient, lwtMsgStr, offlineMsg, 0, 0); |
|
|
|
MQTT_InitLWT(&mqttClient, lwtMsgStr, offlineMsg, 0, 0); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
MQTT_OnConnected(&mqttClient, mqttConnectedCb); |
|
|
|
MQTT_OnConnected(&mqttClient, mqttConnectedCb); |
|
|
|
MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb); |
|
|
|
MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb); |
|
|
|
MQTT_OnPublished(&mqttClient, mqttPublishedCb); |
|
|
|
MQTT_OnPublished(&mqttClient, mqttPublishedCb); |
|
|
|
MQTT_OnData(&mqttClient, mqttDataCb); |
|
|
|
MQTT_OnData(&mqttClient, mqttDataCb); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (flashConfig.mqtt_enable && strlen(flashConfig.mqtt_host) > 0) |
|
|
|
|
|
|
|
MQTT_Connect(&mqttClient); |
|
|
|
|
|
|
|
|
|
|
|
wifiAddStateChangeCb(wifiStateChangeCb); |
|
|
|
wifiAddStateChangeCb(wifiStateChangeCb); |
|
|
|
} |
|
|
|
} |
|
|
|