@apocaliss92/noderademacher

中文文档
0.1.0发布于 2026/07/04MITTypeScriptESM + CJS近 30 天下载 2027

Rademacher HomePilot / Start2 的节点.js/ TypeScript客户端 当地网络上的智能中枢(REST + SSDP发现)

中文使用文档
文档目录11 节
  1. 安装
  2. 快开始
  3. 发现
  4. 设备——包括网关,所有信息
  5. 支持的设备
  6. 如何运作
  7. 有两个女孩值得了解(为你处理)
  8. 诊断倾倒器
  9. 错误类型
  10. 信用范围
  11. 许可证

节点演员

节点.js / TypeScript 客户端 Rademacher HomePilot / Start2Smart 磁盘 中枢 本地网络 (无云.

精神继承人 皮拉德马赫 ——同为本地REST API,TypeScript-native. 如果您可以控制HomePilot应用程序中的设备,您可以用这个库控制它. 盖/盲、开关/插口、可变减震器、Zigbee灯、自动调温器/辐射阀、传感器和墙壁控制器.

只有节点,只有本地的. 联系局域网的枢纽 不使用或需要 Rademacher 云账户 .


安装

npm i @apocaliss92/noderademacher

要求节点20或更后.


快开始

import { Rademacher, CoverDevice } from '@apocaliss92/noderademacher';

// Point at your hub (host or IP). Add `password` if the hub is protected.
const hub = new Rademacher({ host: '192.168.1.50' });

// 1. Connect (auto-resolves the api-version base path, logs in if protected)
await hub.connect();

// 2. List devices registered to the hub
const devices = await hub.listDevices();

// 3. Create a typed handle (fetches its initial state)
const cover = (await hub.createDevice(devices[0])) as CoverDevice;

// 4. React to polled state changes
cover.on('stateChanged', ({ changed }) => console.log('changed:', changed));

// 5. Control it
await cover.open();
await cover.setPosition(60); // 0 = closed, 100 = open

// 6. Re-poll whenever you like (HomePilot has no realtime push)
await cover.refresh();

发现

HomePilot 拥有 没有广播/MDNS发现 (Rademacher自己的整合通过DHCP MAC-OUI找到). 这么说吧 noderademacher 发现中枢 HTTP 测试 局域网——它通过中心站的身份端点确认每个主机:

import { Rademacher } from '@apocaliss92/noderademacher';

// Sweep every local /24 (bounded concurrency), or pass { subnet: '192.168.1' } / { hosts: [...] }
const hubs = await Rademacher.discover();
// → [{ host, model: 'HomePilot' | 'Start2Smart', name, firmware?, uid?, basePath, passwordProtected }]

for (const found of hubs) {
  const hub = new Rademacher({ host: found.host, basePath: found.basePath });
  await hub.connect();
}

Rademacher.discover({ subnet, hosts, concurrency, timeoutMs }) - 缩小搜索速度 拉德马赫MAC OUIS(B0:1F:81, (中文(简体) ), 38:FD:FE导出为 RADEMACHER_MAC_PREFIXES 如果您想要预过滤 ARP 扫描.


设备——包括网关,所有信息

listDevices() 编号 : getDevices() 返回 枢纽/出入口本身作为一个单独的设备 联合国 HubDevice, (中文(简体) ), did = -1类别 hub首先,然后是每个物理设备。 过 { includeHub: false } 来省略它.

const devices = await hub.getDevices(); // typed handles, gateway first, each already polled
for (const dev of devices) {
  console.log(dev.name, dev.category, dev.describe());
}

describe() 返回时 一切可获 关于设备:身份、电池、每台 能力(价值+分/分/最大/步)和最新 statuses 编号 : readings编辑 HubDevice 曝光固件,硬件/软件平台,DuoFern-stick版本,节点名称,MAC,LED状态 和坚固的状态.

支持的设备

类DEVICE_TYPE_LOC要点
CoverDevice2,8个open 编号 : close 编号 : stop, (中文(简体) ), setPosition, (中文(简体) ), setTilt通风
SwitchDevice1个turnOn 编号 : turnOff 编号 : setOn, (中文(简体) ), isOn
ActuatorDevice页:1可淡化 : setBrightness, (中文(简体) ), brightness, (中文(简体) ), isOn
LightDevice70-76 (中文(简体) )演员 + setRgb, (中文(简体) ), setColorTemperature
ThermostatDevice页:1setTargetTemperature, (中文(简体) ), currentTemperature升级
SensorDevice3个温度、风能、亮度、雨量、接触、运动、烟雾
WallControllerDevice10个频道按键时间戳
UnknownDevice—— 说原始状态 + 通过命令

特征检测由 能力名称存在 (单位:千美元)device.hasCapability(...)),与参考库完全一样——从不按产品代码.


如何运作

  1. 连接 - 探测器 http://<host>/… 解决 api-version 基础路径('' v1 数据/ /hp v2)并检测密码保护;在设定密码时通过两相加盐的SHA-256挑战(cookie会话)登录.
  2. 设备 —— 说 listDevices() 读取 /devices (全部能力清单-特征检测+类别).
  3. 状态 —— 说 createDevice() 编号 : refresh() 读取 /v4/devices/{did} (单位:千美元)statusesMap + 键 readings) (中文(简体) ).
  4. 图标 每个控制是 PUT /devices/{did} 与 { name, value? }。 。 。 .

