最近在学习ESP8266上onenet平台出现的问题

AT+MQTTSUB=0,"$sys/*/&/thing/property/post/reply",0
AT+MQTTPUB=0,"$sys/*/&/thing/property/post","{\"id\":\"123\"\,\"params\":{\"CurrentTemperature\":{\"value\":12}\,\"CurrentHumidity\":{\"value\":23}}}",0,0

*:产品ID,&:设备ID

这个是两个上传云平台的AT指,第一个是订阅报文,第二个是发布报文。

一.注意在调试助手的时候调试的时候一定要用转义字符'\'去转义,包括逗号(这个一定要注意)和双引号,字符串内部使用了双引号,就需要使用反斜线(\)来转义这些双引号,以避免与外层的双引号混淆,确保字符串被正确解析。

第二.一定要严格按照平台的格式编写,不然一定错,每个平台都有自己的规范,还有出现了这个错误{"id":null,"code":2402,"msg":"request format error"}多半是发布报文写错了

我就是在value这这里加了[]所以报错了

这个是用串口调试助手发送的指令,但是要用单片机去实现,还需要注意这个返斜杠一定要给上,不要发布不了数据的

#define publish_Command "AT+MQTTPUB=0,"
#define KBBT "\"$sys/6HoA7R27Nv/humiture/thing/property/post\"\,"//可变报头
#define YXZH "\"{\\\"id\\\":\\\"123\\\"\\\,\\\"params\\\":{\\\"CurrentTemperature\\\":{\\\"value\\\":%d}\\\,\\\"CurrentHumidity\\\":{\\\"value\\\":%d}}}\",0,0\r\n"
//订阅主题
#define sub_Command "AT+MQTTSUB=0,"
#define subtopic "\"$sys/6HoA7R27Nv/humiture/thing/property/post/reply\",0\r\n"//有恢复消息的topic
uint8_t  ESPSend_DHT(uint32_t CurrentTemperature,uint32_t CurrentHumidity)
{
    char buff[200]=publish_Command;
//	  char Send_Buff[200]={0};//最终发送数据的Buff
	  strcat(buff,KBBT);
	  strcat(buff,YXZH);
	  sprintf(buff,buff,CurrentTemperature,CurrentHumidity);//格式化数据,最终存放到Send_Buff
    USART2_SendString(buff);
    delay_ms(1000);
	  printf("%s",buff);
	  if(Check_Receive_OK()==0)//发布消息失败
		{
			 printf("温湿度数据上传失败\r\n");
		    return 0;
		}
		printf("温湿度上传成功\r\n");
    return 1;
}

注意反斜杠YXZH的反斜杠有三个

在这个字符串中:

  • \" 表示字符串中的一个双引号。
  • \\ 表示字符串中的一个反斜杠。

因为他要发送的是一个字符串,而字符串中\"代表双引号但是其中的反斜杠也要体现出来,让平台识别所以在YXZH的宏定义中有3个返斜杠

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值