Skip to main content

与 Home Assistant 和 SenseCAP 传感器共舞

分享一种将 LoRaWAN® 传感器集成到 Home Assistant 的方法。

pir

在智能家居领域已经有足够多的智能设备(传感器、灯具、开关),您可能已经拥有来自 Apple Homekit、Google Home 和 Amazon Alexa 的多个应用程序来服务不同的设备。非常需要在一个地方将它们全部连接起来。我最近在 2022 年 9 月读到新闻,matter 1.0 已经发布,旨在统一生态系统。然而,这肯定需要时间。

实际上,在 matter 发布的几年前,Home Assistant 就是构建完全定制化智能家居生态系统的最佳平台之一,它可以集成主流设备并设置自动化规则,让您的家成为一个更好、更智能的地方。这绝对是我想要学习并分享经验的东西。

pir

在这一系列文章中,我将分享如何在 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,它轻量且简单易用。

pir

准备一张大于 32GB 的 Micro SD 卡并将其插入您的计算机,这里我以 MacBook 为例。

pir

导航到其他特定用途操作系统,选择 Home Assistant 和 Home Automation。

pir

选择 Home Assistant

pir

选择适用于 RPi4 的 Home Assistant OS 版本

pir

然后选择 SD 卡驱动器,请小心,不要选择错误的磁盘,这可能会格式化您的驱动器并丢失所有宝贵的数据。

pir pir

根据您的网络速度,下载 Home Assistant 镜像可能需要一段时间。

然后将 micro SD 卡插入 Raspberry Pi 并连接一根以太网电缆。启动它,红色 LED 应该保持红色,绿色 LED 将开始闪烁,如果绿色 LED 不闪烁,这表明在镜像刷写过程中出现了问题。

pir

转到 http://homeassistant.local:8123/ 并等待安装完成。

pir

按照此链接注册您的 Home Assistant 账户并登录。

太好了!最终,您已经安装了 Home Assistant。

pir

通过应用程序将 SenseCAP 传感器接入

SenseCAP 是一系列工业传感器设备和网关产品,其中,S210x LoRaWAN 传感器主要为长距离和电池供电场景而构建。

我想使用新推出的 S2120 气象站,并将其部署在我的屋顶上,屋顶有6层楼高,所以LoRa的长距离通信功能很好地完成了这项工作。它已经配备了所有快速安装所需的配件。

pir

气象站作为标准的LoRaWAN设备工作,所以我可以在家中使用 SenseCAP M2 室内LoRaWAN网关,它有一个带磁性底座的3dBi天线。

pir

接下来,下载SenseCAP Mate应用程序并注册一个账户。

pir

仅供您参考,这个视频来自Seeed Studio,演示了基本的入门流程。

使用以太网电缆将M2 LoRaWAN网关连接到互联网,并在通电前连接天线,当您看到面板RGB LED保持绿色时,这意味着网关设置良好。

pir

现在让我来配置M2 LoRaWAN网关

  • 打开Mate应用程序并转到"设备"选项卡
  • 点击右上角的"+"图标扫描网关二维码,二维码在设备标签上。
  • 为您的设备命名并设置位置。

pir

以同样的方式,扫描二维码来配置S2120气象传感器。点击S2120传感器,现在我可以看到气象数据。

  • 空气温度
  • 空气湿度
  • 光照强度
  • 大气压力
  • 风向
  • 风速
  • 每小时降雨量
  • 紫外线指数

pir

现在是时候去我的屋顶并将其安装在杆子上了。

pir

我还有另一个 S2103 CO2、温度和湿度传感器S2105 土壤湿度、温度和EC传感器,它们在S210x系列中具有相同的优势,配置过程也相同。它们是符合工业标准的高质量产品。

pir

所以我也将它们添加到SenseCAP Mate应用程序中,并将它们安装在我的卧室和花盆中。

pir

现在,我已经在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密钥

pir

我的MQTT订阅信息是:

pir

回到Home Assistant网页界面。

Home Assistant中有很多集成

https://www.home-assistant.io/integrations/

pir

今天我将使用MQTT集成来订阅JSON格式的数据,并使用 MQTT传感器集成 将传感器值绑定到特定实体。

转到设置并进入设备和服务

pir

点击添加集成按钮并搜索MQTT

pir

请记住启用高级设置,如果您忘记输入客户端ID,设置将会失败。

pir

然后,您可以通过点击CONFIGURE按钮并监听主题来测试订阅是否工作

pir

pir

等待一会儿,就会有传感器消息。

pir

到目前为止,MQTT客户端已成功设置。

添加实体

我将添加多个实体来存储传感器测量数据,例如,创建一个新的"空气温度"实体并从S2120 MQTT JSON消息中获取测量值。并同样添加其他传感器实体。

我将通过编辑Home Assistant配置文件来完成此操作

configuration.yaml

前往设置并移动到插件,然后

pir pir

安装它并启用在侧边栏中显示,然后点击开始。

pir

现在这是修改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 }}"

pir

保存文件并转到开发者工具检查 YAML 文件是否正确。

然后,重启 Home Assistant

pir

重启后,确保 MQTT 正在监听 SenseCAP 主题

pir

然后,转到设置 -> 设备和服务 -> 实体

哇~~~所有传感器测量值都列在那里。

pir

创建传感器数据仪表板

最后一步是将传感器实体添加到仪表板。

转到概览并找到"编辑仪表板"

pir

选择实体卡片,这种卡片可以在一个卡片中包含多个传感器值。

我将为每个传感器创建三个卡片

pir

最后,我完成了非常基本的集成,并在 Home Assistant 中显示 SenseCAP 传感器数据。

pir

接下来,我将花更多时间优化用户界面,让它看起来更美观。

并使用 ESP32 向 Home Assistant 添加新传感器。

资源

与 Home Assistant 和 SenseCAP 传感器共舞

Loading Comments...