[流程系列] 接入AI播报的无感离家模式+回家模式+睡前巡检

点击蓝字,关注我们

本文为『瀚思彼岸』论坛技术文章,作者为cheyuze。在此表示感谢!文章版权归原作者所有,侵权必究。

写在前面:有了AI真的很方便,其中很多节点都是由AI编写的,已经持续用了一个月了,体验很好。所以分享一下,新人首分享~

也是和大家交流一下思路,参考了本论坛很多大佬们之前的分享,在此感谢!!!!!

另外,我是个懒人,所以帖子内容也由AI编写了包括代码也经过了AI脱敏处理,当前代码接入的是minimax模型,反正欢迎语巡检这种简单的任务其实任何模型都差不多~

附件为可导入的json文件


这套 Node-RED 流程是我在日常使用中一点点完善出来的,主要围绕 回家、离家、语音播报、设备联动和状态巡检 展开。

目前已经稳定运行了一段时间,逻辑不算特别复杂,但涉及的场景比较多,所以整理并脱敏后分享出来,供同样使用 Home Assistant 和 Node-RED 的朋友参考。


一、主要实现的功能


1. 回家模式

通过米家中枢网关产生“联动回家”事件,Node-RED 接收到事件后,会先判断当前是否处于离家状态。

确认回家后,会执行以下流程:

  • 根据家中光照情况自动开灯

  • 更新家庭在家状态

  • 判断本次回家人员

  • 获取天气、温度等信息

  • 生成并播放个性化欢迎语

  • 检查家中部分设备和耗材状态

  • 根据室内温度判断是否需要询问打开空调

  • 用户确认后,自动设置空调模式及目标温度

欢迎语并不是固定文本,而是会根据回家人员、时间、天气和家中状态动态生成。

为了避免欢迎语还没有播完,后续提醒就开始播放,我还根据欢迎语字数增加了动态延迟,等欢迎语播放结束后,再继续播报耗材或设备提醒。


2. 离家模式

离家模式不是开门后立即执行,而是会进行延迟判断,尽量避免取快递、倒垃圾等短时间外出被误判为真正离家。

主要逻辑包括:

  • 门内开锁后启动离家状态检测

  • 定时检查手机或设备群是否离线

  • 离线达到指定时间后确认离家

  • 更新家庭离家状态

  • 关闭空调、热水器等设备

  • 满足条件时启动扫地机器人

  • 扫地机器人每天只自动运行一次

  • 支持“临时离开”事件取消本次检测


3. 空调询问与确认

回家后,如果室内温度过高或过低,会通过小爱音箱询问是否需要打开空调。

询问时会把待执行方案临时保存,包括:

  • 制冷或制热模式

  • 建议目标温度

  • 当前室内温度

  • 触发原因

  • 生成时间

随后可以通过米家自动化产生:

  • “确认打开空调”

  • “取消打开空调”

两个事件。

确认后,Node-RED 会读取刚才保存的方案,自动设置空调模式和温度,并播报执行结果。

为了避免误操作,待确认方案设置了有效期,超时后不会继续执行。


4. 设备和耗材提醒

回家后会检查部分设备或耗材状态,例如:

  • 净水器初滤剩余比例

  • 净水器 RO 膜剩余比例

  • 软水机剩余盐量

  • 其他需要定期维护的设备

只有达到设定阈值时才会生成提醒,正常状态不会播报。

提醒内容会先汇总,再等待欢迎语播放结束后统一播报,避免多个音频互相打断。


5. 宠物睡前巡检模式

睡前巡检同样通过米家中枢网关产生“睡前巡检”事件,再由 Node-RED 进入独立的宠物设备巡检流程。
这部分主要检查喂食器、智能猫厕所和饮水机,具体包括:

  • 喂食器是否在线

  • 喂食器粮仓是否偏低

  • 猫厕所垃圾箱是否已满

  • 猫砂是否缺少

  • 猫厕所垃圾箱是否安装到位

  • 当前猫砂剩余比例

  • 是否触发猫厕所频繁使用检测

  • 当天猫厕所使用次数

  • 饮水机是否缺水

  • 当天饮水次数

检查完成后,流程会把结果分成四个级别:

  • 需要马上处理:例如喂食器离线、垃圾箱已满、猫砂严重不足、垃圾箱未安装到位或饮水机缺水

  • 需要留意:例如粮仓偏低、猫砂余量偏低、猫厕所频繁使用、当天未使用猫厕所或使用次数过多

  • 状态未知:设备离线、实体不可用或跨日数据无法准确确认

  • 状态正常:没有发现需要额外处理的问题

