I’ve been tinkering with an ESP32-based CAN listener for my 2017 Transporter as part of a bigger project. I’m looking at ideas for what else I can get from the convenience CAN bus, so I thought I’d share what I have so far and hopefully others doing similar things might be willing to share too.
I did started tis thread off some time ago, and i have finally got around to having something working! CAN bus or LIN Bus
The larger project idea is to build a Raspberry Pi-powered “home assistant” type thing for the camper. I'm calling it VannyPi! It’s up and running, but very much beta at the moment. The Pi collects data via BLE from the fridge and night heater and talks to a Renogy Core One unit via WebSockets and gets things like shunt, DC to Dc charger and mppt information. It interfaces with my this ESP32 CAN module over BLE. There is also an ESP32 screen up front providing quick-view information for all of the above, as well as a GPS compass and levelling information from a gyro attached to the base of the bed.
All of this information is presented in a PWA (basically a mobile phone app) that uses Cloudflare to provide secure remote access. The van has a portable 5G router in it for this… and for the kids’ Netflix!
I say it’s in beta because, while everything generally works well, however the Bluetooth connections are still very flaky. I’m currently working through that.
Current ESP-Can bus functionality
The heater and fridge integrations were based on existing GitHub projects, but the Renogy Core One WebSocket integration was reverse-engineered from scratch.
I did started tis thread off some time ago, and i have finally got around to having something working! CAN bus or LIN Bus
The larger project idea is to build a Raspberry Pi-powered “home assistant” type thing for the camper. I'm calling it VannyPi! It’s up and running, but very much beta at the moment. The Pi collects data via BLE from the fridge and night heater and talks to a Renogy Core One unit via WebSockets and gets things like shunt, DC to Dc charger and mppt information. It interfaces with my this ESP32 CAN module over BLE. There is also an ESP32 screen up front providing quick-view information for all of the above, as well as a GPS compass and levelling information from a gyro attached to the base of the bed.
All of this information is presented in a PWA (basically a mobile phone app) that uses Cloudflare to provide secure remote access. The van has a portable 5G router in it for this… and for the kids’ Netflix!
I say it’s in beta because, while everything generally works well, however the Bluetooth connections are still very flaky. I’m currently working through that.
Current ESP-Can bus functionality
The ESP32 is paired with an MCP2515 transceiver on the convenience CAN bus (100 kbit/s), tapped into the back of the radio head unit.
Not going to lie, I did a lot of CAN bus sniffing and then had AI help decode some of it, as I could not work it out myself!| CAN ID | Signals | How to determine the result |
|---|---|---|
| 0x470 | Doors & exterior lights | Byte 1 identifies the door: 0x00 = all closed, 0x01 = driver, 0x02 = passenger, 0x05 = sliding, 0x61 = tailgate. The lights are considered on when byte 2 equals 0x5C. |
| 0x291 | Central locking | Byte 0 value: 0x89 = locked, 0x49 = unlocked. |
| 0x381 | Driver window position | Byte 2 gives the driver’s window position. 0x00 means closed, any other value indicates the window is moving/open. |
| 0x3B5 | Passenger/all windows | Appears to report all window movement, but I’m still trying to reliably separate passenger and driver window activity. |
| 0x527 | Interior light | Bit 0 of byte 6: 1 = light on, 0 = off. |
| 0x571 | Battery voltage | Byte 0 is converted to voltage using (byte0 / 20) + 5 volts (code currently uses ((buf[0]/2)+50)/10). |
| 0x621 | Trailer connection | Byte 4: 0x83 indicates a trailer connected, 0x80 indicates no trailer. A debounce timer smooths transitions. |
Questions for the community
- Has anyone else decoded additional CAN IDs on the convenience bus? I know there are more signals out there, but I haven’t had time to reverse-engineer them yet.
- If you’ve got working code or know of other IDs for the T5/T6 platform, I’d love to hear about them or see your snippets.
- I think my window decoding is still incorrect/flaky. The driver’s side seems fairly stable, but the passenger side is very hit-and-miss.
The heater and fridge integrations were based on existing GitHub projects, but the Renogy Core One WebSocket integration was reverse-engineered from scratch.

