与 Home Assistant 和 SenseCAP 传感器共舞
分享一种将 LoRaWAN® 传感器集成到 Home Assistant 的方法。
在智能家居领域已经有足够多的智能设备(传感器、灯具、开关),您可能已经拥有来自 Apple Homekit、Google Home 和 Amazon Alexa 的多个应用程序来服务不同的设备。非常需要在一个地方将它们全部连接起来。我最近在 2022 年 9 月读到新闻,matter 1.0 已经发布,旨在统一生态系统。然而,这肯定需要时间。
实际上,在 matter 发布的几年前,Home Assistant 就是构建完全定制化智能家居生态系统的最佳平台之一,它可以集成主流设备并设置自动化规则,让您的家成为一个更好、更智能的地方。这绝对是我想要学习并分享经验的东西。
在这一系列文章中,我将分享如何在 Home Assistant 中构建一个出色的智能家居,并使用来自 Seeed Studio SenseCAP 产品的传感器。这是第一个里程碑。
从零开始运行 home assistant 并集成 SenseCAP 天气传感器。
以下是实现步骤:
- 在 Raspberry Pi 上安装 home assistant
- 通过应用程序将 SenseCAP 传感器接入
- 添加 MQTT 集成并订阅 SenseCAP 数据
- 添加具有不同传感器测量值的实体
- 创建传感器数据仪表板
在 Raspberry Pi 上安装 home assistant
要开始使用 Home Assistant,官方教程 非常有用。
有许多设备和平台可以运行 home assistant,我恰好有一个未使用的 Raspberry Pi,所以我将从这里开始。
我不使用 Balena etcher 来刷写 SD 卡,而是更喜欢使用官方的 Raspberry Pi Imager,它轻量且简单易用。
准备一张大于 32GB 的 Micro SD 卡并将其插入您的计算机,这里我以 MacBook 为例。
导航到其他特定用途操作系统,选择 Home Assistant 和 Home Automation。
选择 Home Assistant
选择适用于 RPi4 的 Home Assistant OS 版本
然后选择 SD 卡驱动器,请小心,不要选择错误的磁盘,这可能会格式化您的驱动器并丢失所有宝贵的数据。


根据您的网络速度,下载 Home Assistant 镜像可能需要一段时间。
然后将 micro SD 卡插入 Raspberry Pi 并连接一根以太网电缆。启动它,红色 LED 应该保持红色,绿色 LED 将开始闪烁,如果绿色 LED 不闪烁,这表明在镜像刷写过程中出现了问题。
转到 http://homeassistant.local:8123/
并等待安装完成。
按照此链接注册您的 Home Assistant 账户并登录。
太好了!最终,您已经安装了 Home Assistant。
通过应用程序将 SenseCAP 传感器接入
SenseCAP 是一系列工业传感器设备和网关产品,其中,S210x LoRaWAN 传感器主要为长距离和电池供电场景而构建。
我想使用新推出的 S2120 气象站,并将其部署在我的屋顶上,屋顶有6层楼高,所以LoRa的长距离通信功能很好地完成了这项工作。它已经配备了所有快速安装所需的配件。
气象站作为标准的LoRaWAN设备工作,所以我可以在家中使用 SenseCAP M2 室内LoRaWAN网关,它有一个带磁性底座的3dBi天线。
接下来,下载SenseCAP Mate应用程序并注册一个账户。
仅供您参考,这个视频来自Seeed Studio,演示了基本的入门流程。
使用以太网电缆将M2 LoRaWAN网关连接到互联网,并在通电前连接天线,当您看到面板RGB LED保持绿色时,这意味着网关设置良好。
现在让我来配置M2 LoRaWAN网关
- 打开Mate应用程序并转到"设备"选项卡
- 点击右上角的"+"图标扫描网关二维码,二维码在设备标签上。
- 为您的设备命名并设置位置。
以同样的方式,扫描二维码来配置S2120气象传感器。点击S2120传感器,现在我可以看到气象数据。
- 空气温度
- 空气湿度
- 光照强度
- 大气压力
- 风向
- 风速
- 每小时降雨量
- 紫外线指数
现在是时候去我的屋顶并将其安装在杆子上了。
我还有另一个 S2103 CO2、温度和湿度传感器 和 S2105 土壤湿度、温度和EC传感器,它们在S210x系列中具有相同的优势,配置过程也相同。它们是符合工业标准的高质量产品。
所以我也将它们添加到SenseCAP Mate应用程序中,并将它们安装在我的卧室和花盆中。
现在,我已经在SenseCAP传感器端设置好了一切。
添加MQTT集成
- 为什么我需要将传感器数据集成到Home Assistant中?
我可以利用Home Assistant中的自动化流程,而SenseCAP应用程序目前没有该功能。
- 将SenseCAP数据传输到Home Assistant的过程是什么?
获取您的SenseCAP账户API密钥<br/> 阅读SenseCAP开放流API文档(MQTT)<br/> 在Home Assistant中添加MQTT集成<br/> 通过MQTT订阅SenseCAP数据并使用API密钥<br/>
- 现在,让我们进入SenseCAP门户,在这里您可以找到您的
OrgID
= 组织ID
Password
= 访问API密钥
我的MQTT订阅信息是:
回到Home Assistant网页界面。
Home Assistant中有很多集成
https://www.home-assistant.io/integrations/
今天我将使用MQTT集成来订阅JSON格式的数据,并使用 MQTT传感器集成 将传感器值绑定到特定实体。
转到设置并进入设备和服务
点击添加集成按钮并搜索MQTT
请记住启用高级设置,如果您忘记输入客户端ID,设置将会失败。
然后,您可以通过点击CONFIGURE按钮并监听主题来测试订阅是否工作
等待一会儿,就会有传感器消息。
到目前为止,MQTT客户端已成功设置。
添加实体
我将添加多个实体来存储传感器测量数据,例如,创建一个新的"空气温度"实体并从S2120 MQTT JSON消息中获取测量值。并同样添加其他传感器实体。
我将通过编辑Home Assistant配置文件来完成此操作
configuration.yaml
前往设置并移动到插件,然后