HomePilot的本地API已经 没有实时推,因此州通过投票刷新(device.refresh()) (中文(简体) ).

有两个女孩值得了解(为你处理)

  • 封面位置倒转 接线(HomePilot 0=开通). 这个图书馆揭露了HA风格 position (100 = 开口)并倒置于读取和写取两种.
  • 温度 状态为 deci-°C(/10),但写作命令中的平地 °C——模型双向转换.

诊断倾倒器

import { createDumper } from '@apocaliss92/noderademacher';
const snap = createDumper(cover).dump();
// { did, category: 'cover', model, name: 'Ki*****', capabilities: [...], state: { statuses, readings } }

redact: true (默认) 遮盖友好名称, 这样垃圾可以安全共享 .


错误类型

类掷出时
RademacherError基础类
RademacherAuthError登录/ 重新启用失败
RademacherApiError非-2xx HTTP 或非零中枢 error_code (单位:千美元).status(中文(简体) )
RademacherTransportError网络错误到达中枢

信用范围

逆向工程从 pyrademacher (图书馆背后的 家庭助理Rademacher融入社会) (中文(简体) ). 见 docs/rademacher-homepilot-api-spec.md 对于完整的协议,请注意此端口的构建来源。 与拉德马赫没有关联或认可.

许可证

麻省理工学院——见 自由主义。 。 。 .

版本与发布记录

@apocaliss92/noderademacher 共发布 1 个版本,首次发布于 2026/07/04;过去 12 个月发布了 1 个版本。

版本发布日期距今
0.1.0latest2026/07/044 个月前

关于 @apocaliss92/noderademacher 的常见问题

@apocaliss92/noderademacher 是什么?

Rademacher HomePilot / Start2 的节点.js/ TypeScript客户端 当地网络上的智能中枢(REST + SSDP发现)

如何安装 @apocaliss92/noderademacher?

在项目目录运行 npm install @apocaliss92/noderademacher,或使用 pnpm add / yarn add / bun add。

@apocaliss92/noderademacher 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@apocaliss92/noderademacher 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@apocaliss92/noderademacher 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@apocaliss92/noderademacher 可以商用吗?

@apocaliss92/noderademacher 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@apocaliss92/noderademacher 的下载量有多少?

根据 npm 官方下载统计,@apocaliss92/noderademacher 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,027 次,日均约 68 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@apocaliss92/noderademacher 还在维护吗?

最新版本 0.1.0 发布于 2026/07/04(4 个月前);至今共发布 1 个版本,其中过去 12 个月发布了 1 个;首次发布于 2026/07/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。