Home Assistant:开源家庭自动化平台
Home Assistant 是开源的家庭自动化平台,可自定义集中管理各品牌的智能家居设备。
米家支持
Home Assistant 原生支持的米家设备较少,需要使用 hacs 下的集成 Xiaomi Home 或 Xiaomi Miot Auto。默认 Docker 容器不带 hacs,需要手动部署。[1]
- 下载 hacs,将其解压到 Home Assistant 配置的 config\custom_components\hacs 文件夹下。有时可能需要在 config 目录下新建 www 文件夹。
- 重启 Home Assistant 容器后,进入「设置」>「设备与服务」>「添加集成」,然后搜索 hacs,安装时按要求提供 github 账户授权。
- 左侧导航栏选择「HACS」,在搜索框中输入
Xiaomi Home
> 点击 Xiaomi Home ,进入集成详情页 > DOWNLOAD,完成后重启 Home Assistant 容器。
应用:自动提醒
我希望在工作时,每连续专注 25 分钟,就自动收到一次提醒,提示我站起来活动休息一下。传统的做法是使用番茄钟类应用,但它们无法准确判断我是否真的在工位上。
现在,我使用 Home Assistant 搭配人体感应器,如果持续 25 分钟检测到我在书房,则触发自动化发送一条提醒。由于使用米家设备时播放铃声可能会影响家人休息,我更偏向使用企业微信、Gotify 或 Discord 发送静音通知。
下面介绍如何通过 Home Assistant 的 rest_command 与自动化功能,完成这一工作提醒的设置。
1. 后台配置通知服务
Home Assistant 没有内置 webhook 通知动作,因此我们需要在后台配置(只需一次)定义你的 webhook,让 Home Assistant “认识”它。
打开
config\configuration.yaml
文件,在文件末尾,另起一行,粘贴以下代码:# 定义可以被调用的 RESTful 命令 (用于发送 Webhook) rest_command: # 这是我们给 webhook 起的名字,可以自定义,比如叫 notify_webhook notify_webhook: url: "https://YOUR_WEBHOOK_URL_HERE" # <--- 换成你自己的真实 Webhook URL method: 'POST' headers: content-type: 'application/json' payload: '{{ payload | tojson }}'
将
https://YOUR_WEBHOOK_URL_HERE
替换成你的 webhook 接收地址(比如微信、飞书、钉钉、IFTTT 等提供给你的 URL),然后点击右上角的 保存 图标。前往「开发者工具」>「YAML配置」,点击检查配置按钮。检查成功后,点击重启按钮,等待 Home Assistant 重启完成。
至此,准备工作完成!你已经成功创建了一个名为 rest_command.notify_webhook
的服务。接下来,我们就可以在任何自动化中轻松调用它了。
2. 在可视化编辑器中添加 Webhook 动作
前往「设置」>「自动化与场景」,点击右下角的创建自动化,或者点击你已有的自动化脚本进行编辑。
在“就执行”区域,选择「其他动作」>「执行动作」。在输入框里开始输入
rest_command
,系统会自动提示。从下拉列表中选择我们刚刚创建的rest_command.notify_webhook
。点击新增动作右上角的三个点,选择「YAML编辑」,会出现一个新的区域叫“动作数据”。这里就是我们要发送的具体内容
payload
。将编辑框中的
data: {}
替换为以下代码。这些内容将会被发送到你的 webhook 地址。注意 payload 中的格式应按照webhook的要求,我这里是企业微信通知格式。data: payload: msgtype: text text: content: 您已在书房持续工作超过25分钟,请起来休息一下!
discord 通知样式为
data: payload: content: 您已在书房持续工作超过25分钟,请起来休息一下
gotify 通知样式为
data: payload: title: 休息提醒 message: 您已在书房持续工作超过25分钟,请起来休息一下! priority: 0
现在,您的自动化已经配置完毕!当触发器条件满足时,它就会调用 rest_command.notify_webhook
服务,将你定义的 payload
内容发送到指定的 URL。
部署代码
推荐通过 Docker Compose 部署 Home Assistant,详情请见 Docker Compose 部署教程。以下是 Docker Compose 配置示例:
services:
homeassistant:
image: lscr.io/linuxserver/homeassistant:latest
container_name: homeassistant
network_mode: host
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/homeassistant/config:/config
ports:
- 8123:8123 #optional
#devices:
# - /path/to/device:/path/to/device #optional
restart: unless-stopped
部署完成后,通过浏览器访问 http://<你的服务器IP或域名>:8123
即可使用 Home Assistant。