一、准备工作
1. 一个可持续运行 Docker 的设备:我们用的群晖 NAS,也可以用路由器、树莓派等
2. 注册 ChatGPT 并获取 API-Key
二、Home Assistant 部署
1. 在 Docker 中部署 HA
2. 在 HA 设备与服务中添加集成 Xiaomi Miot Auto
3. 在该集成中配置小米账号添加小爱音箱设备
备注:此部分网络教程很丰富,可自行搜索学习
三、Node-RED 安装
以在群晖 Docker 中安装为例
1. 在 Docker 注册表中搜索 node-red
2. 下载最新映像并安装
3. 安装网络选择 Host 即可
4. 安装完成后打开 群晖 IP:1880 进入 Web 端使用
四、Node-RED 流程与节点配置
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 让他帮你控制其他家庭设备,目前我使用场景只有提问,因为小米音箱很多问题回答不出来。
原文链接:https://www.bilibili.com/read/cv23829566/