danielrosehill/gerber-prime-6000-local-api
GitHub: danielrosehill/gerber-prime-6000-local-api
为 Gerber Prime 6000 系列智能家居控制器提供逆向工程所得的本地 HTTP API 文档与代码示例,支持脱离厂商云进行本地化控制与 Home Assistant 集成。
Stars: 0 | Forks: 0
# Gerber Prime 6000 — 本地 HTTP API(非官方)
关于通过 **本地 HTTP 控制 Gerber Prime 6000 系列** 智能家居控制器(继电器 / 调光器 / 卷帘导轨箱)且 **无需厂商云** 的逆向工程笔记和代码示例。
如果你拥有这样一台设备,并希望将其接入 **Home Assistant / Node-RED / 脚本**,而不是使用 "Home Mate 2" 手机应用,那么这篇笔记正是为你准备的。这里的内容都是通过观察设备自带的 Web UI 得出的——官方并未公开提供 API 文档。
## 这是什么设备?
- 厂商:**Gerber Prime** (gerber-home.net / gerberprime.com),手机应用为 **"Home Mate 2"**。
- DIN 导轨控制器,通过热插拔模块提供 **8 路输出**(继电器 / 调光器 / 窗帘模块),8 路输入。销售型号例如 **GPS-6000**("百叶窗模块 5A×4,继电器最高 5A×8"),**GPB-6000**(FCC ID `2AQO4GPB-6000`)。
- **Wi-Fi 控制模块**型号标识为 **`PSC05`**(存在同系列的 `PSC03`)。其配置热点名为 **`PSC05-`**。
- 嵌入式 Linux,**Apache/2.4.12**,Web UI 代码版本 **2.0.21** (2018)。API 响应中出现的内部平台标识字符串为:**`PAN27`**。
如果你的设备初始配置 Wi-Fi 名为 `PSC05-xx:xx:xx:xx:xx:xx`,那么本仓库适用于你的设备。
## 默认凭据(厂商默认值,源自 FCC 手册)
| 项目 | 值 |
|------|-------|
| Web UI / API 登录 | **`admin` / `888888`** (HTTP Basic) |
| 配置 Wi-Fi (SoftAP) WPA 密码 | **`12345678`** |
| SoftAP 网关 IP | `10.10.10.254` |
*(如果可以,请务必修改这些凭据。这是出厂默认值,已公布在 FCC 手册中。)*
## 两个本地接口
Web UI 由两个 CGI 端点提供支持(均使用 HTTP Basic 认证):
- **`/sdk.cgi`** — 设备控制与状态(继电器开关、读取所有通道、Z-Wave 加入/移除、配置参数)。
- **`/network.cgi`** — 网络 / Wi-Fi 配置(AP↔STA 模式、SSID、扫描、重启)。
完整参考文档:**[docs/API.md](docs/API.md)**。
## 快速开始
```
pip install requests # optional; the sample also works with urllib
python examples/gerber_client.py --host 10.10.10.254 get-devices
# 开启 / 关闭 relay channel 3(uid 来自于 get-devices):
python examples/gerber_client.py --host 10.10.10.254 switch --uid 257 --chid 3 --on
python examples/gerber_client.py --host 10.10.10.254 switch --uid 257 --chid 3 --off
```
参见 [examples/gerber_client.py](examples/gerber_client.py)(Python 客户端),
[examples/curl.md](examples/curl.md)(原始 curl),以及
[examples/home_assistant.md](examples/home_assistant.md)(HA `rest_command` 概要)。
## 踩坑经验
- **`/sdk.cgi` 的请求编码:** UI 发送的 `POST` 请求包含一个单独的表单字段
`json=))>`,也就是说,JSON 被进行了 **双重编码**。
示例客户端重现了这一操作。响应则是 **URI 编码的 JSON** — 解析前需要先解码。
`respcode: 100` 表示成功 (OK)。
- **通过 API 将设备切换至 Wi-Fi STA 模式并不稳定。** 通过 `/network.cgi` 设置
`setstassid` / `setstapwd` / `setwifimode=STA` / `wificommit` 反复尝试,均无法成功加入网络(测试涵盖了 WPA2、WPA2/3 甚至是开放 SSID)——似乎这些原始调用并未设置 SSID 的加密类型。**可行方案:在设备自带的 Web UI 中进行 STA 模式切换**,从其扫描列表中选择网络,然后将设备 **断电重启**。此后设备即可正常加入网络,且重启后状态稳定。如果你破解了纯 API 实现 STA 模式的路径,欢迎提交 PR。
- **老旧的 Wi-Fi 协议栈。** 在 STA 模式下,这个(2018 年时期的)客户端可能无法关联到要求开启 **802.11w/PMF** 或使用 **快速漫游/频段引导** 的 AP。如果无法加入网络,请尝试使用 **2.4 GHz、WPA2-PSK、禁用 PMF** 的 SSID(或者短暂使用开放网络来验证可行性)。
- **恢复:** 如果 Wi-Fi/配置卡死,请对设备进行 **断电重启**(关闭/打开主电源)——这种操作是非破坏性的。设备会自动回退到其配置 AP 模式。**千万不要按住 Reset 按钮约 5 秒** ——这会触发 **恢复出厂设置**,并清空你的场景 / 通道名称 / 绑定配置。
- **Modbus:** RJ11 端口为 **RS485/Modbus**。**主/从模式切换和 Modbus 地址设置位于 Web UI 中**(Settings → *PAN27 Information* → Modbus Mode)。默认为 **master** 模式;如果你想从外部 Modbus 主机(例如 RS485→TCP 网关)轮询它,请设置为 **slave**。
## 数据模型(来自 `get_all_device`)
每个设备包含多个通道;每个通道都有一个 `ctrltype`/`functype`:
| ctrltype | 含义 | 控制 |
|----------|---------|---------|
| `23` | 开关继电器 ("Wall Switch") | `switch` 命令,`val` `0`=关 / `255`=开 |
| `26` | 卷帘 / 窗帘 | `switch` 命令 — **升/降/停止的 `val` 映射尚未确认(寻求帮助)** |
百叶窗行程时间(秒/通道)和 Modbus 设置出现在 `pan27_info` 数据块中。
## 状态 / 寻求帮助
- ✅ 读取所有设备/通道;✅ 继电器开/关;✅ Wi-Fi 模式/扫描/配置;✅ Modbus 模式切换。
- ❓ **卷帘开启/关闭/停止命令** — 尚未完全确定。欢迎提交 PR。
- ❓ 纯 API 实现 STA 模式加入(目前仍需依赖 UI 流程)。
- ❓ 调光通道控制(`val` 作为亮度值?)。
非常欢迎其他 Gerber Prime / PSC05 设备的所有者参与贡献。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:Home Assistant, HTTP接口, 云资产清单, 恶意软件库, 智能家居, 本地API, 设备控制, 逆向工具, 逆向工程