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: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![ESPHome](https://img.shields.io/badge/ESPHome-2026.3+-blue)](https://esphome.io) [![Hardware](https://img.shields.io/badge/Hardware-WeAct%20CAN485-green)](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控制, 云资产清单, 开源硬件, 户外越野, 房车改装, 智能家居, 气候控制, 汽车加热器, 物联网, 硬件黑客, 自动化控制, 远程监控, 逆向工具, 逆向工程