安装它并启用在侧边栏中显示,然后点击开始。
现在这是修改YAML文件的重要部分,使用以下脚本
mqtt:
sensor:
- name: "空气温度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4097"
unit_of_measurement: "℃"
value_template: "{{ value_json.value }}"
- name: "空气湿度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4098"
unit_of_measurement: "%RH"
value_template: "{{ value_json.value }}"
- name: "光照强度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4099"
unit_of_measurement: "Lux"
value_template: "{{ value_json.value }}"
- name: "大气压力"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4101"
unit_of_measurement: "Pa"
value_template: "{{ value_json.value }}"
- name: "风向"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4104"
unit_of_measurement: "°"
value_template: "{{ value_json.value }}"
- name: "风速"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4105"
unit_of_measurement: "m/s"
value_template: "{{ value_json.value }}"
- name: "每小时降雨量"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4113"
unit_of_measurement: "mm/hour"
value_template: "{{ value_json.value }}"
- name: "紫外线指数"
state_topic: "/device_sensor_data/411841915123/2CF7F1C042400055/1/+/4190"
unit_of_measurement: "UV"
value_template: "{{ value_json.value }}"
- name: "土壤温度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C04160002C/1/+/4102"
unit_of_measurement: "℃"
value_template: "{{ value_json.value }}"
- name: "土壤湿度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C04160002C/1/+/4103"
unit_of_measurement: "%"
value_template: "{{ value_json.value }}"
- name: "电导率"
state_topic: "/device_sensor_data/411841915123/2CF7F1C04160002C/1/+/4108"
unit_of_measurement: "dS/m"
value_template: "{{ value_json.value }}"
- name: "卧室温度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C04160002C/1/+/4102"
unit_of_measurement: "℃"
value_template: "{{ value_json.value }}"
- name: "卧室湿度"
state_topic: "/device_sensor_data/411841915123/2CF7F1C04160002C/1/+/4103"
unit_of_measurement: "%RH"
value_template: "{{ value_json.value }}"
- name: "卧室二氧化碳"
state_topic: "/device_sensor_data/411841915123/2CF7F1C04160002C/1/+/4108"
unit_of_measurement: "ppm"
value_template: "{{ value_json.value }}"
保存文件并转到开发者工具检查 YAML 文件是否正确。
然后,重启 Home Assistant
重启后,确保 MQTT 正在监听 SenseCAP 主题
然后,转到设置 -> 设备和服务 -> 实体
哇~~~所有传感器测量值都列在那里。
创建传感器数据仪表板
最后一步是将传感器实体添加到仪表板。
转到概览并找到"编辑仪表板"
选择实体卡片,这种卡片可以在一个卡片中包含多个传感器值。
我将为每个传感器创建三个卡片
最后,我完成了非常基本的集成,并在 Home Assistant 中显示 SenseCAP 传感器数据。
接下来,我将花更多时间优化用户界面,让它看起来更美观。
并使用 ESP32 向 Home Assistant 添加新传感器。