TrooperDuper/espar-airtronic-esphome
GitHub: TrooperDuper/espar-airtronic-esphome
对 Espar Airtronic S3 B2L 汽油加热器进行 CAN 总线协议逆向工程,并提供 ESPHome 外部组件实现与 Home Assistant 的完整集成控制。
Stars: 1 | Forks: 0
# Espar Airtronic S3 B2L — CAN Bus 逆向工程与 ESPHome 控制器
[](LICENSE)
[](https://esphome.io)
[](https://github.com/WeActStudio/WeActStudio.CAN485DevBoardV1_ESP32/tree/master)
## 项目初衷
许多越野旅行者和房车/卡车露营者使用的是 Espar 加热器,但他们依赖昂贵的 OEM 控制器(EasyStart Pro),这些控制器无法与 Home Assistant 通信,不能与其他自动化系统集成,也无法进行远程监控。此项目的目标很简单:用一个 15 美元的 ESP32 开发板替换专有控制器,解码 CAN bus 协议,并在 Home Assistant 中获得一个合适的气候实体。
本仓库记录了在此过程中收集到的所有信息——每一份原始捕获数据、每一个失败的假设、每一个最终变得有意义的帧载荷——这样下一个人就不必从零开始了。
**本项目是与 Claude(Anthropic 的 AI 助手)合作开发的。** 逆向工程方法、ESPHome 组件架构和文档都是通过迭代式的人机协作构建的。所有决策和硬件验证均由作者完成;AI 协助进行了分析、代码生成和文档编写。
## 已实现功能
- ✅ 通过 Home Assistant 气候实体进行完整的加热 / 仅送风 / 关闭控制
- ✅ 实时加热器状态监控(启动 / 加热 / 送风 / 空闲)
- ✅ 火焰确认传感器
- ✅ 已确认在 66°F、75°F、78°F 和 80°F 下的温度设定点编码
- ✅ 行为故障检测(启动失败、心跳丢失、锁定)
- ✅ WS2812 RGB LED 状态指示灯
- ✅ ESPHome 外部组件——即插即用,无需自定义固件
## 待解决问题
- ⚠️ 故障帧 CAN ID 尚未解码(维修手册中已知的 P 码;已记录捕获方法)
- ⚠️ 仅在 Airtronic S3 B2L 汽油版 12V 上测试过——柴油版和其他型号未测试
- ⚠️ 启动同步要求加热器电源和 ESP32 同时启动(参见[已知问题](#known-issues))
有关详细信息和贡献方式,请参阅[未解决的问题](../../issues)。
## 硬件
| 组件 | 备注 |
|---|---|
| [WeAct CAN485 V1.0 (ESP32)](https://github.com/WeActStudio/WeActStudio.CAN485DevBoardV1_ESP32/tree/master) | ESP32 + 板载 CAN 收发器。无需外部电平转换器。板载 120Ω 终端电阻开关必须置于 OFF 位置——WeAct 作为中间总线节点连接在 EasyStart Pro 的 Molex 接口处,而不是作为总线终端。 |
| Molex MicroFit 3.0 双排连接器 | 用于在 XB10 连接器处接入加热器线束,无需剪断电线 |
完整的接线和引脚定义详情:[docs/hardware-setup.md](docs/hardware-setup.md)
## 快速开始
1. 按照 [docs/hardware-setup.md](docs/hardware-setup.md) 连接硬件
2. 将 `esphome/components/` 复制到您的 ESPHome 配置目录
3. 编辑 `esphome/espar-heater.yaml`——添加您的 WiFi 凭据,并更新车内温度传感器实体 ID
4. 通过 ESPHome 刷写(首次使用 USB,之后可使用 OTA)
5. `espar_heater` 气候实体将自动出现在 Home Assistant 中
完整的 ESPHome 设置:[esphome/README.md](esphome/README.md)
## 仓库结构
```
espar-airtronic-esphome/
├── docs/
│ ├── protocol-reference.md # All decoded CAN frames, payloads, encoding
│ ├── hardware-setup.md # Wiring, connectors, pinout
│ └── fault-codes.md # P-code table + RE methodology for fault frames
├── captures/
│ ├── README.md # How captures were taken, equipment, settings
│ ├── normal-operation/ # All RE phase captures, renamed descriptively
│ ├── easystart-pro-session/ # Full 71k-frame EasyStart Pro session (split)
│ └── fault-codes/ # Placeholder — contributions welcome
├── esphome/
│ ├── espar-heater.yaml # Ready-to-use ESPHome config
│ └── components/espar_can/ # External component source
├── arduino/
│ ├── CAN_CSV_WeAct.ino # Full controller sketch (HEAT/FAN/OFF + serial)
│ └── CAN_CSV_WeAct_Listen.ino # Passive listen-only sketch for captures
└── tools/
└── decode.py # CSV annotation + SavvyCAN format converter
```
## 已知问题
- **启动同步(约 20 秒延迟):** ESP32 必须在加热器通电时重启,以完成 CAN 握手。连接到加热器电源的继电器会自动触发重启;在给加热器通电后,预计气候实体激活前会有约 20 秒的延迟。
- **心跳抖动:** 加热器偶尔会使其 0x625 心跳间隔超过 5 秒。该组件在声明断开连接前最多可容忍 10 秒。较长间隔下偶尔出现的心跳丢失日志消息是正常现象,并且能够自行恢复。
## 贡献
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。目前最有价值的贡献是故障帧捕获(在运行 SavvyCAN 的同时触发特定故障)以及在 B2L 汽油版以外的加热器型号上进行测试。
## 许可证
MIT——详见 [LICENSE](LICENSE)。可随意使用、分支和构建。
*维护者:[@TrooperDuper](https://github.com/TrooperDuper)*
标签:CAN485, CAN总线, DIY, ESP32, Espar Airtronic, ESPHome, Home Assistant, IoT控制, 云资产清单, 开源硬件, 户外越野, 房车改装, 智能家居, 气候控制, 汽车加热器, 物联网, 硬件黑客, 自动化控制, 远程监控, 逆向工具, 逆向工程