首页 > 其他分享 >[ESP] ESP-IDF WiFi配网(SoftAP+HTTPD)代码备注

[ESP] ESP-IDF WiFi配网(SoftAP+HTTPD)代码备注

时间:2023-05-26 18:57:20浏览次数:47  
标签:HTTPD WiFi proto esp prov wifi ESP py tools

ESP-IDF WiFi配网(SoftAP+HTTPD)代码备注

主要是为了方便了解实际代码层面的配网协议是什么样的,所以文档记录的基本上是代码片段。

  • ESP-IDF的版本是V5.0
  • 使用 SoftAP 传输时,为了允许服务发现,必须在开始配置之前初始化 mDNS。
  • protocomm_security 一共有3个选项,这里只说了protocomm_security1
    • Curve25519 key exchange + AES-CTR encryption/decryption

配网流程图

该流程图适用BLEWiFi (SoftAP+HTTPD) 这两种配网方式。

Endpoint

连接到设备后,可以按如下方式识别与配置相关的协议端点:

Endpoint Name(BLE + GATT Server) URI (SoftAP + HTTP Server + mDNS) Structure proto文件路径 Description
prov-session http://.local/prov-session Protobuf components/protocomm/proto/sec1.proto 用于会话建立的安全端点
prov-scan http://wifi-prov.local/prov-scan Protobuf components/wifi_provisioning/proto/wifi_scan.proto 用于启动 Wi-Fi 扫描和接收扫描结果的端点
prov-ctrl http://wifi-prov.local/prov-ctrl Protobuf components/esp_local_ctrl/proto/esp_local_ctrl.proto 用于控制 Wi-Fi 配置状态的端点
prov-config http://.local/prov-config Protobuf components/wifi_provisioning/proto/wifi_config.proto 用于在设备上配置 Wi-Fi 凭据的端点
prov-ver http://.local/proto-ver JSON 用于检索版本信息的端点

如果用户想要根据他们的要求定制一些额外的协议端点,这将分两步完成。首先是创建具有特定名称的端点,第二步是为该端点注册处理程序。

Typical Provisioning Process

请提前了解 tools/esp_prov/esp_prov.py 的参数说明。

1. Transport specific discovery and connection

ESP32板子直接开启SoftAP模式,然后Client直接通过wifi连接就可以。

2. Session Etablishment

Get Version Request

  • tools/esp_prov/esp_prov.py:has_capability()
  • components/protocomm/src/common/protocomm.c:protocomm_version_handler()

Get Version Response

  • tools/esp_prov/esp_prov.py:has_capability()

Session Setup Request

  • tools/esp_prov/security/security1.py:setup0_request()
  • tools/esp_prov/security/security1.py:setup1_request()

Session Setup Response

  • components/protocomm/src/security/security1.c:sec1_req_handler()

3. Configuration

App specific Set Config(optional)

  • tools/esp_prov/esp_prov.py:has_capability()传参"wifi_scan"
  • tools/esp_prov/esp_prov.py:scan_wifi_APs()

Set Config Response(optional)

  • examples/wifi/scan/main/scan.c:wifi_scan()

Wi-Fi SetConfig(SSID,Passphrase...)

  • tools/esp_prov/esp_prov.py:send_wifi_config()

Wi-Fi SetConfig response

  • components/wifi_provisioning/src/wifi_config.c:cmd_set_config_handler()

Wi-Fi ApplyConfig cmd

  • tools/esp_prov/esp_prov.py:apply_wifi_config()

Wi-Fi ApplyConfig resp

  • components/wifi_provisioning/src/wifi_config.c:cmd_apply_config_handler()

Wi-Fi GetStatus cmd(repeated)

  • tools/esp_prov/esp_prov.py:wait_wifi_connected()

Wi-Fi GetStatus resp(repeated)

  • components/wifi_provisioning/src/wifi_config.c:cmd_get_status_handler()

4. Close connection

Close Connection

