Mellowgroup-dk/alde-3020he-lin
GitHub: Mellowgroup-dk/alde-3020he-lin
该项目实现了对 Alde Compact 3020 HE 房车液体加热器 LIN 总线的被动监听与解码,通过 ESP32 和 ESPHome 将十三个实时读数发布到 Home Assistant。
Stars: 0 | Forks: 0
# Alde Compact 3020 HE — LIN bus 解码
对**Alde Compact 3020 HE**液体加热器中 LIN bus 的被动解码,
该设备安装于 2022 款 Dethleffs Beduin Scandinavia 房车上。一个 ESP32 监听
bus 并通过 ESPHome 向 Home Assistant 发布十三个实时读数。
读取功能**已解决并经面板验证**。控制功能**尚未解决**,本仓库特意区分了
这两者的不同——在尝试之前,请参阅
[控制尚未解决](docs/CONTROL-NOT-SOLVED.md)。
据我所知,目前还没有其他关于 Alde 3020 HE
信号帧的公开解码。在同一传输层(transport layer)的 *Truma* 方面已有先前的工作
([truma_inetbox]、[inetbox.py]、[WomoLIN]),并且在 inetbox.py 的 issue
追踪器中,作者明确表示“*目前还没有针对 Alde 3020
的代码。*”本仓库填补了该空白的读取部分。
## 已实现功能
十三个字段,已解码并发布。其中六个已通过面板自带的
服务菜单(测量链之外的独立来源)确认——
其余则通过已记录的面板操作进行确认:
| 读数 | 帧 | 验证 |
|---|---|---|
| 设定值 | `0x03` @0–1 | 直接测试,面板 23.0 → 17.5 ¹ |
| 室内温度 | `0x47` @0–1 | 面板,160 次读数中的 154 次 |
| 乙二醇温度 | `0x5B` @0–1 | 服务菜单 |
| 水温 | `0xD6` @4–5 | 服务菜单 |
| PCB 温度 | `0xD3` @0–1 | 服务菜单 |
| 主电流 | `0x5B` @2–3 | 服务菜单 |
| 电池电压 | `0xD6` @6–7 | 服务菜单 |
| 热水目标温度 | `0xC4` @0–1 | 4/4 面板选择 |
| 允许功率 | `0x06` @0–1 | 3/3 面板选择 |
| 实际功率 | `0x55` @0–1 | 电流消耗,3 个级别 |
| 燃烧器风扇转速 | `0x5B` @6 | 2 次面板读数,精确 ×32 |
| AC 灯亮度 | `0x97` @6 | 2/2 开/关 |
| 燃气 开/关 | `0x85` @0 | 4/4 |
¹ **有一个重要注意事项** — `0x03` 仅在空调设备
处于休眠状态时才承载设定值。请参阅[三种状态](docs/PROTOCOL.md#the-three-regimes-for-0x03)。
此外还解码出:该 bus 是一个**固定的 11 槽位调度表**,每 388 ms
重复一次,在 1752 帧中零偏差;**面板是 LIN master**(通过拔掉
它来测量:188 秒完全静默);并且两个 slave 标识为
`0x0330`“Alde System”和 `0x0C00` 空调。
## 未实现的功能
**控制。**没有任何一条指令曾改变过任何状态。在两种架构下
尝试了九种配置;每一种都产生了无效结果。
传输层接受了我们——设备将我们列入了其节点表中,并
每 1.34 秒轮询我们一次——但应用层是 Alde 专有的,且
未被解码。[完整说明在此](docs/CONTROL-NOT-SOLVED.md),包括
尝试的代价。
**没有空闲槽位。**每个信号帧都有发布者,因此第二个
设备不能简单地开始向调度表中发送数据。
## 硬件
- ESP32 (`esp32dev`) 配备 **TJA1020** LIN 收发器
- 通过分线器接入加热器的 `Control panel` RJ12 插座,因此
房车原有的 Alde 面板可以继续工作
- UART **9600 baud, 8N2**,TX=GPIO17,RX=GPIO16 — TX 已声明但从未
被写入
面板必须保持连接:它是 bus master,没有它就
完全没有通信流量。
## 快速开始
```
cp esphome/secrets.yaml.example esphome/secrets.yaml # then fill it in
esphome run esphome/alde-lin-reader.yaml
```
该配置在 ESPHome **2023.12.0** 上验证通过,且未使用任何更新的内容。
此固件**在结构上为仅接收模式**:其中没有哪怕一次
向 bus 写入的调用。正是这一特性使其能够安全地在
正在工作的加热器旁持续运行,如果您对其进行修改,这一点也值得保留。
## 文档
- **[PROTOCOL.md](docs/PROTOCOL.md)** — 帧格式、调度表、每个
解码的字段及其公式,以及仍未知的内容
- **[METHOD.md](docs/METHOD.md)** — 字段是如何被验证的,以及在此过程中
不得不撤回的错误
- **[CONTROL-NOT-SOLVED.md](docs/CONTROL-NOT-SOLVED.md)** — 控制
尝试、其代价以及失败的原因
- **[captures/](captures/)** — 支持核心声明的原始记录
## 范围及其实事求是的态度
一辆房车,一台加热器,一块面板,一个夏天。这里的所有内容都是在
单台 Alde Compact 3020 HE 上测量得出的。如果某个读数经过了面板确认,我
会如实说明;如果属于推断,我也会如实相告;如果某项声明后来
被撤回,该撤回记录会保留在文本中,而不是被悄悄编辑掉。
**这不是 Alde 的产品,且与 Alde 或 Truma 没有任何关联。**请参阅
[DISCLAIMER.md](DISCLAIMER.md)。
## 许可证
代码采用 [MIT](LICENSE),文档采用 [CC BY 4.0](LICENSE-CC-BY-4.0)。
标签:ESPHome, LIN总线, 智能家居, 物联网, 硬件接口