WiCAN ESP32 based open source OBD2/OBD-II Car Diagnostics CAN Bus to WIFi/BLE/USB adapter Home Assistant integration?

I think that this open-source ESP32-based OBD (On-Board Diagnostics) hardware adapter for cars/trucks + open-source firmware combination in this crowdfunding campaign on Crowd Supply looks very interesting product:

“WiCAN” open-source OBD-II Car Diagnostics CAN Bus to WIFi/BLE/USB adapter based on ESP32:

https://www.crowdsupply.com/meatpi-electronics/wican

I think it has great potential for Home Assistant integration in order in car/truck sensor status and diagnostics data as well device tracking location if leave them always plugged into your cars.

The guy that made it and owns the project has now expressed interest in making a new integration for Home Assistant, however he is asking the community which is the best way forward to achieve that:

https://www.crowdsupply.com/meatpi-electronics/wican/updates/wican-home-assistant-integration-and-more

Is MQTT the way to go? I started some discussion about that before with MeatPi on his GitHub here:

https://github.com/meatpiHQ/wican-fw/issues/3

Today it support BUSmaster, slcand, SavvyCAN, and RealDash as well as python-can/SocketCAN

4 Likes

I’m also very interested in this project (and I’m a backer, too).

MQTT might be a good approach assuming you have a hotspot in your car - it may require HA users to expose their MQTT ports to the public internet or by VPN though. Not a deal breaker with the right security settings IMO. Another project (Torque) uses a mobile app to publish data via a Phone app.

I do not have a hotspot in any of my cars, only a Wi-Fi access point in my garage/car-port. But I was initially only planning on using the device tracker part as an arrival sensor in order to “presence” and/or “proximity” detect when the cars arrive and leave my garage/car-port based on if they are connected to WiFi or when MQTT

FYI, looks like the WiCAN founder has now started to work on adding support for Home Assistant, see:

https://www.crowdsupply.com/meatpi-electronics/wican/updates/low-battery-alerts-with-wican-and-home-assistant

I have a plug-in hybrid SUV. It’d be very useful if I could get battery state-of-charge into HA, but there’s no published library for my vehicle. How easy would it be to reverse engineer the ID for the parameter.

FYI, the developer posted an update to the campaign saying that the initial batching will soon ship to Crowd Supply for distribution and that the latest firmware now has initial MQTT protocol support:

Pre-order for the next batch is now also available

Not received mine yet but FYI developer posted video and instructions for WiCAN with Home Assistant:

https://github.com/meatpiHQ/wican-fw#home-assistant

Home Assistant

WiCAN is able to send CAN bus messages to Home Assistant using MQTT protocol. I found that using Node-RED is the simplest way to create automation based on the CAN messages received. This short video highlights some of the steps WiCAN Home Assistant - YouTube

1. Install Home Assistant Mosquitto broker add-on
2. Create Home Assistant new user account for WiCAN. These user credentials will be used to set up the MQTT setting for WiCAN.
3. Connect to WiCAN access point WiCAN_xxxxxxxxxxxx then, using a web browser, go to http://192.168.80.1/
4. Set the “Mode” to Ap+Station
5. Fill in your Home WiFi network SSID and Password.
6. Enable MQTT and fill in the Home Assistant credentials created in step 2
7. Install Home Assistant Node-RED Add-on
8. Download “wican_example_flow.json” and replace device_id with your WiCAN ID.
9. Open Node-RED Add-on and import the edited “wican_example_flow.json”
10. Double click on the subsction Node and edit the server fill in MQTT broker IP address and credentials created in step 2
11. Click deploy.
12. To create a new MQTT sensor, you’ll need to edit the configuration.yaml file by adding the following lines:

mqtt:
sensor:
- name: “Amb Temp”
state_topic: “CAR1/Amb_Temp”
unit_of_measurement: “C”
value_template: “{{ value_json.amb_temp }}”
- name: “Fuel Level”
state_topic: “CAR1/Fuel_Level”
unit_of_measurement: “%”
value_template: “{{ value_json.fuel_level }}”

11. Restart Home assistant
12. After restart go to dashboard and Add new Card entity.