近年来,人工智能的飞速发展为智能家居带来了前所未有的可能性。Home Assistant 官方也在不断集成 GPT 和语音等强大功能,各种创新玩法层出不穷。今天,我就将分享我的一个小小尝试,利用 Home Assistant 和 AI,打造一个能在家门口温馨迎接我的智能家庭助理。
这里用到的集成组合还是比较多的,主要尝试组合不同的ha集成,实现某种效果。
我的智能家居装备:
核心网关: 小米网关
智能门锁: 鹿客智能门锁(老款蓝牙)
语音播报: HomePod
Home Assistant 集成组件:
AI能力: Google Generative AI
语音合成: Microsoft Edge TTS
设备接入: Xiaomi Home (用于获取门锁蓝牙开锁数据)
媒体播放: Apple TV (用于将 HomePod 集成到 HA)
增强体验组件:
环境感知: 温湿度传感器
生态监测: 智能鱼缸传感器
天气情报: 和风天气(获取7天、24小时等天气预报信息)
功能实现
我的目标是当家庭成员回家开锁时,HomePod 能用定制化的语音欢迎。实现这个功能主要分为以下三步:
识别回家的人: 通过智能门锁的开锁动作,记录最后开门的用户。
定制欢迎语: 创建脚本,利用 AI 生成个性化的欢迎回家消息。
自动化触发: 当检测到用户回家时,自动执行相应的欢迎脚本。
一、创建辅助元素:记录最后回家的人 (door_lastuser)
为了知道是谁回了家,我们需要创建一个辅助元素来存储最后开门的用户信息。
在 Home Assistant 侧边栏中,点击 “设备与服务”。
切换到 “辅助元素” 选项卡。
点击右下角的 “添加辅助元素” 按钮,选择 “Template” -> “传感器模板”。
在弹出的配置窗口中,进行如下设置:
标识符: door_lastuser
状态模板:
{% set operation_id = state_attr('event.loock_cn_xxx_v1_lock_opened_e_2_1', '操作ID')|string %}
{% set user_mapping = {
'21471': 'ma',
'21473': 'ma',
'21474': 'ba',
'21475': 'xiaoxuesheng’,
'21476': ''xiaoxuesheng’',
'21477': ''xiaoxuesheng’,
'21478': 'wo'
} %}
{% set user = user_mapping.get(operation_id, operation_id) %}
{{ user }}
注意:请将 ‘event.loock_cn_xxx_v1_lock_opened_e_2_1’ 替换为你实际的鹿客门锁开锁事件 ID。你可以在 Home Assistant 的 “事件监听器” 中找到该事件。user_mapping 是一个字典,用于将门锁上报的操作 ID 映射到家庭成员的标识(我这里使用了拼音,你也可以直接使用中文,在后续自动化中保持一致即可)。你需要根据你家门锁的用户设置进行相应的修改。
二、创建脚本:让AI说出暖心欢迎语
为了实现不同家庭成员回家时能有更贴合的欢迎语,我创建了两个脚本:一个是通用的“欢迎回家”脚本,另一个是专门给上学的孩子准备的“欢迎回家-学生”脚本。
核心要点: 在脚本的 Action 部分,务必使用“对话 (Conversation)”,而不是直接使用 AI 生成内容服务!“对话”可以将 Home Assistant 的设备状态信息传递给 AI,使其能够根据家里的实际情况生成更智能的回复,而直接使用 AI 生成内容则不具备这个能力。
1. 通用“欢迎回家”脚本提示词:
迎接主人回家的话,要自然流畅,内容不超过200个字,可以从以下方面随机选择,但不局限于此:
• 温馨的问候:表达对主人回家的欢迎和喜悦,表达方式要多样。
• 有趣的互动:可以和主人开个小玩笑,或者分享一些有趣的事情。
• 关怀的提醒:结合传感器数据,提醒主人一些生活上的细节,如天气变化、注意事项等。
• 数据结合(弱化):可以适当地提及一些传感器数据,但要避免过度强调,让主人感受到你的关心是发自内心的。
• 不要出现带括号的内容。
• 避免提及无法主动做到的事情:打开设备、播放音乐、做饭等。
2. “欢迎回家-学生”脚本提示词:
迎接主人{{ states(‘sensor.door_lastuser’) }}回家,一位初中生,回复要自然流畅,不超过5句,内容可以包括:
• 温馨的问候:表达对主人回家的欢迎和喜悦,表达要丰富。
• 有趣的互动:可以和主人开个小玩笑,或者分享一些有趣的事情。
• 关怀的提醒:提醒主人一些生活上的细节,结合环境数据分析,如天气变化、注意事项等。
• 鼓励学习(弱化):可以适当敦促主人努力学习,不要提及考试,但措辞要委婉。
• 不要出现带括号的内容。
• 避免提及无法主动做到的事情:如打开灯、打开空调、播放音乐、做饭等。
调用 TTS 并使用 HomePod 播放的 YAML 配置(两个脚本的 Action 部分相同):
action: tts.edge_tts_say
metadata: {}
data:
cache: false
entity_id: media_player.homepod
message: “{{ret.response.speech.plain.speech}}”
enabled: true
保存脚本后,务必多次点击运行脚本进行测试,根据 AI 的回复调整你的提示词,直到满意为止。
三、创建自动化:回家时自动触发欢迎语
最后一步是创建自动化,当 door_lastuser 这个辅助元素的状态发生变化时,根据回家的人执行相应的欢迎脚本。
这里多加了一个时间条件,避免在早上多次开门和晚上过晚后的提醒,到此设置完成。
四、使用效果:AI的暖心问候
这是我家最近几天 AI 生成的一些欢迎语,大家可以参考一下:
欢迎回来!一天辛苦啦,有没有什么有趣的事情可以分享?今天客厅的温度是 24 度,湿度是 60%,体感舒适,好好放松一下吧!
欢迎回家!今天有没有什么新鲜事想和我分享呀?对了,今天室外温度偏低,记得多穿点衣服,好好照顾自己哦。一天辛苦了,好好放松一下吧!
欢迎回来!今天外面风挺大的,记得多穿件衣服。听说你今天工作很顺利,真为你高兴。家里一直都想着你呢,快进来放松一下吧!
欢迎回家!今天外面风挺大的,感觉有点干燥,记得多喝水哦。路上有没有遇到什么有趣的事呀? 期待和你分享更多精彩的一天。
欢迎回家!今天外面风挺大的,你回来真是太好了。听说你今天工作很努力,好好休息一下吧。家里一切都好,别担心。见到你回来,我也感觉特别开心!
我的小主人,你终于回来啦!真是太开心了,感觉整个家都亮堂了起来。今天外面风挺大的,学习了一天肯定累了吧,快去休息一下,放松放松。对了,保持一颗好奇的心,继续探索知识的奥秘哦!
你回来啦!真是太好了,家里都因为你的归来蓬荜生辉呢!今天外面风挺大的,记得多穿件衣服,别着凉了。对了,最近有没有什么新鲜事跟我分享呀?学习也要加油哦,每天进步一点点,未来就会闪闪发光!
你回来啦!今天外面风挺大的,学习了一天肯定累坏了吧?要好好休息一下哦,劳逸结合才能事半功倍嘛!对了,今天发生了件有趣的事,晚点再告诉你。
你终于回来啦,有没有感觉家里特别温暖?今天室外风挺大的,记得多穿点衣服哦。对了,听说最近有个新的漫画特别火,要不要一起看看放松一下?学习也要劳逸结合嘛!
五、优势与不足
亮点:
- 结合环境信息: 通过集成天气和温湿度传感器,AI 生成的欢迎语更加贴合实际情况,例如提醒增减衣物、注意保湿等。
- 感知家庭状态: 偶尔 AI 还会提及鱼缸里小鱼的情况,虽然不多,但这种细节能感受到 AI 正在融入我的智能家居生态。
不足:
- 时间理解有限: 我尝试在提示词中加入时间概念,但 AI 对时间的理解似乎并不理想,生成的回复有时并不能完全符合当前时间段的语境。因此,目前的欢迎语主要还是以通用的晚上回家场景为主。
六、未来展望
希望这个教程能帮助到也想尝试使用 AI 增强 Home Assistant 体验的朋友们!欢迎大家在评论区分享你们的提示词和使用心得,一起让我们的智能家居变得更加温暖和智能!
© 2025, 爱上生活. 版权所有,非商业使用转载必须提供本文章的原始链接。