forked from gary/BCU
2
0
Fork 0

配置下发主题分类

This commit is contained in:
Carl 2025-05-29 18:13:04 +08:00
parent 1dc6f097e0
commit a2b75cf76c
4 changed files with 3560 additions and 3600 deletions

File diff suppressed because it is too large Load Diff

View File

@ -146,6 +146,11 @@ uint8_t drv_mqtt_connect()
// KIT_PRINTF("Failed to set MQTT client credentials!\r\n");
}
if (!drv_at_send_cmd("AT+QMTSUB=1,1,\"bluesun/bms/read/11223344\",0", "OK", WIFI_TIMEOUT))
{
// KIT_PRINTF("Failed to set MQTT client credentials!\r\n");
}
// KIT_PRINTF("MQTT Connection Successful!\r\n");
return 0;
}

View File

@ -10,7 +10,7 @@
uint8_t rev_buff[QFC41D_MAX_RECV_SIZE] = {0};
uint8_t send_buff[QFC41D_MAX_SEND_SIZE] = {0};
char wifiName[40] = "BLUESUNESS", wifiPassWord[40] = "bluesun009", bleName[40] = "bsm1";
#define MAX_PAYLOAD_LEN 128
char cmd[1000] = {0}; //降低栈空间使用
@ -44,13 +44,11 @@ void parse_mqtt_message(char* message)
}
}
// 匹配四个引号
if(quote_count < 4)
{
return;
}
// 提取payload内容
char* payload_start = quotes[2] + 1;
char* payload_end = quotes[3];
size_t payload_len = payload_end - payload_start;
@ -81,28 +79,33 @@ void parse_mqtt_message(char* message)
len -= 2;
}
// 分离参数
char* plus_pos = strchr(processed, '+');
if(!plus_pos)
{
return;
}
// 后续增加对主题部分的解析,读取是全部读取,配置下发,是一条一条下发
// 解析主题
*plus_pos = '\0'; // 分割字符串
*plus_pos = '\0';
first = atoi(processed);
second = atoi(plus_pos + 1);
if((first >= 3000) && (first <= 3168))
{
bcu_data_set_0x06_msg(first, second);
if(strstr(message, "control") != NULL)
{
if((first >= 3000) && (first <= 3168))
{
bcu_data_set_0x06_msg(first, second);
}
else if ((first >= 4000) && (first <= 4999))
{
hmi_write_modbus_cfg(first - 4000, second);
}
}
else if ((first >= 4000) && (first <= 4999))
else if (strstr(message, "read") != NULL)
{
hmi_write_modbus_cfg(first - 4000, second);
//需要解决发送过程中与实时值DMA上传的冲突问题可以尝试标志位或者队列的方式
drv_mqtt_publish_read_no_respose("1", 1);
}
}
static void drv_qfc41d_push_data(WifiBleItem* item, uint8_t *buf, uint16_t len)
@ -371,8 +374,9 @@ uint8_t drv_qfc41d_init(void)
#define MQTT_CLIENT_ID "fc41d_client" // 客户端 ID
#define MQTT_USER "user" // MQTT 用户名
#define MQTT_PASSWORD "password" // MQTT 密码
#define MQTT_TOPIC "bluesun/bms/period/11223344" // 订阅/发布的主题
#define MQTT_MESSAGE "Hello from FC41D!" // 发送的消息
#define MQTT_TOPIC "bluesun/bms/period/11223344"
#define MQTT_TOPIC_control "bluesun/bms/control/reply/11223344"
#define MQTT_TOPIC_read "bluesun/bms/read/reply/11223344"
// 连接 MQTT 服务器
//uint8_t drv_mqtt_connect()
@ -444,6 +448,20 @@ uint8_t drv_mqtt_publish_no_respose(char* str,uint16_t length)
return 0;
}
uint8_t drv_mqtt_publish_control_no_respose(char* str,uint16_t length)
{
snprintf(cmd, sizeof(cmd), "AT+QMTPUB=1,1,2,0,\"%s\",%d,\"%s\"", MQTT_TOPIC_control, length, str);
drv_wireless_send_string_dma(cmd);
return 0;
}
uint8_t drv_mqtt_publish_read_no_respose(char* str,uint16_t length)
{
snprintf(cmd, sizeof(cmd), "AT+QMTPUB=1,1,2,0,\"%s\",%d,\"%s\"", MQTT_TOPIC_read, length, str);
drv_wireless_send_string_dma(cmd);
return 0;
}
// MQTT 初始化
//uint8_t drv_mqtt_init()
//{

View File

@ -68,6 +68,10 @@ uint8_t drv_mqtt_publish(char* str,uint16_t length);
uint8_t drv_mqtt_publish_no_respose(char* str,uint16_t length);
uint8_t drv_mqtt_publish_control_no_respose(char* str,uint16_t length);
uint8_t drv_mqtt_publish_read_no_respose(char* str,uint16_t length);
uint8_t drv_ble_init();
#endif //DRV_QFC41D_H_