20260201:完善MQTT协议下发布消息与解析订阅消息函数
This commit is contained in:
@@ -1,9 +1,75 @@
|
||||
#include "App_MQTT.h"
|
||||
|
||||
bool bMqttDefaultSubscribe(char *pcTopic, char *pcMessage)
|
||||
/**
|
||||
* @brief bMqttPublish
|
||||
* @note ͨ<><CDA8>ESP8266ģ<36><C4A3><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
||||
* @param pcTopic<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @param pcMessage<67><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @retval true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
* @retval false<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
*/
|
||||
bool bMqttPublish(char *pcTopic, char *pcMessage)
|
||||
{
|
||||
char cCmd[256] = {0};
|
||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTT_SUBSCRIBE=\"%s\",\"%s\"", pcTopic, pcMessage);
|
||||
// Add logic to send the command and handle the response
|
||||
return true;
|
||||
uint8_t ucLen = strlen(pcMessage);
|
||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTPUBRAW=0,\"%s\",%d,1,0", pcTopic, ucLen);
|
||||
return bEsp8266Command(cCmd, "OK", ">", 3000) && bEsp8266Command(pcMessage, "OK", NULL, 3000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief bMqttSubMsgFormat
|
||||
* @note <20><><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
||||
* @param pcTopic<69><63><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @param pcMessage<67><65><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>Ϣ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @retval true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
* @retval false<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
*/
|
||||
bool bMqttSubMsgFormat(char *pcTopic, char *pcMessage)
|
||||
{
|
||||
// <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ͬ<EFBFBD><CDAC>ģʽ<C4A3><CABD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>Ϣ<EFBFBD><CFA2>ʽ<EFBFBD><CABD><EFBFBD>б<EFBFBD>д
|
||||
char *pcSubRecMsg;
|
||||
pcSubRecMsg = strstr(xSerialFrameRecord.cSerialReceivedBuffer, pcMessage);
|
||||
if (strstr(xSerialFrameRecord.cSerialReceivedBuffer, pcTopic), pcSubRecMsg)
|
||||
{
|
||||
/* code */
|
||||
vUsartPrintf(USART1, "MQTT Subscribe Message Matched: %s\r\n", pcSubRecMsg);
|
||||
return true;
|
||||
}
|
||||
return false; // ռλ<D5BC><CEBB><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief xMqttCmdParse
|
||||
* @note <20><><EFBFBD><EFBFBD>MQTT<54><54><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
||||
* @param pcTopic<69><63><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @retval eMqttCmd_t<5F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>ֵ
|
||||
*/
|
||||
eMqttCmd_t xMqttCmdParse(char *pcTopic)
|
||||
{
|
||||
if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"led\":\"on\"}}") == true)
|
||||
{
|
||||
return MQTT_CMD_LED_ON;
|
||||
}
|
||||
else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"led\":\"off\"}}") == true)
|
||||
{
|
||||
return MQTT_CMD_LED_OFF;
|
||||
}
|
||||
else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"fan\":\"on\"}}") == true)
|
||||
{
|
||||
return MQTT_CMD_FAN_ON;
|
||||
}
|
||||
else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"fan\":\"off\"}}") == true)
|
||||
{
|
||||
return MQTT_CMD_FAN_OFF;
|
||||
}
|
||||
else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"humidifier\":\"on\"}}") == true)
|
||||
{
|
||||
return MQTT_CMD_HUMIDIFIER_ON;
|
||||
}
|
||||
else if (bMqttSubMsgFormat(pcTopic, "{\"cmd\":{\"humidifier\":\"off\"}}") == true)
|
||||
{
|
||||
return MQTT_CMD_HUMIDIFIER_OFF;
|
||||
}
|
||||
return MQTT_CMD_UNKNOWN; // δʶ<CEB4><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
@@ -13,8 +13,21 @@ typedef enum
|
||||
MQTT_MODE_PROPERTY,
|
||||
}eMqttMode_t;
|
||||
|
||||
bool bMqttSubMsgFormat(eMqttMode_t ucMode, char *pcReceivedMsg, char *pcTopic, char *pcMessage);
|
||||
bool bMqttDefaultSubscribe(char *pcTopic, char *pcMessage);
|
||||
bool bMqttNormalPublish(char *pcTopic, char *pcMessage);
|
||||
typedef enum
|
||||
{
|
||||
/* data */
|
||||
MQTT_CMD_LED_ON = 0,
|
||||
MQTT_CMD_LED_OFF,
|
||||
MQTT_CMD_FAN_ON,
|
||||
MQTT_CMD_FAN_OFF,
|
||||
MQTT_CMD_HUMIDIFIER_ON,
|
||||
MQTT_CMD_HUMIDIFIER_OFF,
|
||||
MQTT_CMD_UNKNOWN = -1,
|
||||
}eMqttCmd_t;
|
||||
|
||||
|
||||
bool bMqttPublish(char *pcTopic, char *pcMessage);
|
||||
bool bMqttSubMsgFormat(char *pcTopic, char *pcMessage);
|
||||
eMqttCmd_t xMqttCmdParse(char *pcTopic);
|
||||
|
||||
#endif /* __APP_MQTT_H__ */
|
||||
|
||||
Reference in New Issue
Block a user