1.一个可持续运行Docker的设备:我们用的群晖NAS,也可以用路由器、树莓派等
2. 注册ChatGPT并获取API-Key
1.在Docker 中部署 HA
2.在HA设备与服务中添加集成Xiaomi Miot Auto
3.在该集成中配置小米账号添加小爱音箱设备
备注:此部分网络教程很丰富,可自行搜索学习
以在群晖Docker中安装为例
1. 在Docker注册表中搜索 node-red
2. 下载最新映像并安装
3.安装网络选择Host即可
4.安装完成后打开 群晖IP:1880 进入Web端使用
1.安装控制HA和chatGPT的插件
home-assistant:node-red-contrib-home-assistant-websocket
chatgpt:node-red-contrib-custom-chatgpt
2.设备接入配置
有些地方有些坑,需要注意一下
① 拖入HA的events节点,需要提前先配置好HomeAssistant的服务,使其可以控制小米音箱;
② 步骤2中的Access-Token 需要在HomeAssistant配置中生成一个永久的Token,需要自己手动生成一下
③选择要控制的设备,这里选择conversation
3.添加switch节点,添加chatgpt的唤醒词
这一节点可要可不要,看自己设置
4.读取小爱同学的文本
如果加了switch节点,就需要再加一个节点来获取一下内容;entityId选择开始的设备,会自动显示ID
5.配置chatgpt节点
6.添加输出节点
使用小爱的tts读出chatgpt的回复
配置完后,点击右上角的部署,就可以喊小爱同学提问测试了
可优化的地方:
1. 可以保留记录对话内容,让chatgpt记住,新增function节点来处理这些(个人觉得没太大必要)
2.小爱的回答一般不会马上停止,只会被中断,目前没看到有很好的解决方法
3.可以在chatgpt节点之前添加function节点,来改变chatgpt的Prompt;也可以在chatgpt回答之后添加function来处理回答;
4.使用不同的TTS,目前还没研究Node-Red如何控制小米音箱来配置不同的TTS,之前直接在本地用python的库倒是可以,或许Node-Red也可以运行python脚本来更换不同的tts
Node-Red可扩展性很强,也可以训练chatgpt让他帮你控制其他家庭设备,目前我使用场景只有提问,因为小米音箱很多问题回答不出来。