最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

[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)Structureproto文件路径Description
prov-sessionhttp://.local/prov-sessionProtobufcomponents/protocomm/proto/sec1.proto用于会话建立的安全端点
prov-scanhttp://wifi-prov.local/prov-scanProtobufcomponents/wifi_provisioning/proto/wifi_scan.proto用于启动 Wi-Fi 扫描和接收扫描结果的端点
prov-ctrlhttp://wifi-prov.local/prov-ctrlProtobufcomponents/esp_local_ctrl/proto/esp_local_ctrl.proto用于控制 Wi-Fi 配置状态的端点
prov-confighttp://.local/prov-configProtobufcomponents/wifi_provisioning/proto/wifi_config.proto用于在设备上配置 Wi-Fi 凭据的端点
prov-verhttp://.local/proto-verJSON用于检索版本信息的端点

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

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

关键词: