安装准备
- 一台Nas或者可以7*24小时长期运行可以安装Docker的电脑
- 小爱音箱
- 小米中枢网关
安装环境介绍
- 使用FnOS1.0
- Home Assistant版本2025.1
- HACS版本2.0.5
- 拓竹插件版本v2.2.13
- Xiaomi Home版本v0.4.4
- 实现自动化
1. 安装Home Assistant
在FnOS应用中心中直接搜索Home Assistant点击安装即可,截至到2025.11.24日无法安装最新的Bambu Lab插件,需要修改image镜像为2025.1版本或以上。安装完成后可以修改
docker.1ms.run/homeassistant/home-assistant:2025.1
使用Dokcer Compose安装或者修改之前安装的镜像版本号
services:
homeassistant:
container_name: homeassistant
image: "docker.1ms.run/homeassistant/home-assistant:2025.1"
volumes:
- /var/apps/docker-home-assistantan/shares/home-assistant/config:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host
2. 安装HACS插件商店
-
下载HACS安装包GitHub地址下载hacs.zip文件
-
点击文件管理➡应用文件➡HA的文件夹➡config➡创建custom_components文件夹
-
将下载下来的hacs文件直接解压到custom_components文件夹中
-
重启Home Assistant
-
点击设置,设备与服务,点击右下角的添加集成搜索HACS,全选所有选项
-
安装HACS需要验证Github账号,登录账号后把验证码输入后即可绑定HACS
2. 安装拓竹插件
拓竹插件GitHub地址
- 点击HACS搜索Bambu Lab,右下角直接点击安装
- 点击设置会看到Bambu Lab,重新载入一下即可
- 点击设置,设备与服务,点击右下角的添加集成搜索Bambu Lab
- 登录拓竹插件,使用云登录
- 重启
3. 安装Xiaomi Home
Xiaomi Home插件GitHub地址
- 点击HACS搜索Xiaomi Home,右下角直接点击安装
- 点击设置会看到Xiaomi Home,重新载入一下即可
- 点击设置,设备与服务,点击右下角的添加集成搜索Xiaomi Home
- 登录小米账号
- 重启
4. 实现自动化
4.1. 打印完成场景播报实现
- Home Assistant中点击设置
- 点击自动化与场景
- 右下角创建自动化
- 点击创建新的自动化
- 点击添加触发条件
- 点击设备
- 搜索打印机并选择,触发条件选择打印完成
- 点击添加动作
- 选择通知
- 选择发送通知消息
- 点击添加目标,搜索你想播报的小爱音箱播放文本
- 消息内容填写你需要播放的文本,例如:“主人,打印机已打印完成”
- 保存并退出
图片示例
4.2. 播报自动化实现(需要小米中枢网关)
- 点击智能右上角加号选择手动控制
- 选择中枢网关,产生虚拟事件,内容随意
- 点击米家➡找到要播报的小爱音箱➡点击更多操作➡在功能设置界面找到训练计划并点击➡选择个人训练➡添加一种说法比如“3D打印机剩余打印时间”➡点击添加操作➡选择设备控制➡选择刚刚创建的手动控制场景
- 在原来的自动化中,添加触发条件修改为实体状态
- 属性选择事件名称,变为输入刚刚创建手动自动化的内容即可
- 我们先获取打印机的剩余时间
- 我们把下面的脚本文件复制到需要发送的文本即可
{# 获取打印时间,来自 Home Assistant 传感器 #}
{% set total_hours = states('修改为自己的传感器参数') | float %}
{# 判断时间是否大于0,大于0再播报 #}
{% if total_hours > 0 %}
{# 获取小时数 (整数部分) #}
{% set hours = total_hours | int %}
{# 获取分钟数 #}
{% set minutes = ((total_hours - hours) * 60) | int %}
{# 播报剩余时间 #}
距离打印完成,还剩余{{ hours }}小时{% if minutes > 0 %}{{ minutes }}分钟{% endif %}。
{# 计算预计完成时间:当前时间 + 剩余时间 #}
{% set finish_time = now() + timedelta(hours=hours, minutes=minutes) %}
{# 播报预计完成时间 #}
预计完成时间,{{ finish_time.strftime('%m月 %d日 %H时 %M分') }}
{% else %}
目前没有打印任务
{% endif %}
- 到第五步实际上已经操作完成,但是可能是小米HA的bug导致这个自动化无法稳定触发,我们需要在小米中枢网关中再发送一次事件
- 将HA监听的事件名称改为刚刚发送的名称”HA打印机时间获取“
现在所有的操作都执行完毕了,我们直接可以开始测试下是否能执行成功!