基本知识:

  乐鑫⾃主研发的 ESP-TOUCH 协议采⽤的是 Smart Config(智能配置)技术,帮助⽤户将 采⽤ ESP8266EX 和 ESP32 的设备(以下简称“设备”)连接⾄ Wi-Fi ⽹络。⽤户只需在⼿ 机上进⾏简单操作即可实现智能配置。整个过程如下图所示:

  

 由于设备在⼀开始并未连接⾄⽹络,ESP-TOUCH App ⽆法直接向设备发送信息。通过 ESP-TOUCH 通信协议,具备 Wi-Fi ⽹络接⼊能⼒的设备(例如智能⼿机)就可以向接 ⼊点 (AP) 发送⼀系列 UDP 包,其中每⼀包的⻓度(即 Length 字段)都按照 ESPTOUCH 通信协议进⾏编码,SSID 和密码就包含在 Length 字段中,随后设备便可以获 得并解析出所需的信息。数据包结构如图 1-2 所示:

源码和app:

源码的路径如下所示:

源码路径:https://github.com/EspressifApp/EsptouchForAndroid/releases/tag/v1.1.0

根据你的所需进行修改或直接安装,笔者的截图如下所示:

操作步骤:

准备⼀台⽀持 ESP-TOUCH 的设备,开启配置功能;
将⼿机连接⾄路由器;
打开安装在⼿机上的 ESP-TOUCH App;
在 App 界⾯输⼊路由器的 SSID 和密码(若路由不加密则密码为空),开始连接。

注意事项:

• 设备与⼿机建⽴链路所需的时间和两者之间的距离有关,若距离很近,仅需数秒即可完成。

• 在开启设备端 ESP-TOUCH 智能配置功能之前,请确保路由器已经开启。由于开启此功能后,设备会先 扫描周围的 AP 信息,如果路由器没有开启,则⽆法获取周围的 AP 列表。

• ESP-TOUCH App 端发送序列有超时限制,即如果没有在规定的时间配置上路由,App 会返回配置失败 信息(参考 App 源码)。设备端也会有超时限制,从设备锁定通道开始计时到获取 SSID 和密码信息, 如果达到超时限制但并未获取到 SSID 和密码信息,设备会⾃动重新开始⼀次 Smart Config。⽤户可以通 过 esptouch_set_timeout(uint8 time_s) 或 esp_smartconfig_set_timeout(uint8 time_s) 设置超时时 间。

• Smart Config 过程中设备需要开启 Sniffer 模式,所以在 ESP8266 上 Station 和 soft-AP 模式都是关闭 的,不要调⽤其他相关 API。ESP32 不受此限制,可以同时开启 Sniffer 和 Station 模式。

• 配置结束后,发送端获取设备的 IP,设备端也会返回发送端的 IP,如果⽤户需要⾃定义发送端和设备端 的信息交互,可以使⽤此 IP 信息进⾏局域⽹通信。 • 如果路由器设置了“AP 隔离”,会出现设备连接路由器成功,但 App 未收到连接成功的提示的现象。

• ⽀持⼿机同时配置多个设备到同⼀路由器上,配置时 App 端选择接收多个返回结果。

• ESP8266 和 ESP32 不⽀持 5G 和 11AC 模式,因此不⽀持 Smart Config 连接 5G 或 11AC 模式的路由 器。

esp8266 smartconfig-智能配网分析和使用及注意事项的更多相关文章

  1. ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  2. ESP8266 智能配网 断电重连

    ESP8266 智能配网 断电重连 #include <ESP8266WiFi.h> bool autoConfig() { WiFi.begin(); for (int i = 0; i ...

  3. ESP32智能配网笔记

    基于ESP-IDF4.1 #include <string.h> #include <stdlib.h> #include "freertos/FreeRTOS.h& ...

  4. WIFI智能配网 - SmartConfig

    要开始IoT项目的第一步是什么?当然不是硬件,而是硬件与硬件的连接!即使有各种各样的通信协议没有好的连接方式绝对不行.那外设上没有的屏幕,没有键盘怎末输入密码怎末选择网络?对,这就是WIFI模块最重要 ...

  5. 27-ESP8266 SDK开发基础入门篇--编写Android SmartConfig一键配网程序

    style="font-size: 18pt;">https://www.cnblogs.com/yangfengwu/p/11429007.html https://wik ...

  6. ESP8266开发之旅 网络篇⑭ web配网

    1. 前言     目前,市面上流行多种配网方式: WIFI模块的智能配网(SmartConfig以及微信AirKiss配网) SmartConfig 配网方式 请参考博主之前的博文 ESP8266开 ...

  7. 26-ESP8266 SDK开发基础入门篇--编写WIFI模块 SmartConfig/Airkiss 一键配网

    https://www.cnblogs.com/yangfengwu/p/11427504.html SmartConfig/Airkiss 配网需要APP/微信公众号,这节大家先使用我做好的APP/ ...

  8. IoT时代:Wi-Fi“配网”技术剖析总结

    导读 近年来,物联网市场竞争激烈,从物联网平台厂商,设备生产商,到服务提供商,都在涌入这片红海.预计到2020年,全球联网设备数量将达到260亿个,年复合增长率达到20%:全球联网设备带来的数据将达到 ...

  9. WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信

    网页一键配网(1若为普通wifi直连  2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...

随机推荐

  1. Ned 的难题

    题目描述 Ned 再也看不下去 Robert 的种种恶习, 于是他决定出一道题来让他醒悟. Ned 的题目是这样: 给出一个有 n 个数的序列, 求其中所有连续子序列的数的最大公因数的乘积模 1000 ...

  2. 解决VS2017授权问题及没有Add ArcGIS License Checking问题

    内容源自:ArcGIS Engine+C#入门经典 老版本采用: 控件布局好后,需要对程序添加License许可.在Visual Studio的菜单栏上单击“项目”→单击“Add ArcGIS Lic ...

  3. C语言打印当前所在函数名、文件名、行号

    printf("[%s %s] %s: %s: %d\n", \ __DATE__, __TIME__, __FILE__, __func__, __LINE__); 内核驱动中: ...

  4. Ubuntu18.04安装NVIDIA显卡驱动

    1. 查看GPU型号 lspci | grep -i nvidia 我是 GeForce GTX 960M 2. NVIDIA官网下载驱动: https://www.nvidia.com/Downlo ...

  5. 实验吧之【拐弯抹角】(url伪静态)

    题目地址:http://ctf5.shiyanbar.com/indirection/ 打开后给了源码 <?php // code by SEC@USTC echo '<html>& ...

  6. DP题 总结 [更新中]

    建设中 ... 预防针 : 本蒟蒻代码风格清奇(⊙﹏⊙)b 一.选学霸 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一部分没有,同学们就会抗议.所 ...

  7. cookie session token 详解

    cookie 是保存在本地终端的数据.cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器. 可以在浏 ...

  8. C++bosst遍历文件目录,根据文件名返回文件路径。

    VS2071安装Boost库 安装boost库 接着安装boost_system-vc140(可根据开发需求,更改版本) 废话不多说,上代码 // 测试程序.cpp : 此文件包含 "mai ...

  9. web开发资源导航

    实用工具 前端在线工具 兼容性速查 html5兼容性查询 node-es6支持度 es6兼容性表查询 设备es6支持度 游览器H5支持度 浏览器内核检测工具 手机设备信息检测 浏览器市场份额 文档手册 ...

  10. Java源码 HashMap.roundUpToPowerOf2原理

    int rounded = number >= MAXIMUM_CAPACITY ? MAXIMUM_CAPACITY : (rounded = Integer.highestOneBit(nu ...