标签:HTTPD,WiFi,proto,esp,prov,wifi,ESP,py,tools
From: https://www.cnblogs.com/jiangyibo/p/17435568.html

相关文章

  • arduino esp32 ds18b20 实例代码
    #include<OneWire.h>#include<DallasTemperature.h>//引脚定义#defineONE_WIRE_BUS15//库引用实例OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(&oneWire);voidsetup(void){Serial.begin(9600);sensors.begin();}voidloop(vo......
  • error CS0246: The type or namespace name ‘NetworkManager‘ could not be found
    项目场景:之前用Unity5.x开发的项目,要升级到Unity2019问题描述:因为项目中用到了老版的Network导致升级后报错errorCS0246:Thetypeornamespacename'NetworkManager'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?)<hrstyle="border:s......
  • 在 openEuler 22.03 上安装 KubeSphere 实战教程
    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及Kubernetes、KubeSphere、DevOps、OpenStack、Ansible等。前言导图知识点定级:入门级KubeKey安装部署KubeSphere和KubernetesopenEuler操作系统的基本配......
  • Freespire开发团队近日宣布了Freespire 9.5的发布和普及
    Freespire开发团队近日宣布了Freespire9.5的发布和普及,这是这个基于Ubuntu的发行版的最新稳定版本,主要针对那些想从Windows转向Linux的人。基于Ubuntu22.04LTS(JammyJellyfish),Freespire9.5(代号为BlackBalloon)版本为其默认的GNOME42.5桌面环境配备了漂亮的暗色外观,并......
  • Freespire开发团队近日宣布了Freespire 9.5的发布和普及
    Freespire开发团队近日宣布了Freespire9.5的发布和普及,这是这个基于Ubuntu的发行版的最新稳定版本,主要针对那些想从Windows转向Linux的人。基于Ubuntu22.04LTS(JammyJellyfish),Freespire9.5(代号为BlackBalloon)版本为其默认的GNOME42.5桌面环境配备了漂亮的暗色外观,并......
  • Freespire开发团队近日宣布了Freespire 9.5的发布和普及
    Freespire开发团队近日宣布了Freespire9.5的发布和普及,这是这个基于Ubuntu的发行版的最新稳定版本,主要针对那些想从Windows转向Linux的人。基于Ubuntu22.04LTS(JammyJellyfish),Freespire9.5(代号为BlackBalloon)版本为其默认的GNOME42.5桌面环境配备了漂亮的暗色外观,并......
  • 3d打印机添加AI炒面检测服务 klipper+fluidd ubuntu本地部署TheSpaghttiDetective Ser
    炒面检测(TheSpaghettiDetective)介绍:炒面检测服务可以借助打印机的摄像头,检测打印是否炒面(打印失败)并作出提醒或停止打印的一种服务,该服务由服务器和客户端组成客户端支持两种: ocoprint或klipper服务器也有两种:ocobi官方提供的有限免费服务......
  • esp32c3 刷入 ESPHome 固件并联动 Home Assistant
    在物联网里有一个很有名的固件叫做ESPHome,它是一个通过简单而强大的配置文件控制ESP8266/ESP32并通过家庭自动化系统远程控制。目标这里通过一个简单的案例场景来开始讲述整个过程,目标是通过温湿度传感器上传室内温度并在墨水屏上展示温度变化曲线。先决条件既然是esp32......
  • 玩转互联|快易联共享WiFi蓝海市场一触即发
    随着互联网向移动互联的快速延伸,人们的生活形态、对智能移动终端的需求都在发生着迅速深刻的改变。快易联共享WiFi依托于其本身路径更短,转化更高,投放更准,成本更低等优势,使得新生态的商业化相对原生应用更具商业价值,未来给开发者带来的商业回报将更为丰厚。助力商家数字化升......
  • response返回文件给前端
    @GetMapping("/getPdf2")publicvoidgetPdf2(HttpServletResponseresponse)throwsIOException{Filefile=newFile("D://aasd.pdf");FileInputStreamfileInputStream=newFileInputStream(file);ServletOu......