系列文章目录
前言
客户端=板子
服务端=阿里云
板子里的数据如何发给阿里云界面呢?
阿里云又如何下达命令进行控制呢?
一、服务端发送数据
定义发送数据的结构体:
定义的数组与结构体的重命名
1. uint8_t data_buf[256]={0};
2. Ali_data_Struct Ali_data;
发送数据的函数
二、服务端接受数据
uint8_t LED1_FLAG=0;
uint8_t SEN_STATE = 0;
void Ctrl_Elec(void)
{
//printf("接收到数据\r\n");
LED1_FLAG=DealPushdata_Qs0((uint8_t *)"LED1",4);
if(LED1_FLAG == '0') // "0"
{
Ali_data.LED1=0;
SEN_STATE = 1;
LED4(0);
LED5(0);
LED6(0);
printf("LED熄灭\r\n");
}else if(LED1_FLAG == 49)//"1"
{
Ali_data.LED1=1;
SEN_STATE = 1;
LED4(1);
LED5(1);
LED6(1);
printf("LED点亮\r\n");
}
if(SEN_STATE == 1)
{
SEN_STATE = 0;
sprintf((char *)data_buf,
"{\"method\":\"thing.service.property.set\",\
\"id\":\"230788020\",\
\"params\":{\
\"LED1\":%d\
}\
,\"version\":\"1.0\"}",
Ali_data.LED1);
MQTT_PublishQs0(P_TOPIC_NAME,(char *)data_buf,strlen((char *)data_buf));
memset(data_buf,0,256);
}
}
接收的数据,我就写的控制LED灯的开关。
DealPushdata_Qs0
MQTT_PublishQs0
这两个函数怎么用在 手把手教你写MQTT协议 里。
三、阿里云界面展示
if(Ali_run[0]>Ali_run[1])//加上时间片 阿里云接收不到数据
{
strcpy(Ali_data.DoorPwd,"1");
Ali_data.VoicePwr=4;
strcpy(Ali_data.NewCard,"3");
Send_Pack_Data(Ali_data);
}