# @apocaliss92/noderademacher 中文文档

规范地址：https://npmcn.com/package/%40apocaliss92/noderademacher/

版本：0\.1\.0
npm 元数据更新时间：2026-07-03T17:18:22.871Z
中文译文更新时间：2026-11-07T06:40:44.523Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40apocaliss92/noderademacher
原文对照：https://npmcn.com/package/%40apocaliss92/noderademacher/?lang=original
项目主页：https://github.com/apocaliss92/noderademacher#readme
源码仓库：https://github.com/apocaliss92/noderademacher

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：287 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：1 个
- 首次发布：2026-07-03T17:18:22.316Z
- 最新版本发布：2026-07-03T17:18:22.648Z
- 近 30 天下载量：2027（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 1 个）

## 中文简介

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

## 安装

```sh
npm install @apocaliss92/noderademacher
```

也可以使用：`pnpm add @apocaliss92/noderademacher`、`yarn add @apocaliss92/noderademacher`、`bun add @apocaliss92/noderademacher`

## README

# 节点演员

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

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

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

* * *

## 安装

```bash
npm i @apocaliss92/noderademacher
```

**要求节点20或更后.**

* * *

## 快开始

```ts
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 测试** 局域网——它通过中心站的身份端点确认每个主机:

```ts
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 }` 来省略它.

```ts
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` | 要点 |
| --- | --- | --- |
| `CoverDevice` | 2,8个 | `open` 编号 : `close` 编号 : `stop`, (中文(简体) ), `setPosition`, (中文(简体) ), `setTilt`通风 |
| `SwitchDevice` | 1个 | `turnOn` 编号 : `turnOff` 编号 : `setOn`, (中文(简体) ), `isOn` |
| `ActuatorDevice` | 页:1 | 可淡化 : `setBrightness`, (中文(简体) ), `brightness`, (中文(简体) ), `isOn` |
| `LightDevice` | 70-76 (中文(简体) ) | 演员 + `setRgb`, (中文(简体) ), `setColorTemperature` |
| `ThermostatDevice` | 页:1 | `setTargetTemperature`, (中文(简体) ), `currentTemperature`升级 |
| `SensorDevice` | 3个 | 温度、风能、亮度、雨量、接触、运动、烟雾 |
| `WallControllerDevice` | 10个 | 频道按键时间戳 |
| `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——模型双向转换.

* * *

## 诊断倾倒器

```ts
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`](https://github.com/peribeir/pyrademacher) (图书馆背后的 [家庭助理Rademacher融入社会](https://github.com/peribeir/homeassistant-rademacher)) (中文(简体) ). 见 [`docs/rademacher-homepilot-api-spec.md`](https://npmcn.com/package/%40apocaliss92/noderademacher/docs/rademacher-homepilot-api-spec.md) 对于完整的协议,请注意此端口的构建来源。 与拉德马赫没有关联或认可.

## 许可证

麻省理工学院——见 [自由主义](https://npmcn.com/package/%40apocaliss92/noderademacher/LICENSE)。 。 。 .

## 常见问题

### @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 和提交记录判断。

