20260201:完善MQTT协议下发布消息与解析订阅消息函数
This commit is contained in:
@@ -6,12 +6,14 @@
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "App_MQTT.h"
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6> */
|
||||
TaskHandle_t xTaskWorkStatusLedHdlr;
|
||||
TaskHandle_t xTaskWifiJoinApHdlr;
|
||||
TaskHandle_t xTaskWifiNwkInitHdlr;
|
||||
TaskHandle_t xTaskMqttPublishTestHdlr;
|
||||
TaskHandle_t xTaskMqttPublishHdlr;
|
||||
TaskHandle_t xTaskMqttSubscribeHdlr;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD> */
|
||||
QueueHandle_t xQueueUsart1IrqHdlr;
|
||||
@@ -19,12 +21,11 @@ QueueHandle_t xQueueUsart2IrqHdlr;
|
||||
QueueHandle_t xQueueUsart3IrqHdlr;
|
||||
|
||||
/**
|
||||
* @brief ״ָ̬ʾLED<45><44><EFBFBD><EFBFBD>
|
||||
* @brief ״ָ̬ʾLED<45><44><EFBFBD><EFBFBD>
|
||||
* @note ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PC13<31><33><EFBFBD>ŵ<EFBFBD>LED<45>ƣ<EFBFBD>ʵ<EFBFBD><CAB5>ϵͳ״̬<D7B4><CCAC>ָʾ<D6B8><CABE><EFBFBD>ܡ<EFBFBD>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ض<EFBFBD><D8B6>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8>
|
||||
* @retval None
|
||||
*/
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
void vTaskWorkStatusLed(void *pvParameters)
|
||||
{
|
||||
while(1)
|
||||
@@ -37,7 +38,7 @@ void vTaskWorkStatusLed(void *pvParameters)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><>ʼ<EFBFBD><CABC>Wi-Fiģ<69><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief <20><>ʼ<EFBFBD><CABC>Wi-Fiģ<69><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>MQTTЭ<54><D0AD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ض<EFBFBD><D8B6>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8>
|
||||
* @retval None
|
||||
@@ -73,7 +74,8 @@ void vTaskWifiNetWorkInit(void *pvParameters)
|
||||
/* code */
|
||||
vUsartSendString(USART1, "Aliyun MQTT Init Successfully.\r\n");
|
||||
/* ֪ͨMQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
xTaskNotifyGive(xTaskMqttPublishTestHdlr);
|
||||
xTaskNotifyGive(xTaskMqttPublishHdlr);
|
||||
xTaskNotifyGive(xTaskMqttSubscribeHdlr);
|
||||
vTaskDelete(NULL);
|
||||
} else
|
||||
{
|
||||
@@ -87,7 +89,8 @@ void vTaskWifiNetWorkInit(void *pvParameters)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "EMQX MQTT Init Successfully.\r\n");
|
||||
xTaskNotifyGive(xTaskMqttPublishTestHdlr);
|
||||
xTaskNotifyGive(xTaskMqttPublishHdlr);
|
||||
xTaskNotifyGive(xTaskMqttSubscribeHdlr);
|
||||
vTaskDelete(NULL);
|
||||
} else
|
||||
{
|
||||
@@ -100,54 +103,86 @@ void vTaskWifiNetWorkInit(void *pvParameters)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ض<EFBFBD><D8B6>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskMqttPublishTest(void *pvParameters)
|
||||
void vTaskMqttPublish(void *pvParameters)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> */
|
||||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||
char pcCmd[256] = {0};
|
||||
char *pcJsonMsg = "{\"temperature\":23,\"humidity\":60}";
|
||||
while (1)
|
||||
{
|
||||
/* code */
|
||||
#if (ESP8266_MQTT_SERVER_MODE == ALIYUN)
|
||||
uint8_t ucLen = strlen(pcJsonMsg);
|
||||
snprintf(pcCmd, sizeof(pcCmd), "AT+MQTTPUBRAW=0,\"%s\",%d,1,0",
|
||||
ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC, ucLen);
|
||||
if (bEsp8266Command(pcCmd, "OK", ">", 3000) == pdTRUE &&
|
||||
bEsp8266Command(pcJsonMsg, "OK", NULL, 3000) == pdTRUE)
|
||||
while (bMqttPublish(ESP8266_ALIYUN_MQTT_PUBLISH_TOPIC, pcJsonMsg) == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
vUsartSendString(USART1, "Aliyun MQTT Publish Successfully.\r\n");
|
||||
} else
|
||||
{
|
||||
/* code */
|
||||
vUsartSendString(USART1, "Aliyun MQTT Publish Failed.\r\n");
|
||||
vUsartSendString(USART1, "MQTT Publish Successfully.\r\n");
|
||||
}
|
||||
vUsartSendString(USART1, "MQTT Publish Failed.\r\n");
|
||||
vTaskDelay(2000);
|
||||
#elif (ESP8266_MQTT_SERVER_MODE == EMQX)
|
||||
uint8_t ucLen = strlen(pcJsonMsg);
|
||||
snprintf(pcCmd, sizeof(pcCmd), "AT+MQTTPUBRAW=0,\"%s\",%d,1,0",
|
||||
ESP8266_EMQX_MQTT_PUBLISH_TOPIC, ucLen);
|
||||
if (bEsp8266Command(pcCmd, "OK", ">", 3000) == pdTRUE &&
|
||||
bEsp8266Command(pcJsonMsg, "OK", NULL, 3000) == pdTRUE)
|
||||
{
|
||||
vUsartSendString(USART1, "EMQX MQTT Publish Successfully.\r\n");
|
||||
} else
|
||||
while (bMqttPublish(ESP8266_EMQX_MQTT_PUBLISH_TOPIC, pcJsonMsg) == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
vUsartSendString(USART1, "EMQX MQTT Publish Failed.\r\n");
|
||||
vUsartSendString(USART1, "MQTT Publish Successfully.\r\n");
|
||||
}
|
||||
vTaskDelay(500);
|
||||
vUsartSendString(USART1, "MQTT Publish Failed.\r\n");
|
||||
vTaskDelay(2000);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
* @brief MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note ͨ<><CDA8>ESP8266ģ<36>鶩<EFBFBD><E9B6A9>MQTT<54><54><EFBFBD>Ⲣ<EFBFBD><E2B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param *pvParameters <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ض<EFBFBD><D8B6>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8>
|
||||
* @retval None
|
||||
*/
|
||||
void vTaskMqttSubscribe(void *pvParameters)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
/* code */
|
||||
if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_LED_ON)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "Lights on\r\n");
|
||||
}
|
||||
else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_LED_OFF)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "Lights off\r\n");
|
||||
}
|
||||
else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_FAN_ON)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "Fan on\r\n");
|
||||
}
|
||||
else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_FAN_OFF)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "Fan off\r\n");
|
||||
}
|
||||
else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_HUMIDIFIER_ON)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "Humidifier on\r\n");
|
||||
}
|
||||
else if (xMqttCmdParse(ESP8266_EMQX_MQTT_SUBSCRIBE_TOPIC) == MQTT_CMD_HUMIDIFIER_OFF)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "Humidifier off\r\n");
|
||||
}
|
||||
vTaskDelay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
* @note <20>ڴ˺<DAB4><CBBA><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊÿ<CEAA><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ķ<EFBFBD>ջ<EFBFBD><D5BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
@@ -169,16 +204,23 @@ void vCreateTasksList(void)
|
||||
(UBaseType_t ) 2,
|
||||
(TaskHandle_t * ) &xTaskWifiNwkInitHdlr);
|
||||
xTaskCreate(
|
||||
(TaskFunction_t ) vTaskMqttPublishTest,
|
||||
(TaskFunction_t ) vTaskMqttPublish,
|
||||
(char * ) "TaskName_MqttPublishTest",
|
||||
(configSTACK_DEPTH_TYPE) 512,
|
||||
(void * ) NULL,
|
||||
(UBaseType_t ) 2,
|
||||
(TaskHandle_t * ) &xTaskMqttPublishTestHdlr);
|
||||
(TaskHandle_t * ) &xTaskMqttPublishHdlr);
|
||||
xTaskCreate(
|
||||
(TaskFunction_t ) vTaskMqttSubscribe,
|
||||
(char * ) "TaskName_MqttSubscribe",
|
||||
(configSTACK_DEPTH_TYPE) 512,
|
||||
(void * ) NULL,
|
||||
(UBaseType_t ) 2,
|
||||
(TaskHandle_t * ) &xTaskMqttSubscribeHdlr);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
* @note <20>ڴ˺<DAB4><CBBA><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ķ<EFBFBD><C4B6>У<EFBFBD><D0A3><EFBFBD>Ϊÿ<CEAA><C3BF><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ij<EFBFBD><C4B3>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>
|
||||
* @param None
|
||||
* @retval None
|
||||
@@ -204,7 +246,7 @@ void vCreateQueuesList(void)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
* @note <20>ڴ˺<DAB4><CBBA><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param None
|
||||
* @retval None
|
||||
@@ -214,7 +256,7 @@ void vCreateSemaphoresList(void)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @note <20><>ʼ<EFBFBD><CABC>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A1A2B6>к<EFBFBD><D0BA>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param None
|
||||
* @retval int
|
||||
|
||||
Reference in New Issue
Block a user