diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c index 8b5e9ee..358e0f7 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/net_srv.c @@ -396,7 +396,12 @@ void mqtt_data_manage(uint8_t id) case PUBLISH: MQTTDeserialize_publish(&dup, &qos, &retained, &packetid, &topicName, &payload, &payloadlen, MyBuf, len); - manage_mqtt_recv_message((char *)payload, payloadlen); + /* V1.01: 通过 mqtt_deserialize_publish 做 topic 过滤 */ + { + char TmpBuf[128] = {0}; + memcpy(TmpBuf, topicName.lenstring.data, topicName.lenstring.len); + mqtt_deserialize_publish(TmpBuf, (char *)payload, payloadlen); + } reset_net_active_timeup(); break; case SUBACK: @@ -1052,7 +1057,12 @@ void manage_mqtt_recv_message(char * msg, int length) } reset_temp_guide(); - simple_parse_json(msg, DPG_API_KEY_METHOD, temp_guide); + + // V1.01: 优先解析新协议 cmd 字段,兼容旧 Method 字段 + simple_parse_json(msg, "\"cmd\"", temp_guide); + if(strlen(temp_guide) == 0) { + simple_parse_json(msg, DPG_API_KEY_METHOD, temp_guide); + } if(strlen(temp_guide) == 0) { @@ -1060,9 +1070,16 @@ void manage_mqtt_recv_message(char * msg, int length) return; } PRINT("Rcv_Dis_LED_m:%s\n", temp_guide); + + // 旧协议: Method = Heartbeat → 回复心跳 if(strstr(temp_guide, "Heartbeat") != NULL) { dev_response_heartbeat(NULL); + } + // 新协议: 解析 cmd 并打印(后续可扩展命令处理) + else if(strlen(temp_guide) > 0) + { + PRINT("MQTT cmd/method: %s, raw: %s\n", temp_guide, msg); } else { PRINT("Unknown MQTT method: %s\n", msg);