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

Posted 空水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ESP] ESP-IDF WiFi配网(SoftAP+HTTPD)代码备注相关的知识,希望对你有一定的参考价值。

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

Arduino ESP8266 SmartConfig配网+EEPROM保存+OLED显示

Arduino ESP8266 SmartConfig配网+EEPROM保存+OLED显示

  • 开发板:Nodemcu1.0
  • 支持库版本:2.7.4
  • OLED屏幕:0.96“屏幕
  • 配网工具:SmartConfig 或者点灯APP(本文选择的后者)

将WiFi信息存入eeprom与存入nvs不同的地方是,这种方式不受程序擦除影响,具体指的地方:

  • 所需库
#include<ESP8266WiFi.h>    //WIFI 头文件
#

以上是关于[ESP] ESP-IDF WiFi配网(SoftAP+HTTPD)代码备注的主要内容,如果未能解决你的问题,请参考以下文章

Arduino ESP32SmartConfig配网+NTP时间获取

用微信/APP给你的 ESP32 配置热点密码

用微信/APP给你的 ESP32 配置热点密码

Arduino ESP8266 SmartConfig配网+EEPROM保存+OLED显示

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

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