通过 BLE 使用 Improv
ESPHome 中的 esp32_improv 组件实现了开放的 Improv 标准。
它通过使用蓝牙低功耗(BLE)接收凭据来在 ESP32 设备上配置 Wi-Fi。
esp32_improv 组件会自动设置 BLE 服务器。
# Example configuration entrywifi: # ...
esp32_improv: authorizer: binary_sensor_id-
authorized_duration (Optional, Time): 授权超时并需要 重新授权前的时长。默认为
1min。 -
identify_duration (Optional, Time): 标识(identify)操作的持续时长。默认为
10s。 -
wifi_timeout (Optional, Time): 在 Wi-Fi 不再连接后、 启动 Improv 服务之前等待的时长。默认为
90s。 -
next_url (Optional, string): 配置完成后打开的 URL。默认为
https://my.home-assistant.io/redirect/config_flow_start?domain=esphome。 -
on_start (Optional, Automation): 当 Improv 正在等待授权和/或已授权时执行的操作。参见
on_start。 -
on_provisioned (Optional, Automation): 当配置流程完成时执行的操作。参见
on_provisioned。 -
on_provisioning (Optional, Automation): 当设备开始配置流程时执行的操作。参见
on_provisioning。 -
on_stop (Optional, Automation): 当 Improv 停止时执行的操作。 参见
on_stop。 -
on_state (Optional, Automation): 当 Improv 状态发生变化时执行的操作。参见
on_state。
Improv 自动化
Section titled “Improv 自动化”ESP32 Improv 组件提供了多种自动化,可用于在 Improv 配置流程期间提供反馈。
on_start
Section titled “on_start”当设备正在等待授权时(通常是通过按下设备上的按钮,如果已配置——参见上面的 authorizer)和/或已授权时,将触发此自动化。
esp32_improv: on_start: then: - logger.log: "Improv awaiting authorization/authorized"on_provisioned
Section titled “on_provisioned”当配置流程完成时,将触发此自动化。
esp32_improv: on_provisioned: then: - logger.log: "Improv provisioned"on_provisioning
Section titled “on_provisioning”当配置流程开始时,将触发此自动化。
esp32_improv: on_provisioning: then: - logger.log: "Improv provisioning"on_stop
Section titled “on_stop”当 Improv 停止时,将触发此自动化。
esp32_improv: on_stop: then: - logger.log: "Improv stopped"on_state
Section titled “on_state”此自动化将在每次状态变化时触发。
在此自动化的 lambda 中可以使用两个变量。它们是:
-
state, anenumnamedimprov::State, having one of the following values:improv::STATE_STOPPEDimprov::STATE_AWAITING_AUTHORIZATIONimprov::STATE_AUTHORIZEDimprov::STATE_PROVISIONINGimprov::STATE_PROVISIONED
-
error, anenumnamedimprov::Error, having one of the following values:improv::ERROR_NONEimprov::ERROR_INVALID_RPCimprov::ERROR_UNKNOWN_RPCimprov::ERROR_UNABLE_TO_CONNECTimprov::ERROR_NOT_AUTHORIZEDimprov::ERROR_UNKNOWN
esp32_improv: on_state: then: - if: condition: lambda: return state == improv::STATE_AUTHORIZED; then: - logger.log: "Improv state is STATE_AUTHORIZED"status_indicator 具有以下模式:
- 常亮:Improv 服务处于活动状态,正在等待授权。
- 每秒闪烁一次:Improv 服务正在等待凭据。
- 每秒闪烁 3 次,中间有间歇:客户端已使用标识(identify)命令。
- 每秒闪烁 5 次:正在验证凭据并将凭据保存到设备。
- 熄灭:Improv 服务未运行。