其中猫砂余量低于或等于 20% 时会作为重要问题提醒,21%~40% 时作为一般提醒;猫厕所当天使用次数为 0 次或达到 8 次以上时,也会提示关注。饮水次数为 0 时会提醒确认,次数较少时则只作为一项记录播报。
跨日计数处理因为猫厕所和饮水机的“今日次数”会在每天零点清零,而我有时会在零点以后睡觉,所以流程专门增加了跨日修正。
每天 23:59 会保存一次猫厕所使用次数和饮水次数快照。如果睡前巡检发生在 0:00~5:00,则使用:
23:59 保存的次数+零点后的新增次数
作为本次睡前周期的实际数据。
如果凌晨执行巡检时没有有效快照,并且当前次数刚好是 0,流程不会直接判断“今天没有喝水”或“没有使用猫厕所”,而是把结果标记为无法准确确认,避免零点清零造成误报。
AI 生成自然播报所有检查结果会先汇总为结构化数据,再交给大模型生成一段适合智能音箱朗读的睡前提醒。
播报会根据巡检级别调整内容:

  • 有严重问题时,优先告诉我睡前需要处理什么

  • 有一般问题时,用比较温和的方式提醒留意

  • 有设备状态未知时,说明哪些项目没有成功确认

  • 全部正常时,简单说明喂食器、猫厕所和饮水机状态正常

最终内容通过卧室的小爱音箱播报。
为了避免大模型接口故障导致完全没有提醒,流程还准备了本地兜底文本。即使 API 请求失败、返回内容异常或者生成文字不符合要求,也会根据实际巡检结果生成基础播报,不影响睡前检查的核心功能。


6. 网关事件统一入口

我把多个米家自动化事件统一交给中枢网关产生,再由 Node-RED 根据事件名称进行分流。

目前包括:

  • 联动回家

  • 联动离家

  • 临时离开

  • 我要洗澡

  • 净化器最大档

  • 净化器静音

  • 确认打开空调

  • 取消打开空调

  • 睡前巡检

这样做的好处是,米家负责设备侧触发,Home Assistant 和 Node-RED 负责复杂判断和执行,后期增加新场景也比较方便。


二、流程特点

这套流程主要解决了几个实际使用中的问题:

避免简单粗暴地判断回家和离家

没有直接使用开锁事件作为最终结果,而是结合家庭状态、设备在线状态和延迟时间进行判断,减少误触发。

播报之间不会互相打断

欢迎语、耗材提醒、空调提醒都增加了顺序控制,并根据文本长度动态计算延迟。

尽量减少无意义播报

设备正常时不播报,只有存在需要处理的事项时才提醒。

支持二次确认

开空调等操作不会在温度达到条件后直接执行,而是先询问,确认后才执行。

流程可以继续扩展

后续可以继续加入:

  • 门窗未关闭提醒

  • 燃气和用水巡检

  • 洗衣机完成提醒

  • 宠物设备状态

  • 空气质量联动

  • 睡前统一巡检

  • 到家后根据人员执行不同场景

三、导入前说明

分享文件已经进行了隐私脱敏,里面的姓名、城市、设备账号编号和实体 ID 均已替换为示例内容。

因此导入后不能直接运行,需要根据自己家中的实际情况修改:

  • Home Assistant 服务器配置

  • 米家设备实体 ID

  • 中枢网关事件实体

  • 手机或设备在线状态实体

  • 空调、灯光、热水器等设备实体

  • 小爱音箱通知实体

  • 天气实体

  • 耗材传感器实体

  • 各类 input_boolean 和状态存储实体

另外,流程中使用了一些 Home Assistant 的 Node-RED 节点,需要提前安装:

  • node-red-contrib-home-assistant-websocket

如果需要使用大模型生成欢迎语,还需要自行配置对应的 API 地址和 Key。分享文件中没有包含任何真实 API Key。


四、使用建议

建议不要一次性把整套流程全部启用。

可以按照以下顺序逐步测试:

  1. 先配置 Home Assistant 服务器

  2. 测试网关事件能否正常进入 Node-RED

  3. 修改并测试回家模式

  4. 修改并测试离家模式

  5. 测试语音播报

  6. 最后再启用空调和设备控制

涉及空调、热水器、门锁等设备时,建议先把服务调用节点改成调试节点,确认判断逻辑没有问题后再正式执行。


五、关于这套流程

这套流程并不是一个开箱即用的通用方案,因为每个人家里的设备、实体 ID 和使用习惯都不同。

我分享它的主要目的,是提供一个相对完整的思路:

让米家负责触发,让 Home Assistant 负责状态,让 Node-RED 负责判断和流程控制。

大家可以直接拆其中的某一部分使用,也可以根据自己的设备重新组合。

如果有更好的判断方法、流程结构或者优化建议,也欢迎一起交流。

附件下载论坛原帖可见

▼▼▼

更多详情内容见原帖…

欲了解更多Home Assistant最新玩法和教程,请访问瀚思彼岸论坛(bbs.hassbian.com),同时欢迎关注本公众号。

▼ 请点击“阅读原文”到论坛与作者互动。



为您推荐