node-red-contrib-symi-starloop 1.0.2
Node-RED nodes for SYMI-STARLOOP device control with MQTT/HomeKit/Matter integration support
node-red-contrib-symi-starloop
SYMI-STARLOOP 设备的 Node-RED 专业控制节点,支持四种使用方案,满足不同客户需求。
核心特性
- 100%协议覆盖 - 实现所有官方协议功能,一个都不少
- 四种使用方案 - 直接控制 / MQTT→HA / HomeKit / Matter,满足不同需求
- 自动重连机制 - 网络断开自动恢复,节点稳定运行不死机
- 自动设备发现 - mDNS/Bonjour协议,一键搜索局域网设备
- 完整示例集 - 5个场景示例,开箱即用
- 错误处理 - 命令失败自动重试,双输出(成功/错误)
- Siri语音控制 - 支持HomeKit和Home Assistant桥接
四种使用方案对比
| 特性 | 方案一: 直接控制 | 方案二: MQTT→HA | 方案三: HomeKit | 方案四: Matter |
|---|---|---|---|---|
| 需要额外软件 | 无 | HA + MQTT | HAP-NodeJS | Matter库 |
| 配置复杂度 | 简单 | 中等 | 中等 | 中等 |
| 语音控制 | 否 | 是 | Siri | 多平台 |
| HA自动化 | 否 | 是 | 否 | 是 |
| 跨平台 | 否 | 是 | 仅Apple | 全平台 |
| 所有功能 | 17种 | 30+实体 | 全部 | 全部 |
| 适用场景 | 简单自动化 | 智能家居集成 | Apple生态 | 跨平台智能家居 |
| 网络断线恢复 | 是 | 是 | 是 | 是 |
支持的所有功能
基本控制
- 电源开关 - 开机/关机/切换
- 音量调节 - 0-70,可选显示音量条
- 静音 - 静音/取消静音/切换
- 输入源切换 - 本地/HDMI1/HDMI2/AUX/光纤/ARC/蓝牙
遥控器按键 (14种)
- 方向键: 上/下/左/右/确认
- 系统键: 电源/主页/菜单/返回
- 播放控制: 播放/暂停
- 音量键: 音量+/音量-/静音
播放控制
- 循环模式 - 单次/列表循环/单曲循环/随机
- 播放进度 - 千分比(0-1000)或精确毫秒值
- 演示文件 - 播放指定目录文件
设备控制
- 休眠/唤醒 - 设备休眠或唤醒
- 麦克风 - 开启/关闭/切换
- 功能按键 - 文件夹/应用/音效
高级功能
- 截图 - 截取当前画面
- 录制 - 开始/停止语音录制
- 订阅语音识别 - 接收智能家居语音识别结果
- 订阅设备状态 - 实时监控设备状态变化
快速开始
重要说明
本节点通过局域网UDP协议直接与星环设备通信,无需网关或云服务。只要设备和Node-RED在同一局域网,即可使用全部功能。
核心优势:
- 本地控制,无需互联网
- 响应速度快,延迟低
- 隐私安全,数据不上云
- 稳定可靠,不受云服务影响
安装
方法1: 通过 Node-RED 面板管理器 (推荐)
- 打开 Node-RED
- 菜单 → 管理面板 → 安装
- 搜索
node-red-contrib-symi-starloop - 点击安装
方法2: 通过 npm
cd ~/.node-red
npm install node-red-contrib-symi-starloop
配置设备连接
步骤1: 添加设备配置节点
- 右上角菜单 → 配置节点
- 点击"添加" → 选择
starloop-device - 配置设备:
- 方式A: 自动发现 (推荐)
- 勾选"启用自动发现"
- 点击"搜索局域网设备"
- 从列表中选择设备
- 方式B: 手动配置
- 输入设备IP地址 (例如: 192.168.1.100)
- UDP端口默认 44654
- 设备序列号通常留空
- 方式A: 自动发现 (推荐)
- 点击"添加"保存
步骤2: 使用功能节点
- 从节点面板拖入
starloop节点 - 双击节点配置:
- 选择刚才配置的设备
- 选择功能类型 (电源/音量/输入源等)
- 配置参数
- 部署流程
安装验证
安装完成后,验证节点是否正常工作:
检查节点面板
- 在Node-RED左侧面板中,应该能看到"SYMI STARLOOP"分类
- 包含4个节点: starloop-device, starloop, starloop-homekit, starloop-matter
测试基本功能
- 拖入一个inject节点和starloop节点
- 配置设备IP地址
- 部署并点击inject按钮
- 检查调试输出是否有响应
测试HomeKit功能 (可选)
- 安装依赖:
cd ~/.node-red && npm install hap-nodejs - 拖入starloop-homekit节点并配置
- 部署后查看日志,应该显示"HomeKit桥接已启动"
- 在iPhone"家庭"App中添加配件,输入配对码: 031-45-154
- 安装依赖:
测试Matter功能 (可选)
- 确保已安装matter库:
cd ~/.node-red && npm install @project-chip/matter-node.js - 拖入starloop-matter节点
- 配置设备连接
- 部署后查看日志,应该显示"Matter桥接已启动"
- 在Matter控制器中添加设备,输入配对码: 20202021
- 确保已安装matter库:
部署检查清单
在部署流程前,请确认以下事项:
基本配置
- 设备IP地址正确
- 设备和Node-RED在同一局域网
- 所有starloop节点都已关联到设备配置节点
- 没有红色三角形警告(未配置的节点)
HomeKit配置 (如果使用)
- 已安装hap-nodejs库 (>=0.11.1):
npm install hap-nodejs@^0.11.1 - username格式正确 (MAC地址格式,如: CC:22:3D:E3:CE:30)
- pinCode格式正确 (XXX-XX-XXX,如: 031-45-154)
- 端口未被占用 (默认: 51826 和 51827)
- setupID已设置 (默认: STAR 和 STAR2)
- 如遇输入源名称异常或配对失败,清理持久化目录后重试:
rm -rf ~/.node-red/homekit-persist
Matter配置 (如果使用)
- 已安装matter库
- passcode格式正确(8位数字,如: 20202021)
- discriminator已设置(默认: 3840)
- 端口未被占用(默认: 5540)
- vendorId和productId已设置
网络配置
- 防火墙允许UDP 44654端口(命令)
- 防火墙允许UDP 44655端口(语音)
- 防火墙允许UDP 5353端口(mDNS)
- 防火墙允许TCP 51826端口(HomeKit)
- 防火墙允许TCP 5540端口(Matter)
导入示例
最快的上手方式是导入示例流程:
- 菜单 → 导入 → 示例
- 选择
node-red-contrib-symi-starloop - 选择示例:
complete-examples- 完整示例集(推荐)automation-flow- 自动化场景homekit-integration- HomeKit集成
- 修改设备配置为你的设备
- 部署测试
使用方案详解
方案一: 直接控制 (最简单)
无需任何额外软件,直接在Node-RED中控制设备。
示例1: 基本控制流程
[inject:触发] → [starloop:开机] → [delay:2秒] → [starloop:音量50] → [starloop:HDMI1]
示例2: 通过消息动态控制
// Function节点
msg.payload = {
command: "volume",
params: { volume: 50, showBar: true }
};
return msg;
连接到 starloop 节点(action设置为"通过消息控制")。
所有可用命令
// 电源控制
{ command: "power", params: { on: true } }
// 音量控制
{ command: "volume", params: { volume: 50, showBar: true } }
// 静音
{ command: "mute", params: { mute: true } }
// 输入源切换
{ command: "source", params: { source: "hdmi1" } }
// 可选: local, hdmi1, hdmi2, aux, optical, arc, bluetooth
// 遥控器按键
{ command: "key", params: { key: "UP" } }
// 可选: UP, DOWN, LEFT, RIGHT, OK, POWER, HOME, MENU, BACK, MUTE, VOLUME_UP, VOLUME_DOWN, PLAY_PAUSE
// 循环模式
{ command: "loop", params: { mode: "list" } }
// 可选: single, list, single_loop, random
// 播放进度
{ command: "play_progress", params: { value: 500, useMilliseconds: false } }
// value: 0-1000(千分比) 或 毫秒值
// 休眠/唤醒
{ command: "sleep", params: { sleep: true } }
// 麦克风
{ command: "microphone", params: { state: "toggle" } }
// 可选: on, off, toggle
// 功能按键
{ command: "function_key", params: { key: "folder" } }
// 可选: folder, app, sound
// 截图
{ command: "screenshot", params: {} }
// 录制
{ command: "recording_start", params: {} }
{ command: "recording_stop", params: {} }
// 演示文件
{ command: "demo_file", params: { directory: 1 } }
// 订阅语音识别
{ command: "voice_subscribe", params: { clientId: "nodered_001", enable: true } }
// 订阅设备状态
{ command: "state_subscribe", params: { clientId: "nodered_001", enable: true } }
方案二: MQTT → Home Assistant
通过MQTT自动发现协议,将设备集成到Home Assistant。
前置要求
- 已安装并配置 Home Assistant
- 已安装并配置 MQTT Broker (如 Mosquitto)
- HA中已配置MQTT集成
配置步骤
添加MQTT服务器配置
- 在Node-RED中添加
mqtt-broker配置节点 - 配置MQTT服务器地址、端口、用户名、密码
- 在Node-RED中添加
启用MQTT集成
- 在
starloop节点中勾选"启用MQTT" - 选择MQTT服务器
- 配置发现前缀 (默认: homeassistant)
- 配置基础主题 (默认: starloop)
- 在
部署流程
- 部署后,节点会自动发送MQTT发现消息
- 在HA中查看: 设置 → 设备与服务 → MQTT → 设备
- 会看到一个名为"星环设备"的设备,包含30+个实体
HA中的实体列表
媒体播放器 (1个)
media_player.starloop_device- 主控制器
开关 (14个)
- 电源开关
- 13个遥控器按键开关
数字输入 (1个)
- 音量控制 (0-70)
选择器 (3个)
- 输入源选择
- 循环模式选择
- 播放进度选择
按钮 (11个)
- 截图、录制、演示文件等功能按钮
桥接到HomeKit
在HA中配置HomeKit集成:
- 设置 → 设备与服务 → 添加集成 → HomeKit
- 选择要桥接的实体
- 在iPhone的"家庭"App中添加配件
方案三: 直接HomeKit
无需Home Assistant,直接创建HomeKit配件。
前置要求
需要安装 HAP-NodeJS 库:
cd ~/.node-red
npm install hap-nodejs
配置步骤
添加HomeKit桥接节点
- 从节点面板拖入
starloop-homekit节点 - 配置设备连接
- 设置桥接名称和配对码
- 选择要启用的服务 (电视/扬声器/开关)
- 从节点面板拖入
部署流程
- 部署后,节点会自动创建HomeKit桥接
- 查看日志获取配对信息
在iPhone上添加配件
- 打开"家庭"App
- 点击右上角"+" → "添加配件"
- 选择"更多选项"
- 找到"星环影音"和"星环配件"(需要分别添加2个桥接)
- 输入配对码: 031-45-154(两个桥接使用相同配对码)
- 完成配对
HomeKit配件结构
本节点创建2个独立的HomeKit桥接:
桥接1: 星环影音 (端口 51826)
- 星环影音 (Television - 电视图标 📺)
- 电源控制(开/关)
- 7个输入源(每个都有正确的名称显示):
- 本地 (OTHER)
- HDMI 1 (HDMI)
- HDMI 2 (HDMI)
- AUX (OTHER)
- 光纤 (OTHER)
- ARC (HDMI)
- 蓝牙 (OTHER)
- 集成遥控器 (方向键、确定、返回、主页、播放/暂停、菜单)
- 集成扬声器 (音量调节 0-100%、静音开关)
桥接2: 星环配件 (端口 51827)
- 4个配件(每个配件包含多个Switch服务,点开配件后每个按钮显示正确的功能名称):
1. 星环-基础控制(3个Switch)
- 开关麦克风(协议:101, 10, 0关闭/1开启)
- 休眠/唤醒(协议:101, 13, 0休眠/1唤醒)
- 静音(协议:101, 14, 0静音/1解除静音)
2. 星环-功能按钮(6个Switch点动)
- 音效键(协议:101, 6, 0)
- 文件夹(协议:101, 8, 0)
- 应用键(协议:101, 9, 0)
- 截图(协议:101, 5, 0)
- 切换蓝牙(协议:101, 11, 0)
- 录音(协议:101, 7, 0)
3. 星环-输入源(7个Switch)
- 切换本机(协议:101, 1, 0)
- 切换HDMI1(协议:101, 1, 1)
- 切换HDMI2(协议:101, 1, 2)
- 切换AUX(协议:101, 2, 0)
- 切换光纤(协议:101, 3, 0)
- 切换ARC(协议:101, 4, 0)
- 切换蓝牙源(协议:101, 11, 0)
4. 星环-遥控器(9个Switch点动)
- 上键(协议:100, 19, 0按下/1抬起)
- 下键(协议:100, 20, 0按下/1抬起)
- 左键(协议:100, 21, 0按下/1抬起)
- 右键(协议:100, 22, 0按下/1抬起)
- 确定键(协议:100, 66, 0按下/1抬起)
- 返回键(协议:100, 4, 0按下/1抬起)
- 主页键(协议:100, 3, 0按下/1抬起)
- 暂停播放(协议:100, 127, 0按下/1抬起)
- 菜单键(协议:100, 82, 0按下/1抬起)
重要说明:
- ✅ 遥控器和扬声器已正确集成在电视配件内,不是独立配件
- ✅ 音量控制已集成在遥控器界面的扬声器服务中(0-100%),无需独立配件
- ✅ 4个配件,每个服务名称正确显示:只需添加4次到房间,每个服务名称与协议一致
- ✅ 使用Outlet服务(圆形图标):比Switch更紧凑,不占用屏幕空间,直接点击无弹窗
- ✅ 名称与协议一致:所有服务名称与协议文档完全一致,降低学习成本
- ✅ 每个服务都可单独用于场景和自动化:
- 开关类服务有真实的开/关状态,可同步设备状态
- 点动按钮自动关闭500ms,实现点动效果
- 输入源服务互斥(打开一个会自动关闭其他)
场景示例:
- "打开切换HDMI1" = 切换到HDMI1
- "打开暂停播放" = 按播放键
- "打开开关麦克风" = 开启麦克风
自动化示例:
- "当切换HDMI1打开时,打开客厅灯" = 当切换到HDMI1时,打开客厅灯
- "当开关麦克风打开时,关闭其他设备" = 当开启麦克风时,关闭其他设备
- "当截图打开时,发送通知" = 当按截图键时,发送通知
- ✅ 两个桥接使用不同端口和MAC地址,互不冲突
- ✅ 输入源名称正确显示(本地、HDMI 1、HDMI 2、AUX、光纤、ARC、蓝牙)
- ✅ 兼容 iOS 18-26,遥控器界面在长按电视配件后显示
Siri语音命令
电视控制
"嘿Siri,打开星环电视"
"嘿Siri,关闭星环电视"
"嘿Siri,把星环切换到HDMI1"
"嘿Siri,把星环切换到HDMI2"
音量控制
"嘿Siri,把星环音量调到50"
"嘿Siri,静音星环"
"嘿Siri,取消星环静音"
"嘿Siri,把星环音量调大"
"嘿Siri,把星环音量调小"
功能控制
"嘿Siri,打开星环麦克风"
"嘿Siri,关闭星环麦克风"
"嘿Siri,打开星环睡眠模式"
"嘿Siri,关闭星环睡眠模式"
HomeKit使用说明
配对方式:
- 需要分别配对2个桥接(在"家庭"App中会看到2个配件)
- 桥接1(星环影音):配对码 031-45-154,端口 51826
- 桥接2(星环配件):配对码 031-45-154,端口 51827
- 重要:删除旧配对记录后需要重新配对:
rm -rf ~/.node-red/homekit-persist
遥控器使用 (iOS/iPadOS 18-26):
- 打开"家庭"App
- 找到"星环影音"配件(电视图标📺)
- 点击配件图标进入控制界面
- 在控制界面中可以看到:
- 电源开关
- 输入源选择
- 遥控器按钮(方向键、确定、返回、播放、菜单等)
- 音量控制
重要说明:
- 遥控器按钮在电视配件的控制界面中,不是在"配件设置"里
- iOS 控制中心也可以快速访问电视遥控器
- 如未显示遥控器:删除配件重新配对/更新iOS/重启家庭App
HomeKit 故障排除(输入源名称与桥接)
问题:输入源名称显示成“输入源1/2/3…”或英文“Input Source 1/2/3…”
- 现象:iOS 18 存在重命名 bug,可能将已设置的输入源改成默认名称
- 解决:代码已同时设置
ConfiguredName与Name,并在检测到默认名称时自动恢复 - 如仍异常:
- 删除“家庭”App中的两个配件(星环影音、星环配件)
- 清理持久化目录:
rm -rf ~/.node-red/homekit-persist - 重新部署并重新配对
问题:桥接无法启动或端口占用
- 查看日志是否有
Error: port in use - 改用不同端口或关闭正在运行的 Node-RED
- 默认端口:电视桥接
51826,配件桥接51827
**预期的输入源列表(名称完全一致)
- 本地, HDMI 1, HDMI 2, AUX, 光纤, ARC, 蓝牙
问题:Node-RED 里 HomeKit Bridge 显示“初始化失败”,但家庭 App 正常可用
- 常见原因:
- 端口冲突:另一个 HomeKit Bridge(如 node-red-contrib-homekit-bridged)使用了
51826,与本节点默认端口相同 - 存储路径冲突:HAP-NodeJS 的
HAPStorage只允许设置一次存储路径,两个模块同时设置会导致其中一个报错
- 端口冲突:另一个 HomeKit Bridge(如 node-red-contrib-homekit-bridged)使用了
- 解决方案:
- 仅保留一种桥接方式:若使用本节点自带桥接,禁用或移除
homekit-bridged的 Bridge 配置节点 - 如需同时使用:确保使用不同端口(建议本节点设置为
51828和51829;homekit-bridged使用51826) - 清理并重启:删除
~/.node-red/homekit-persist后重启 Node-RED,再重新配对 - 说明:本节点的存储路径设置已做防重入处理(忽略“已初始化”错误),但第三方插件未必处理,故建议由插件统一初始化存储路径
- 仅保留一种桥接方式:若使用本节点自带桥接,禁用或移除
扬声器控制:
- 打开"星环电视"配件
- 点击右下角设置图标(齿轮)
- 在设置页面可以看到:
- 音量滑块(0-100%)
- 静音开关
输入源切换:
- 长按"星环电视"配件
- 在弹出界面中选择输入源(每个都有正确的名称):
- 本地 - 本地播放器
- HDMI 1 - HDMI 输入1
- HDMI 2 - HDMI 输入2
- AUX - AUX 音频输入
- 光纤 - 光纤音频输入
- ARC - HDMI ARC 音频回传
- 蓝牙 - 蓝牙音频输入
功能按钮使用:
- 8个功能按钮在"星环配件"桥接中
- 显示为插座图标(Outlet),不会被"打开所有开关"触发
- 点击即可执行对应功能,自动关闭
关于功能按钮(Outlet点动按钮):
- 8个功能按钮使用 Outlet(插座)点动模式
- 点动效果:点击后自动关闭(500ms),模拟物理按钮
- 优点:
- ✅ 不会被 Siri "打开所有开关"触发
- ✅ 不会被 Siri "打开所有灯"触发
- ✅ 可以主动控制设备
- ✅ 点击即触发,无需手动关闭
- 缺点:
- ⚠️ 会被 Siri "打开所有插座"触发(但很少使用)
- 为什么不用 StatelessProgrammableSwitch:
- 只读,无法主动控制设备
- 只能作为触发器,不适合设备控制
兼容性说明:
- ✅ 兼容 iOS 18-26(2025年11月最新版本)
- ✅ 兼容 iPadOS 18-26
- ⚠️ Mac版"家庭"App 不支持遥控器功能(Apple 限制)
- ✅ 遥控器和扬声器集成在电视配件内,符合 Apple HomeKit 标准
方案四: Matter
跨平台智能家居标准,支持Apple、Google、Amazon等多个生态系统。
前置要求
需要安装 Matter 库:
cd ~/.node-red
npm install @project-chip/matter-node.js
或使用替代方案:
npm install @sammachin/node-red-matter-bridge
配置步骤
添加Matter桥接节点
- 从节点面板拖入
starloop-matter节点 - 配置设备连接
- 设置桥接名称和配对信息
- 选择要启用的服务 (电视/扬声器/开关)
- 从节点面板拖入
部署流程
- 部署后,节点会自动创建Matter桥接
- 查看日志获取配对信息
在Matter控制器中添加设备
- Apple Home: 打开"家庭"App → 添加配件 → 输入配对码
- Google Home: 打开Google Home App → 添加设备 → Matter设备
- Amazon Alexa: 打开Alexa App → 添加设备 → Matter设备
- Samsung SmartThings: 打开SmartThings App → 添加设备 → 扫描Matter设备
- Home Assistant: 设置 → 设备与服务 → 添加集成 → Matter
Matter配件结构
星环Matter桥接 (Bridge)
- 星环电视 (Television)
- 电源开关
- 输入源切换 (本地/HDMI1/HDMI2/AUX/光纤/ARC/蓝牙)
- 遥控器控制 (上/下/左/右/确认/返回/主页/播放/菜单等)
- 星环扬声器 (Speaker)
- 音量调节 (0-100%,自动映射到0-70)
- 静音开关
- 星环麦克风 (Switch)
- 麦克风开关
- 星环睡眠 (Switch)
- 睡眠模式开关
Matter服务
电视服务
- 电源开关
- 输入源切换 (7种输入源)
- 遥控器控制 (方向键、确认、菜单、返回等)
扬声器服务
- 音量调节 (0-100%,自动映射到0-70)
- 静音开关
开关服务
- 快速电源开关
配对信息
部署后查看日志:
========================================
Matter桥接已启动
========================================
配对码: 20202021
识别码: 3840
手动配对码: MT:Y.K20202021C00KA0F00FFF18000
========================================
支持的平台
- ✅ Apple Home (iOS 16.1+, macOS 13+)
- ✅ Google Home
- ✅ Amazon Alexa
- ✅ Samsung SmartThings
- ✅ Home Assistant
- ✅ 其他支持Matter的平台
语音命令示例
Apple Siri
"嘿Siri,打开星环"
"嘿Siri,把星环音量调到50"
Google Assistant
"Ok Google,打开星环"
"Ok Google,把星环音量调到50"
Amazon Alexa
"Alexa,打开星环"
"Alexa,把星环音量调到50"
Matter vs HomeKit
| 特性 | Matter | HomeKit |
|---|---|---|
| 支持平台 | Apple、Google、Amazon等 | 仅Apple |
| 开放性 | 开放标准 | 封闭生态 |
| 配置 | 8位数字配对码 | XXX-XX-XXX格式 |
| 兼容性 | 跨平台 | Apple设备 |
| 推荐场景 | 多平台用户 | 纯Apple用户 |
静音控制
msg.payload = {
command: "mute",
params: { mute: true }
};
订阅设备状态
msg.payload = {
command: "subscribe_state",
params: {
deviceId: "unique_device_id",
subscribe: true
}
};
语音控制
订阅语音命令:
msg.payload = {
command: "subscribe_voice"
};
发送语音响应:
msg.payload = {
command: "voice_response",
params: { text: "已打开灯光" }
};
列出已发现的设备
msg.payload = {
command: "list_devices"
};
Home Assistant 实体组织
启用 MQTT 集成后,会在 HA 中创建一个设备,包含以下实体(共 30+ 个标准 MQTT 实体):
设备信息
- 制造商: 星环(Starloop)
- 型号: 思谋大锅
- 所有实体归属于同一设备 - 在 HA 中集中显示在一个设备卡片中
实体列表
媒体播放器 (1个)
- 播放器 - 主控制界面,支持播放/暂停/停止/音量控制
开关 (2个)
- 电源 - 设备开/关
- 静音 - 音频静音/取消静音
数字 (1个)
- 音量 - 设置音量 (0-70)
选择器 (2个)
- 信号源 - 切换输入源(本地/HDMI1/HDMI2/AUX/光纤/ARC/蓝牙)
- 循环模式 - 设置播放循环模式(单曲/列表循环/单曲循环/随机)
按钮 (24个)
功能按钮 (9个):
- 截图、开始录制、停止录制
- 文件夹、应用、音效
- 麦克风切换、睡眠、唤醒
遥控器按键 (15个):
- 方向键: 上、下、左、右
- 功能键: 确认、主页、返回、菜单
- 电源键
- 音量键: 音量+、音量-、静音键
- 播放控制: 播放、暂停
HA 中的显示效果
在 Home Assistant 设备页面,你会看到:
- 一个设备: "星环设备" (或你设置的名称)
- 30+ 个实体: 全部归属于这个设备
- 便于管理: 所有控制集中在一个设备卡片中
HomeKit 和 Matter 支持
通过 Home Assistant 可以将设备桥接到 HomeKit 或 Matter:
桥接步骤
- 在 Home Assistant 中,进入 配置 -> 集成
- 配置 HomeKit Bridge 或 Matter 集成
- 选择要暴露的星环设备
- 设备将出现在 Apple 家庭 App 或 Matter 兼容应用中
HomeKit 中的效果
- 媒体播放器 显示为"电视"或"扬声器"
- Siri 语音控制: "嘿Siri,把客厅音量调到50"
- 所有开关和按钮 可在"家庭"App中控制
- 自动化场景: 如"回家时自动打开设备"
- 远程控制: 通过 iCloud 远程控制
直接集成到 HomeKit (方式三)
如果你不使用 Home Assistant,可以直接在 Node-RED 中创建 HomeKit 配件。
安装 HomeKit 插件
cd ~/.node-red
npm install node-red-contrib-homekit-bridged
重启 Node-RED 后,在左侧面板会出现 HomeKit 相关节点。
导入示例流程
- 在 Node-RED 菜单中选择 导入
- 选择 示例 标签
- 找到 node-red-contrib-symi-starloop -> homekit-integration
- 点击导入
或者手动导入 examples/homekit-integration.json 文件。
配置 HomeKit Bridge
- 双击任意 homekit-service 节点
- 点击 Add new homekit-bridge...
- 设置配置:
- Bridge Name: 星环设备
- PIN Code: 任意8位数字 (如
123-45-678) - Port: 默认 (自动分配)
- 点击 Add 和 Done
- 部署流程
在 iPhone 上添加配件
- 打开 家庭 App
- 点击右上角 +
- 选择 添加配件
- 选择 更多选项...
- 找到 星环影音 和 星环配件 两个桥接
- 手动输入配对码(默认:031-45-154)
- 完成配置
可用的 HomeKit 服务
示例流程包含以下 HomeKit 服务:
Television (电视)
- 开/关: 控制设备电源
- 输入源: 切换信号源 (本地/HDMI1/HDMI2/AUX/光纤/ARC/蓝牙)
- 遥控器: 方向键、确认、返回、菜单等
Speaker (扬声器)
- 音量: 0-100 (自动转换为设备的 0-70)
- 静音: 开启/关闭静音
- 音量调节: 音量+/音量-
Switch (开关)
- 电源开关: 快速开关设备
Siri 语音控制示例
"嘿 Siri, 打开星环设备"
"嘿 Siri, 关闭星环设备"
"嘿 Siri, 把星环设备音量调到 50"
"嘿 Siri, 静音星环设备"
"嘿 Siri, 取消静音星环设备"
自定义 HomeKit 服务
你可以根据需要添加更多 HomeKit 服务:
- 从左侧面板拖入 homekit-service 节点
- 选择服务类型 (Switch, Lightbulb, Fan 等)
- 添加 function 节点转换 HomeKit 命令为 Starloop 命令
- 连接到 starloop 节点
参考示例流程中的 function 节点代码。
协议说明
本节点使用UDP协议与星环设备通信,端口44654用于控制命令,端口44655用于语音数据。所有通信均在局域网内完成,无需互联网连接。
使用示例
简单遥控器控制
[
{
"id": "inject1",
"type": "inject",
"name": "音量增加",
"topic": "",
"payload": "{\"command\":\"key\",\"params\":{\"key\":\"VOLUME_UP\"}}",
"payloadType": "json",
"wires": [["starloop1"]]
},
{
"id": "starloop1",
"type": "starloop",
"name": "我的星环",
"autoDiscover": true,
"mqttEnabled": false
}
]
Home Assistant 集成
[
{
"id": "starloop1",
"type": "starloop",
"name": "客厅星环",
"autoDiscover": true,
"mqttEnabled": true,
"mqttBroker": "mqtt://192.168.1.100:1883",
"mqttUsername": "homeassistant",
"mqttPassword": "your_password"
}
]
故障排除
设备未被发现
- 确保设备和 Node-RED 在同一网络
- 检查防火墙设置允许 mDNS 流量
- 在配置中手动指定设备 IP
- 点击"立即搜索设备"按钮手动触发搜索
MQTT 连接失败
- 验证 MQTT 服务器正在运行
- 检查服务器地址和凭据
- 确保服务器允许来自 Node-RED 主机的连接
命令不工作
- 验证设备 IP 是否正确
- 检查网络连接
- 确保 UDP 端口 44654 未被阻止
关于设备SN码
通常情况下不需要填写设备SN码。根据协议文档:
- 设备SN码是协议中的一个可选字段(20字节)
- 可以留空(填充空白字节)
- 仅在特殊情况下需要指定(如多设备环境中精确控制某一台设备)
- 大多数用户只需填写设备IP地址即可
License
MIT
Author
symi-daguo
Repository
https://github.com/symi-daguo/node-red-contrib-symi-starloop
稳定性特性
自动重连机制
节点内置智能重连机制,确保网络断开后自动恢复:
- 健康检查 - 每30秒自动检查设备连接状态
- 智能重连 - 连接断开后自动尝试重连,永不放弃
- 指数退避 - 重连间隔逐渐增加(5秒、10秒、15秒...),避免网络拥塞
- 静默重连 - 设备长时间离线时静默等待,不反复提示错误
- 自动恢复 - 设备上线后自动连接,无需手动干预
- 状态指示 - 节点状态实时显示连接状态
- 绿点: 已连接
- 黄圈: 重连中(前3次)
- 灰圈: 等待设备上线(静默重连)
- 红圈: 连接断开
命令重试机制
命令执行失败时自动重试:
- 自动重试 - 失败命令自动重试,最多3次
- 双输出 - 节点有两个输出端口
- 第一个输出: 命令执行成功
- 第二个输出: 命令执行失败(含错误信息)
- 命令队列 - 设备未连接时命令自动加入队列,连接后执行
- 超时处理 - 每个命令5秒超时,避免无限等待
错误处理示例
[inject] → [starloop节点]
├─ 输出1(成功) → [debug:成功]
└─ 输出2(错误) → [debug:错误] → [email通知]
持久化支持
- 配置持久化 - 设备配置保存在Node-RED配置中
- 重启恢复 - Node-RED重启后自动恢复连接
- 状态同步 - 自动同步设备状态
故障排除
设备未被发现
问题: 点击"搜索局域网设备"没有找到设备
解决方案:
- 确保设备和Node-RED在同一局域网
- 检查防火墙是否允许mDNS流量(UDP 5353端口)
- 尝试手动输入设备IP地址
- 检查设备是否已开机并连接到网络
- 使用
avahi-browse -a(Linux) 或dns-sd -B _starloop._tcp(Mac) 命令验证mDNS服务
命令执行失败
问题: 发送命令后设备无响应
解决方案:
- 检查设备IP地址是否正确
- 确保UDP端口44654未被防火墙阻止
- 查看节点的错误输出(第二个输出端口)
- 检查网络连接是否稳定
- 尝试重启设备和Node-RED
网络断开后无法恢复
问题: 网络恢复后节点仍显示断开
解决方案:
- 节点会自动重连,无需手动干预
- 前3次重连会显示"重连中"状态
- 之后会显示"等待设备上线..."并静默重连
- 设备上线后会自动连接并显示"已连接"
- 如果设备IP发生变化,建议配置静态IP地址
- 如需立即重连,可重新部署流程
MQTT集成问题
问题: Home Assistant中看不到设备
解决方案:
- 确认MQTT Broker正常运行
- 检查MQTT服务器地址、用户名、密码是否正确
- 在HA中检查MQTT集成是否已启用
- 查看Node-RED日志,确认MQTT消息已发送
- 在HA中手动刷新MQTT设备列表
- 检查MQTT发现前缀是否与HA配置一致(默认: homeassistant)
HomeKit配对失败
问题: iPhone无法找到或配对HomeKit配件
解决方案:
- 确认已安装
hap-nodejs库:cd ~/.node-red && npm install hap-nodejs - 检查配对码格式是否正确(XXX-XX-XXX,默认: 031-45-154)
- 确保端口未被占用(默认51826)
- 查看Node-RED日志,确认显示"HomeKit桥接已启动"
- 确保iPhone和Node-RED在同一局域网
- 尝试更换端口号或username(MAC地址格式)
- 删除旧的配对记录: 删除
~/.node-red/persist/目录下的HomeKit文件 - 重启Node-RED后重新配对
HomeKit显示错误图标:
- 如果显示水龙头图标而不是电视图标,说明category设置错误
- 确保使用最新版本的代码(v1.0.2+)
- Bridge的category应该是BRIDGE,电视配件的category应该是TELEVISION
Matter配对失败
问题: Matter控制器无法找到或配对设备
解决方案:
- 确认已安装Matter库:
cd ~/.node-red && npm install @project-chip/matter-node.js - 检查配对码格式是否正确(8位数字,默认: 20202021)
- 确保端口未被占用(默认5540)
- 查看Node-RED日志,确认显示"Matter桥接已启动"
- 确保控制器和Node-RED在同一局域网
- 尝试更换端口号或discriminator
- 重启Node-RED后重新配对
- 注意: Matter功能目前为框架实现,可能需要进一步开发
- 确保iPhone和Node-RED在同一网络
设备SN码问题
问题: 是否需要填写设备SN码?
解答:
- 通常不需要 - 大多数情况下留空即可
- 何时需要 - 仅在以下情况需要填写:
- 同一网络有多台相同型号设备
- 需要精确控制特定设备
- 设备厂商明确要求
- 如何获取 - 查看设备背面标签或设备设置菜单
示例库
导入示例
菜单 → 导入 → 示例 → node-red-contrib-symi-starloop
可用示例
complete-examples - 完整示例集 (推荐)
- 三种使用方案的完整示例
- 5个实用场景
- 开箱即用
automation-flow - 自动化场景
- 开机流程
- 观影模式
- 音乐模式
- 定时控制
homekit-integration - HomeKit集成
- 电视服务
- 扬声器服务
- 开关服务
test-flow - 功能测试
- 测试所有17种功能
- 调试工具
相关链接
- npm包: https://www.npmjs.com/package/node-red-contrib-symi-starloop
- GitHub仓库: https://github.com/symi-daguo/node-red-contrib-symi-starloop
- 问题反馈: https://github.com/symi-daguo/node-red-contrib-symi-starloop/issues
- Node-RED官网: https://nodered.org
License
MIT
Author
symi-daguo
Changelog
1.0.2 (2025-11-08)
紧急修复
- 修复HomeKit节点setupID未定义导致的初始化失败错误
- 移除内部协议文档,不再发布到npm仓库
文档优化
- 以客户友好模式完善README文档
- 移除内部协议文档引用,改为简洁的协议说明
- 优化相关链接,添加npm包链接
1.0.1 (2025-11-08)
稳定性优化
- 完全静默重连:设备离线时不再显示任何warn或info日志
- 优化健康检查:失败时静默处理,不影响Node-RED日志清洁度
- 智能日志管理:只在设备重新连接时记录一次恢复日志
- 永不放弃:达到最大重连次数后继续静默重连,等待设备上线
HomeKit优化
- 移除二维码生成功能:改为手动输入配对码,更稳定可靠
- 简化配对流程:直接在iOS家庭App中输入8位配对码即可
- 优化启动日志:更清晰的配对说明
用户体验提升
- 设备长时间离线时不会刷屏日志
- 状态显示更友好:灰色圆圈表示"等待设备上线..."
- 设备上线后自动连接,无需任何手动操作
- 不影响Node-RED和节点的稳定性与性能