wifi一键配网smartconfig原理及应用
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/flyingcys/article/details/49283273
智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器完成连接,与手机/云端进行数据交互.
智能硬件,如智能插座,智能空调,智能空气净化器由于不具备人机交互界面,不能像电脑一样的搜索/选择指定路由器,输入连接密码的界面,所以必须先解决正确连接路由问题;
目前流行的wifi配置模式一般有以下2种:
1:智能硬件处于AP模式,手机用于station模式,手机连接智能插座的AP后组成局域网,手机发送需要连接路由的SSID及密码至智能插座,智能硬件主动去连接指定路由后,完成连接
2:一键配置(smartconfig)模式:智能硬件处于混杂模式下,监听网络中的所有报文;手机APP将SSID和密码编码到UDP报文中,通过广播包或组播报发送,智能硬件接收到UDP报文后解码,得到正确的SSID和密码,然后主动连接指定SSID的路由,完成连接
以上两种方式都可以达到让智能硬件连接至指定路由的效果,但是AP模式需要手动切换手机wifi连接的网络,先连接智能硬件的AP网络,配置完成后再恢复连接正常wifi网络.有一定的复杂性;
但是smartconfig由于路由器品牌及手机品牌众多,存在一定的兼容性问题,所以目前一般厂家仍保留AP模式,作为smartconfig失败后的备用配网方案;
下面重点讲解一下一键配置模式原理及应用;当前主流IOT的wifi方案有:
厂商 |
芯片方案 |
技术名称 |
发包方式 |
|
1 |
TI |
CC3200 |
SmartConfig |
往某一固定IP发udp包 |
2 |
高通 |
QCA4004/QCA4002 |
SmartConnection |
|
3 |
联发科MTK |
MTK7681 |
SmartConnection |
组播地址编码 |
4 |
MARVELL |
MC200+8801/MW300 |
EasyConnect |
组播地址编码 |
5 |
Reltek |
AMEBA |
SimpleConfig |
组播地址编码 |
6 |
乐鑫 |
Esp8266 |
SmartConfig |
组播,通过长度编码 |
7 |
新案线 |
NL6621 |
SmartConfig |
组播地址编码 |
8 |
微信 |
AirKiss |
全网广播,通过长度编码 |
这个功能最早是TI提出并应用于CC3200上;不过从原理上讲,只要芯片驱动支持开启混杂模式(WiFi Promiscuous),就可以支持一键配网功能,只是各个厂家叫法及实现编码方式不同而已;
手机编码发送采用有UDP组播或广播,不同的发送方式和编码,对应的解码过程也不一样.,当前测试发现,微信是通过UDP广播包实现的;TI是通过往一固定IP地址发送udp包;其他芯片厂家提供的一般为UDP组播方式;
由于无线数据传播必定是广播的,所以必然可以被监听到;如果AP没有加密的话,UDP直接可以把相关的信息发送出来.但是路由器AP一般都是加密的,而且加密方式不固定.wifi模块在无法直接解析出数据包
我们通过分析802.11的MAC帧格式,可以知道,链路层载荷数据(即网络层的头部及网络层数)在数据帧中是清晰可见的,只要接到到802.11帧就可以立刻提取出载荷数据.
常见两种数据帧格式:
Station to AP
AP to Station
DA:目标MAC地址
SA:源MAC地址
LENGTH:表示后面数据的长度
LLC:表示LLC头
SNAP:表示3byte的厂商代码和2byte的协议类型表示
DATA:载荷数据
FCS:帧检验序列
发送端:可以采用2种不同的编码发送方式UDP广播和组播;
一:UDP广播:小规模测试后,发现当前只有微信的AirKiss采用了全网广播模式,为啥微信会采用广播模式,原因未知;TI采用的是固定IP地址的UDP数据包,原理和微信基本一致;
从802.11帧格式分析中获知,无线信号监听方的角度来说,不管无线信道有没有加密,DA、SA、LENGTH 、LLC、SNAP、FCS字段总是暴露的,因此信号监听方可以从这6个字段获取有效信息.从发送方讲,由于操作系统的限制,如果采用广播只剩下LENGTH发送方可通过改变其所需要发送数据包的长度进行控制.所以只要指定出一套利用长度编码的通讯协议,就可利用数据包的Lenght字段进行数据传递;
二:UDP组播:
组播地址是保留的D类地址从224.0.0.0-239.255.255.255
IP地址与MAC地址映射关系为:将MAC地址的前25位设定为01.00.5e,而MAC地址的后23位对应IP地址的位;
故发送端可以将数据编码在组播ip的后23bit中,通过组播包发送,接收端进行解码即可;
接收端进入一键配置功能后,wifi智能硬件从信道1开始监听路由上的数据,如当前监听信道有符合规则的数据包,就停止信道切换,停留在当前信道接收完全部数据.否则就依次切换至信道2.3.4....直到信道14后又从信道1开始继续监听依次循环;
当然,wifi智能硬件可以在开启混杂模式之前,先行扫描当前环境下存在的AP获取所有当前AP的信道,然后只对当前扫描到的信道进行依次监听,如当前环境下只存在2个路由,分别在1.6信道,只需轮流扫描channel1和channel6,这样可以提高配置效率
wifi一键配网smartconfig原理及应用相关推荐
- 【IoT】物联网之 WIFI 一键配网 smartConfig 浅析(ESP32)
一.背景 物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,WIFI 直连便是一个典型案例. 目前主流的 WIFI 配置模式有以下 2 种: 1.智能硬件处于 AP 模式(类似路由器,组成局域 ...
- ESP8266微信一键配网smartconfig,esp32可用
ESP8266微信一键配网 第一步 下载程序 微信配网 恢复出厂设置 ESP32 接入 第一步 下载程序 简单配网例程:点击下载 配网并控制LED例程:点击下载 例程下载后,需要使用arduino i ...
- ESP32一键配网------smartconfig
本文内容 使用smart_config例程,使用乐鑫ESPTouch APP或者微信公众号配网. 主流WiFi配网方式介绍 1) SoftAP配网 ESP32 会建立一个 WiFi 热点(AP模式), ...
- 图文手把手教程--ESP32 一键配网(Smartconfig、Airkiss)
本文内容 1)使用smart_config例程,使用乐鑫ESPTouch APP或者微信公众号配网. 2)修改smart_config例程,使ESP32复位后,如果已配过网,则不再进行配网,而是直接连 ...
- 使用Arduino开发ESP32(二十九):WiFismartconfig,一键配网,又名快连
前言 目前流行的wifi配置模式一般有以下2种: 1:智能硬件处于AP模式,手机用于station模式,手机连接智能插座的AP后组成局域网,手机发送需要连接路由的SSID及密码至智能插座,智能硬件主动 ...
- 启明云端分享|ESP32-S3 Smartconfig一键配网
物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,smartconfig一键配网便是一个典型案例. 智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器 ...
- WIFI配网方案:1、蓝牙配网 2、WIFI自身配网 3、SmartConfig一键配网
蓝牙配网: 顾名思义,通过蓝牙给WIFI配网,过程相对较为简单,首先设备上具有WIFI和蓝牙两种功能.然后通过手机的小程序或者APP连接产品蓝牙,连接之后发送WIFI连接所需要的SSID和PASSID ...
- WIFI快连(一键配网)原理分析及优化建议
一键配网说明 文章目录 一键配网说明 一键配网基本流程 说明 配网流程 EZ配网原理 组播 广播 EZ配网优缺点及优化建议 优点 缺点 优化建议 一键配网基本流程 说明 wifi快连也叫一键配网,也叫 ...
- Esp8266学习之旅⑥ 了解SmartConfig与Airkiss一键配网,给8266一键配网上云端。(带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
最新文章
- mysql深入使用教程_深入mysql基础知识的详解
- CommonJs模块规范
- SpringMVC教程--图片上传
- linux中256错误,YUM安装遭遇: [Errno 256] No more mirrors to try
- 微服务架构设计模式~根据业务能力进行服务拆分
- 中国金融家俱乐部秋季论坛聚焦“自贸区将带来什么”展开论道
- 华为电脑终于又能搭载正版 Windows 系统了!
- DBUtil使用步骤
- 3个小故事让你搞懂什么是敏捷开发模式!
- JAVA300集速学堂高淇个人笔记P1-P7如何学习JAVA300集计算机语言的发展历史多种编程语言的介绍JAVA三大版本的含义:
- 如何在MATLAB画一个首尾相连的数据矩阵图形
- c语言的32位指针加1是多少,c语言中,指针加1的情况.指针变量详细介绍
- mac上开发abp-zero(三) —— 代码调试篇
- 金融数据分析与挖掘具体实现方法 -1
- C语言之贪吃蛇游戏源码
- xgboost中自定义损失函数的使用方法
- Virtualbox源码分析21 NEM(Hyper-V兼容)2 Hyper-V初始化和VM创建销毁
- Spring 官方文档彩蛋
- 2022年双十二有哪些tws蓝牙耳机?值得入手的tws耳机推荐
- 大数据有哪些工作?岗位技能要求汇总
热门文章
- Python:Python学习总结
- Java知多少(完结篇)
- 安装32位mysql报错_在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法...
- file_put_contents图片固定大小_创意图片裁剪,神一样的操作
- 【UWB】公式推导计算坐标值
- 【STM32】标准外设库,系统架构,时钟系统
- 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第5章-具有一般耦合结构的时滞复杂网络同步
- 玩转Mixly – 6、Arduino AVR编程 之 文本
- android init.rc语法标准 .
- 【Android工具】更新安卓手机传感器信息获取工具Ampere Castro phyphox,轻松获取硬件数据和状态信息...