Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 Wi-Fi 网络。
对于具备丰富人机界面包括屏幕/键盘的设备,例如电脑或手机,可以直接输入 SSID/PSW 进行连接。
对于不具备丰富人机交互界面的物联网 Wi-Fi 设备,例如智能灯、扫地机器人等,则可以借助手机等智能设备,以某种配网方式将 SSID/PSW 传递该设备。
设备备通过 softAP 方式创建一个 Wi-Fi 热点,手机连接该热点,再通过数据通道例如 TCP/UDP 通讯,将目标 Wi-Fi 路由器的 SSID/PSW 传递该设备,设备获取后,即可连接 Wi-Fi 路由器从而连接互联网。同时,为了对设备进行绑定,手机 App 可以利用该 TCP/UDP 数据通道,将后台提供的配网 Token 发送给设备,并由设备转发至物联网后台,依据 Token 可以进行设备绑定。本文档主要指导您如何使用softAP 方式配网开发。
1.腾讯连连小程序进入配网模式后,则可以在物联网开发平台服务获取到当次配网的 Token。
2.配置WiFi 模式位softAP 配网模式。
3.小程序按照提示依次获取 Wi-Fi 列表,输入家里目标路由器的 SSID/PSW,再选择设备 softAP 热点的 SSID/PSW。
4.手机连接设备 softAP 热点成功后,小程序作为 UDP 客户端会连接 Wi-Fi 设备上面的 UDP 服务(默认 IP 为192.168.4.1,端口为8266)。
5.小程序给设备 UDP 服务,发送目标 Wi-Fi 路由器的 SSID/PSW 以及配网 Token。
6.如果2秒之内,未收到设备回复,则重复步骤5,UDP 客户端重复发送目标 Wi-Fi 路由器的 SSID/PSW 及配网 Token。(如果重复发送5次,都没有收到回复,则认为配网失败,Wi-Fi 设备有异常)
7.如果步骤5收到设备回复,则说明设备端已收到 Wi-Fi 路由器的 SSID/PSW 及 Token,正在连接 Wi-Fi 路由器,并上报 Token。此时小程序会提示手机也将连接 Wi-Fi 路由器,并通过 Token 轮询物联网后台,来确认配网及设备绑定是否成功。
7.设备端在成功连接 Wi-Fi 路由器后,需要通过 MQTT 连接物联网后台,并将小程序发送的配网 Token。
1.登录腾讯云平台,进入交互开发,选择配网引导。
2.选择配网方式为AirKiss协议配网。点保存后即可生成二维码。
3.微信小程序daunt配网引导。
4.开始配网,配置热点信息。
5.开始配网,等待配网完成。
6. 配网调试信息
softAP模式配置
/*SoftAP配网*/
u8 ESP8266_SoftAP_MOde(void)
{
u8 token[]="{"cmdType":2,"productId":"LA57WTHWi2","deviceName":"Smart_123","protoVersion":"2.0"}rn";//连接状态信息
char *p=NULL;
char data[256];
char buff[100];
u8 i=0;
u32 time1=0,time2=0;
usart3_cnt=0;
usart3_flag=0;
while(1)
{
if(usart3_flag)
{
usart3_rx_buff[usart3_cnt]='�';
printf("rx=%s",usart3_rx_buff);
//+IPD,97,192.168.4.2,52021:{"cmdType":1,"ssid":"wbyq_wifi","password":"12345678","token":"df4a4c90abee98c9a443ae8ffd8cc16b"
p=strstr((char *)usart3_rx_buff,"+IPD");
if(p)
{
strcpy(data,p);//将接收到的数据拷贝一份保存
p+=strlen("+IPD");
p+=1;
while(*p!=',' && *p!='�')p++;
p++;//跳过字符',',获取到IP地址起始位置
i=0;
//IP地址解析
while(*p!=',' && *p!='�')
{
buff[i++]=*p++;
}
buff[i]='�';
strcpy((char *)esp8266_info.esp8266_ip,buff);
//端口号解析
p++;
i=0;
while(*p!=':' && *p!='�')
{
buff[i++]=*p++;
}
buff[i]='�';
esp8266_info.esp8266_prot=atoi(buff);//字符串转整数
//printf("ip=%s:%drn",esp8266_info.esp8266_ip,esp8266_info.esp8266_prot);
printf("ret:%drn",Esp8266_UDP_SendData((u8*)esp8266_info.esp8266_ip,esp8266_info.esp8266_prot,token));//上报连接状态
}
ESP8266_GetData(data,(char *)esp8266_info.esp8266_name,"ssid");//WIFI名
ESP8266_GetData(data,(char *)esp8266_info.esp8266_key,"password");//密码
ESP8266_GetData(data,(char *)esp8266_info.token,"token");//token数据,需要返回给平台
// printf("wifi_name:%srn",esp8266_info.esp8266_name);
// printf("wifi_key:%srn",esp8266_info.esp8266_key);
// printf("wifi_token:%srn",esp8266_info.token);
LED1=1;
return 0;
}
Delay_Ms(1);
time1++;
time2++;
if(time2>=100)
{
time2=0;
LED1=!LED1;
}
if(time1>=1000*300)
{
LED1=1;
break;//超时退出
}
}
return 1;
}
全部0条评论
快来发表一下你的评论吧 !