本帖最后由 tianlanld 于 2025-12-3 13:13 编辑
1. 无需中枢网关、node-red、各种云、各种虚拟开关
2. 需要米家APP、Xiaomi Miot、RoonLabs music player
RoonLabs music player 和 Xiaomi Miot 的配置方法不再赘述,网上都有。
具体思路是通过Xiaomi Miot添加小爱AI音箱(一代),可以在开发者工具-状态-筛选:Mi AI Speaker 里可以看到 sensor.xiaomi_s12_7aaa_conversation 实体,里面的 content 和 timestamp 属性是我们所要用到的。
在设置-自动化与场景中创建自动化,选择 YAML编辑,内容如下:
alias: 播放我的音乐
description: 通过 timestamp 属性变化捕捉每一次语音指令
triggers:
- trigger: state
entity_id: sensor.xiaomi_s12_7aaa_conversation
attribute: timestamp
conditions:
- condition: template
value_template: >
{{ (state_attr('sensor.xiaomi_s12_7aaa_conversation', 'content') or '') |
trim == '播放我的音乐' }}
actions:
- action: media_player.media_play
target:
entity_id:
- media_player.xiao_ai_yin_xiang
data: {}
mode: single
监听 timestamp 的目的是避免重复指令时,content 的值不变,导致触发失效。
需要注意的是,小爱音箱接入roon 是通过 docker项目 1activegeek/airconnect 将dlna转换为airplay实现的,应当先确保 RoonLabs music player 配置正常,且可通过roon客户端在小爱音箱上正常播放音乐。
为了避免小爱同学对我们的自定义指令进行乱回复,可以使用米家app-AI音箱-训练计划-个人训练 添加训练指令,如 添加一种说法:播放我的音乐,添加操作- 一句话 ,输入 好的。
那么当我们对小爱音箱说 播放我的音乐 时,小爱同学会回复 好的。同时home assistant自动化识别到 timestamp变化并匹配content的值,并执行设定的动作。
感谢开发者们提供了各种各样的开源组件,感谢包括但不限于:小米、Xiaomi Miot项目组、RoonLabs music player项目组、docker项目 1activegeek/airconnect 。
|