将 XIAO ESP32C3 应用 Home Assistant 实现屋内无摄像头监控
本文将指导您在自己的Home Assistant环境中安装ESPHome服务。通过使用XIAO ESP32C3的WiFi功能,您将能够以非常平滑的方式连接您的XIAO与Home Assistant作为您的家庭终端的一部分。
此外,我们将结合目前最流行的24GHz毫米波人体静态存在模块Lite,构建一个具有人体存在检测的Home Assistant。
开始
截至2023年7月31日,之前导致雷达完全死亡的问题现在已经修复,所以请更新这个教程物种的库文件和配置器以正常工作。
如果您想跟随本教程完成所有内容,则需要准备以下内容。
XIAO ESP32C3 | 24GHz毫米波人体静态检测 存在感模块 Lite |
---|---|
该项目的最终目标是在Home Assistant中部署24GHz毫米波人体静态存在模块Lite。
我们为24GHz毫米波人体静态存在模块Lite编写了完整的配置文件和库,以方便您在此项目中快速部署传感器到Home Assistant。
本教程的内容大致包括以下步骤。
- 选择您的HomeAssistant环境
- [在HomeAssistant中安装和配置]ESPHome(#install-and-configure-esphome-in-home-assistant)
- 配置XIAO ESP32C3和ESPHome连接
- 配置家庭辅助面板
当然,如果你对XIAO ESP32C3如何在Home Assistant中使用Grove感兴趣,可以直接阅读本章。
本教程的内容大致包括以下步骤。
选择您的Home Assistant环境
在这个例程中,我们不会详细说明如何安装Home Assistant环境,我们将假设您已经有一个可用的Home Assistant设备。
如果你想学习如何安装Home Assistant,那么你可以参考官方教程。我们强烈建议您使用x86设备安装Home Assistant,因为这是使用Supervised安装Home Assistant最用户友好的方式。
根据上表,安装Home Assistant OS和Home Assistant Supervised是最合适的,这将为你省去很多麻烦。如果您在Docker上使用OpenWRT运行Home Assistant(例如使用LinkStar H68K),请不要担心,我们还将为您提供如何做到这一点的详细参考。
我们也写了如何安装Home Assistant的一些Seeed工作室的产品,请参阅他们。
在Home Assistant中安装ESPHome
第一步.安装ESPHome
- 场景1:在Home Assistant OS下安装ESPHome(带有插件商店)
如果你安装了Home Assistant操作系统,它有一个插件商店,这使得安装ESPHome容易得多。
在插件商店中,你可以搜索并安装ESPHome。
- 场景2:ESPHome安装在OpenWRT Docker/Docker下的Home Assistant下(没有插件存储)
由于我们正在安装家庭助手容器,我们不能简单地通过插件商店下载ESPHome服务,因此需要妥协。 我们需要下载ESPHome图像。
esphome / esphome:latest
在创建容器的页面上,我们需要做一些简单的设置。
容器名称:容器名称
Docker镜像:选择刚下载的esphome镜像
网络:选择主机模式
环境变量(-e):环境变量
一旦您填写了以上内容,保存并申请。您将看到容器已经创建。你还需要启动它。
为了达到在Home Assistant中下载ESPHome的效果,我们需要修改Home Assistant下的配置文件。
到 Home Assistant处理器.
我们去Home Assistant的终点站
在终端输入以下命令。
vi configuration.yaml
将以下内容添加到configuration.yaml
的末尾。
# Example configuration.yaml entry
panel_iframe:
esphome:
title: "ESPHome"
url: "http://192.168.100.1:6052"
icon: mdi:chip
在Home Assistant容器shell中输入 exit
退出docker容器。完成后,我们重新启动Home Assistant容器。
创建一个新的浏览器页面,输入地址http://homeassistant:8123/
,并输入您的Home Assistant帐户,您将看到ESPHome出现在左侧的工具栏中。
配置XIAO ESP32C3与ESPHome连接
步骤 2.硬件准备
我们教程的目标是能够在Home Assistant仪表板中查看24GHz毫米波人体静态存在模块Lite的数据信息。
通过主板连接设备和计算机。接线图如下表所示。
XIAO ESP32C3 | 24GHz毫米波人体静态检测 存在感模块 Lite | |
5V | --> | 5V |
GND | --> | GND |
D2 | --> | RX |
D3 | --> | TX |
步骤 3:将 XIAO ESP32C3 和 Home Assistant 保持在同一局域网中
我相信您的 Home Assistant 已经完成了联网工作,比如通过网线连接您的设备。接下来,您只需要启用一个本地网络(例如 WiFi),以便 XIAO ESP32C3 也能连接到该网络。
下面我将以 LinkStar H68K 为例,目标是让 XIAO 连接到 LinkStar H68K 的热点。
在 OpenWRT 的 Network 标签页中,选择 Wireless --> ADD。
在 Device Configuration 中的 Transmit Power 设置为 auto。
对于 Interface Configuration 的设置,请按照以下说明填写。
- 一般设置
- 模式:根据 LinkStar 访问互联网的方式选择。如果是通过有线连接,则选择 Client,如果是连接到 WiFi,则选择 Access Point。
- ESSID: 输入您的 WiFi 名称,请尽量避免使用空格或特殊字符。
- 网络: 勾选 lan.
- 无线安全
- 加密:WPA2-PSK
- 密钥:输入您想设置的 WiFi 密码。
填写完以上信息后,点击右下角的 Save and Apply 并等待片刻,LinkStar 会启动一个热点。
当没有设备连接到这个热点时,热点会显示为没有信号。
一切就绪后,让我们返回到 Home Assistant 页面。
点击 NEW DEVICE。然后点击 Continue。
在弹出的新窗口中,请输入您希望设置的应用名称,以及在 LinkStar 中设置的热点名称和密码(或者您自己的 WiFi)。确保 XIAO ESP32C3 和 Home Assistant 在 同一局域网 下。
然后点击 Next。
在设备类型中,选择 ESP32-C3。
然后点击 Next。
Click on the Encryption key and save it in a secure location, we will use this key in a later step.然后点击 SKIP。
步骤 4:修改 XIAO ESP32C3 配置文件(yaml)
接下来,我们点击刚刚创建的设备标签,在左下角找到 EDIT 按钮。
请注意,我们需要修改这个 yaml 文件。我们将要修改的内容分为两部分,对应于下图中的 ① 和 ② 两个部分。
- 在 ① 部分,除了您已经配置的设备名称外,请不要更改其他内容,其他配置请参考以下代码。
# part 1:
substitutions:
name: "xiao-esp32c3"
friendly_name: "XIAO ESP32C3"
esphome:
name: "${name}"
friendly_name: "${friendly_name}"
name_add_mac_suffix: true
project:
name: "seeedstudio.mmwave_kit"
version: "2.0"
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32c3
external_components:
- source: github://limengdu/mmwave-kit-external-components@main
refresh: 0s
esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
framework:
type: esp-idf
# Enable logging
logger:
hardware_uart: USB_SERIAL_JTAG
level: DEBUG
- 在 ② 部分,复制以下代码并粘贴到
captive_portal:
后面。
Click here to preview the full code
# 设置蓝牙 LE(仅适用于 ESP32),允许用户
# 向设备提供 Wi-Fi 凭据。
esp32_improv:
authorizer: none
# 通过串行客户端设置 improv 进行 Wi-Fi 配置。
# 如果您的设备有 USB 端口,方便用户在首次使用时添加凭据。
# improv_serial: # 注释掉,直到 improv 与 usb-jtag 在 idf 上兼容
uart:
id: uart_bus
baud_rate: 115200
rx_pin: 4
tx_pin: 5
parity: NONE
stop_bits: 1
seeed_mr24hpc1:
id: my_seeed_mr24hpc1
text_sensor:
- platform: seeed_mr24hpc1
heart_beat:
name: "心跳"
product_model:
name: "产品型号"
product_id:
name: "产品 ID"
hardware_model:
name: "硬件型号"
hardware_version:
name: "硬件版本"
keep_away:
name: "主动报告接近"
motion_status:
name: "运动信息"
custom_mode_end:
name: "自定义模式状态"
binary_sensor:
- platform: seeed_mr24hpc1
someone_exist:
name: "存在信息"
sensor:
- platform: seeed_mr24hpc1
custom_presence_of_detection:
name: "静态距离"
movement_signs:
name: "人体运动参数"
custom_motion_distance:
name: "运动距离"
custom_spatial_static_value:
name: "存在能量"
custom_spatial_motion_value:
name: "运动能量"
custom_motion_speed:
name: "运动速度"
custom_mode_num:
name: "当前自定义模式"
switch:
- platform: seeed_mr24hpc1
underly_open_function:
name: "底层开启功能信息输出开关"
button:
- platform: seeed_mr24hpc1
reset:
name: "模块重置"
custom_set_end:
name: "自定义模式设置结束"
select:
- platform: seeed_mr24hpc1
scene_mode:
name: "场景模式"
unman_time:
name: "进入无人状态的时间(标准功能)"
existence_boundary:
name: "存在边界"
motion_boundary:
name: "运动边界"
number:
- platform: seeed_mr24hpc1
sensitivity:
name: "灵敏度"
custom_mode:
name: "自定义模式"
existence_threshold:
name: "存在能量阈值"
motion_threshold:
name: "运动能量阈值"
motion_trigger:
name: "运动触发时间"
motion_to_rest:
name: "运动到静止时间"
custom_unman_time:
name: "进入无人状态时间(底层开启功能)"
然后,请点击右上角的 Save 按钮。
第五步:上传固件到 XIAO ESP32C3
- 方法一:直接编译并上传
如果您使用的是 x86 设备并且能够看到 XIAO 出现在设备端口中,那么您可以直接编译并将程序上传到 XIAO。
将 XIAO 连接到您的设备。
点击设备栏右下角的三个点,选择 安装。
点击 插入到运行 ESPHome 仪表盘的计算机。
选择连接的端口。
现在,它将下载所有必要的板卡包并将 ESPHome 固件刷入 XIAO ESP32C3。如果刷写成功,您将看到以下输出。
如果在连接 XIAO 到设备后无法找到端口,您可以尝试使用第二种方法。
- 方法二:使用主机上传已编译的固件
像 LinkStar H68K 这样的软路由不支持识别外部 MCU 设备,我们需要先下载已编译的固件,然后通过另一台 PC 上传固件。
点击右上角的 安装 按钮。然后选择最后一个项 手动下载。
选择 现代格式。
然后,它将花费较长时间进行下载和编译,请耐心等待。准备好后,固件将自动下载到您的计算机。
要将固件上传到 XIAO ESP32C3,有几种选择,我们展示了两种方法:
- 选项 1:使用 ESPhome Web 工具 工具 上传。
确保已安装正确的驱动程序。以下是 ESP 设备常用芯片的驱动程序。
CP2102 驱动程序: Windows & Mac
在 Chrome 或 Edge 浏览器中打开 ESPhome Web 工具。
点击 连接。
在弹出的窗口中选择 XIAO ESP32 的串口。
点击 安装,然后选择从上述步骤下载的 .bin
文件。
- 选项 2:使用 esphome-flasher 工具 工具。
如果在安装驱动程序并更换浏览器后仍然无法使用方法一上传固件,您可以尝试使用方法二。请参考官方教程,了解具体的安装方法和操作说明。
如果您希望查看 XIAO ESP32C3 的日志消息,您也可以通过该软件的 View Logs 按钮来查看。
上传完成后,您可以断开 XIAO ESP32C3 与 PC 的连接(除非您需要查看日志),然后单独为 XIAO 提供电源。
如果一切顺利,XIAO ESP32C3 将搜索并连接到您为其设置的 Wi-Fi。
就像我一样,我使用 LinkStar H68K 的网络。您可以在网络选项中找到它,并看到 LinkStar H68K 分配给它的 IP 地址。
通常,此时在 Home Assistant 中,设备的状态也会从离线变为在线。
配置 Home Assistant 面板
第六步:连接 XIAO ESP32C3
如果您的局域网中没有太多 Home Assistant 设备,Home Assistant 可以自动搜索并将您的 ESP 设备添加到设备标签中。您可以在 设置 中的 设备与服务 标签页中看到此设备。
如果它没有自动搜索,您也可以通过 IP 地址连接到 XIAO ESP32C3。
点击 添加集成 并搜索 esphome。
然后输入 XIAO ESP32C3 的 IP 地址,端口号为 6053,然后点击 提交。
如果输入的 IP 地址和端口号正确,您将看到提示输入加密密钥,这个密钥是我们在 第4步 中保存的。
然后点击 提交。
此时,设备添加的步骤已经成功完成。
第七步:24GHz mmWave 模块 Lite 功能概述
为了帮助您快速了解该套件的完整功能和如何使用这些功能,您需要仔细阅读这一部分。如果您想要更详细的信息,我们建议您花时间阅读 产品用户手册.
关于仪表板的配置和参数的详细信息,我们在 ESPHome 文档中整理了详细的介绍,请点击链接阅读完整的文档和详细信息。
第八步:配置 Home Assistant 面板
如果您觉得默认的卡片展示数据非常枯燥且不友好,Home Assistant 提供了多种现成的仪表板供您选择。
您可以创建一个适合您个人偏好的仪表板。
例如,将信息输出的控制选项变成一个漂亮的开关。
将人体运动的速度转换成可视化的仪表板展示。
这就是我设计的内容,看起来像是一个智能家居控制中心。
到目前为止,我们已经成功完成了教程的内容。
使用 XIAO ESP32C3 连接 Grove 到 Home Assistant
当然,XIAO ESP32C3 不仅仅支持将 24GHz mmWave 人体静态存在模块 Lite 集成到 Home Assistant,您可以在本文件中找到更多适用于您自己的教程。
让您的创意发挥出来吧!
故障排除
常见问题 1:在使用 ESPhome Web 工具上传固件时出现以下错误,我该如何修复?
回答: 如果上传时出现此提示,断开 XIAO ESP32C3 与 PC 的连接。然后,在按住 BOOT 按钮的同时,将板卡连接到 PC,接着释放 BOOT 按钮,进入引导加载程序模式。此时,只需重新连接并再次上传固件即可。
常见问题 2:按照 esphome flasher 的教程,我在 Linux 下无法安装 esphome flasher?
回答:在执行以下命令时,您需要选择适合您的系统版本,否则会出现错误。例如,如果我的计算机是 Ubuntu 22.04,那么应该执行如下命令。
sudo apt install python3
pip3 install -U \
-f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/ \
wxPython
pip3 install esphomeflasher
常见问题 3:我填写了正确的 WiFi 和密码,为什么看不到 XIAO ESP32C3 的 IP 地址?
回答: 当遇到此问题时,请检查 XIAO ESP32C3 的天线是否连接到位。如果天线已连接,请确保 XIAO 与 LinkStar 的距离不超过 3 米(除非您已更换了更强大的天线)。如果仍然无法看到 XIAO,可以使用 esphome flasher 软件查看 XIAO 的日志信息,并通过日志检查 XIAO 的连接状态。您可以重新插拔 XIAO 尝试重新搜索 WiFi 并连接。
常见问题 4:我使用 Jlink 刷写固件时,出现了“编程范围 @address 0x08000000 失败(块验证错误)程序失败,无法编程和验证目标”错误,怎么办?
当您使用 Jlink 刷写固件并出现此错误时,可能是以下情况之一。
- 您的传感器完全无法正常工作,无法接收到任何消息。
- 您正在尝试使用无效或不正确的固件。
如果您的雷达最初是正常工作的,请再次检查您使用的是正确的固件!不同的雷达和传感器型号使用不同的固件!通过 UART 升级固件与通过 Jlink 升级固件的方式不同!请停止执行以下步骤。
我已经确认我的产品在异常情况下显示此错误消息
如果您的雷达完全无法工作,那么出现此错误消息可能是正常的。
因为雷达的异常操作已经触发了读写保护机制,通常情况下不允许用户再对产品进行刷写程序,所以我们需要解锁雷达的读写保护机制。
由于解锁读写保护存在较高风险,我们不会在此公开解锁方法,而是将该方法放在 此处的ZIP 文件,供需要的用户使用。一旦异常的雷达被解保护,固件就可以重新更新,以恢复正常工作。
技术支持与产品讨论
感谢您选择我们的产品!我们致力于为您提供不同的支持,确保您使用我们的产品体验顺利。我们提供多种沟通渠道,以满足不同的需求和偏好。