本教程用于群晖NAS的Container Manager(即docker容器管理器)。
部署
首先将docker文件夹权限设置为everyone可以读/写。
创建docker-compose.yml
,并运行:
version: '3.8'
services:
nodered:
image: nodered/node-red:latest
container_name: nodered-node-red-1
restart: always
environment:
- PATH=/usr/src/node-red/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- NODE_VERSION=16.20.2
- YARN_VERSION=1.22.19
- NODE_RED_VERSION=v3.1.8
- NODE_PATH=/usr/src/node-red/node_modules:/data/node_modules
- FLOWS=flows.json
- TZ=Asia/Shanghai
ports:
- "1880:1880"
volumes:
- ./node_red_data:/data
networks:
- nodered
homeassistant:
image: homeassistant/home-assistant:latest
container_name: homeassistant-home-assistant-1
restart: always
environment:
- PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- LANG=C.UTF-8
- S6_BEHAVIOUR_IF_STAGE2_FAILS=2
- S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
- S6_CMD_WAIT_FOR_SERVICES=1
- S6_SERVICES_READYTIME=50
- UV_EXTRA_INDEX_URL=https://wheels.home-assistant.io/musllinux-index/
- S6_SERVICES_GRACETIME=240000
- UV_SYSTEM_PYTHON=true
- TZ=Asia/Shanghai
ports:
- "8123:8123"
volumes:
- ./homeassistant_config:/config
networks:
- nodered
networks:
nodered:
家庭管家接入小米设备
创建家庭账号
打开http://IP:8123,进入web管理,【创建我的智能家居】,【创建账号】,【家庭位置】
安装HACS并激活Xiaomi Miot Auto
没有社区商店的HA跟咸鱼没有区别。
官方:
sudo su
cd /opt/docker/home-assistant
wget -O - https://get.hacs.xyz | bash -
如果github访问困难,可将最后一条命令换成安装国区加速版hacs:
wget -O - https://ghproxy.com/raw.githubusercontent.com/hasscc/get/main/get | HUB_DOMAIN=ghproxy.com/github.com DOMAIN=hacs REPO_PATH=hacs-china/integration ARCHIVE_TAG=china bash -
我这边选择的是国区加速版,按照下图执行命令,然后在操作中重启容器。
浏览器Ctrl+F5强制刷新,Settings - Integration
添加HACS,根据提示激活设备。
安装社区集成:先去HACS添加repo,然后再去Settings添加相应集成。
创建长期访问令牌
记得把令牌保存一下,下面会用到。
Node-RED连接小米音箱
创建流
打开 群晖IP:1880 进入Node-RED Web端
安装控制HA和chatGPT的插件
home-assistant:node-red-contrib-home-assistant-websocket
chatgpt:node-red-contrib-custom-chatgpt
安装完成后就能看到节点。
高版本有异常,这边建议用命令行在docker中输入:
npm install [email protected]
npm install [email protected]
设备接入配置
将events拖到流程图上,编辑Server:
点击搜索,可以看到找到之前部署的Home Assistant服务,并把上面复制出来的访问令牌输入后,点添加。
这个时候,下面列表中是空的,我们需要先点完成、点右上角的部署,再打开events,这个时候Entity就有列表了,选择音箱的conversation:
由于这个Server服务的IP可能会变更,我们这里可以改为容器名称,这样就不需要变更:
添加一个swith节点对输入进行分流,这里用正则表示如果开头有“请问”的走1,其他的走2:
在1上添加一个current节点,获取输入的文字。
这里的Entity ID需要按一下空格再按退格才会出现选项,选择converstation。
FastGPT生成API:
将chatgpt节点拖入,并按照图上的地址和选项填写:
添加call service节点,使用小爱的tts读出gpt的回复,注意这里的实体是Control:
测试
最终测试成功:
唯一不足就是无法让小爱同学不回复。
学习自:
ChatGPT接入小爱音箱 – 哔哩哔哩 (bilibili.com)
小米设备接入Home Assistant | 名实合为 (mjyai.com)
比较Home Assistant的四种安装方式 | 名实合为 (mjyai.com)