Open Charge Point Protocol (OCPP)
lbbrhzn/ocpp · vv0.12.2
Home Assistant integration for electric vehicle chargers that support the Open Charge Point Protocol (OCPP).
In Apple Home through HomeKit Bridge
What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.
| Entity | Shows up as | Note |
|---|---|---|
switch | Switch or outlet | |
sensor | Sensor (temperature, humidity, air quality…) | |
button | Button (as a switch) |
What people report
Many OCPP 1.6 wallboxes (Autel, Sigenergy, ABB) work, but quirky firmware is common: Grizzl-E units broke after firmware updates and some chargers need handshake or profile workarounds.
- Works3
- Partly works3
- Not working3
| Device | In Home Assistant | In Apple Home | What they said | Source |
|---|---|---|---|---|
| ABB Terra AC-W22-T-0 | Works | Bootloop on firmware 1.8.21 with OCPP 0.5.8; fixed after reportSaved copyDescribe the bug ABB Terra AC-W22-T-0 (listed as supported) keeps booting with these notifications showing up. Controls are avaliable for a few seconds, until it reboots again. Screenshots Versions etc. OCPP v0.5.8 HA 2024.8.1 Charger firmware: V1.8.21 (Newest) Debug logging from HA (Not really sure if I'm including enough?) Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/websockets/legacy/protocol.py", line 963, in transfer_data message = await self.read_message() ^^^^^^^^^^^^^^^^^^^^^^^^^ File … Excerpt saved from GitHub on 2026-10-23. | Issue #1275 · 2024-08 | |
| Autel MaxiCharger AC | Works | Documented as supported over plain ws; connector status caveat notedSaved copyFollow-up to #2072, which merged before I could get these into it, I'd left them as a comment there. All three come from two `MaxiChargerAC` units running here on OCPP 1.6-J. The section reads as though TLS were required. Everything documented so far is the `wss://` + reverse-proxy path, which is the harder setup. A plain `ws:// :9000` on a LAN works with no certificate handling at all. The TLS instructions are worth keeping, they just needed a line saying what they're for. The reported model, and a vendor claim worth contradicting. These report vendor `Autel`, model `MaxiChargerAC`, … Excerpt saved from GitHub on 2026-10-23. | PR #2076 · 2026-08 | |
| Sigenergy Sigen EV DC charger | Works | Tested-device notes added; firmware V100R001C21SPC117Saved copySummary Add a tested-device entry for the Sigenergy Sigen EV DC charger in `docs/supported-devices.md`. Tested hardware reports vendor `SIGEN`, model `EVDC 25 7.5S2`, firmware `V100R001C21SPC117`, with one connector. Testing used integration release `v0.12.0` (tag commit `848407c`) on 4 October 2026. ## Evidence and scope - Native connector lifecycle and transaction/session telemetry were observed. - The tester reports that supported measurands were not automatically detected. The entry now documents manual measurand configuration and separate entity enablement, with live-reading checks … Excerpt saved from GitHub on 2026-10-23. | PR #2181 · 2026-10 | |
| Autel MaxiCharger US AC LW10-N14 | Partly works | Firmware omits Connection: Upgrade header, so WebSocket handshake fails; fix PR not mergedSaved copyProblem Some charger firmware (e.g. Autel MaxiCharger US AC LW10-N14, fw v1.38.00/v1.22.00) omits the required `Connection: Upgrade` header from the WebSocket opening handshake. `websockets` 14+ strictly validates this header and raises `InvalidUpgrade`, so the affected chargers can never connect to the OCPP central system. ### Fix Add a `process_request` hook (`_fix_missing_connection_header`) that injects `Connection: upgrade` before the library validates the handshake, only when the header is absent. Logs a warning recommending a firmware update. No effect on compliant chargers (covered by … Excerpt saved from GitHub on 2026-10-23. | PR #1984 · 2026-06 | |
| BYD AC0207EI50 charger | Partly works | Firmware 0.4.14 truncates SupportedFeatureProfiles; tolerance fix proposed, PR closedSaved copyFixes #2206 Some chargers (e.g. BYD AC0207EI50 with firmware 0.4.14) truncate the `SupportedFeatureProfiles` value in their `GetConfiguration` response, reporting `RemoteTrigge` instead of `RemoteTrigger` (the frame analysis by @zacaro suggests a fixed ~85 character buffer). The exact-match parsing in `get_supported_features()` then ignores the profile, so `post_connect` skips `TriggerMessage` (BootNotification / StatusNotification) and a persistent warning is logged on every start. ## Change When the exact match fails, fall back to a prefix match against the known profile names (`Core`, … Excerpt saved from GitHub on 2026-10-23. | PR #2210 · 2026-10 | |
| Compleo eBox smart | Partly works | Works for automations; Bluetooth setup, firmware update over OCPP needs sftp URLSaved copyGlad I could help 😄 Another update from my side, the eBox I first tested with broke due to unrelated issue, so it’s now replaced with an eBox smart S, firmware 1.2.3 With that device the web interface briefly worked and now it is no longer reachable even after restarts and also in home assistant I get like 50 notifications every day that the device restarted, so I will probably update the firmware via ocpp soon. How was your experience with the updates? Excerpt saved from GitHub on 2026-10-23. | Issue #1612 · 2025-04 | |
| Grizzl-E Smart 40A | Not working | New firmware blocks OCPP configuration page; no fix, issue staleSaved copyWiFi Version: ULGRW000A-03.14.1 EVSE Version: GRU077L-01.07.3 Grizzl-E Ultimate 48. Same issue, was hoping emitclever's tricks would work, but {grizzle-IP}/info just returns "failed to read existing file" (which is the same message I get when going to any {grizzle-IP}/{random string} on the charger). grizzle-ip/ocppconfig still asks for password. the tampermonkey script runs/injects, but doesn't appear to work to get me in, (still asks for a password, still doesn't load regardless of what/if I type in and hit "sign in"). Excerpt saved from GitHub on 2026-10-23. | Issue #1652 · 2025-07 | |
| Grizzl-E Smart v2 | Not working | Sensors unavailable, supported profiles never returned; maintainer blames buggy firmwareSaved copyDescribe the bug Grizzl-e Smart v2 does not work with the OCPP integration version 0.4.40 Firmware WiFi Module: GWM-07.013-03 Firmware Power Board: GCW-10.18-05.7 To Reproduce Upon configuring the Grizzl-e, it connects and has the following errors in the HA logs: ``` This error originated from a custom integration. Logger: custom_components.ocpp Source: custom_components/ocpp/api.py:212 Integration: Open Charge Point Protocol (OCPP) (documentation, issues) First occurred: September 7, 2023 at 5:42:35 PM (9 occurrences) Last logged: 9:29:52 AM Skipping websocket subprotocol validation This … Excerpt saved from GitHub on 2026-10-23. | Issue #899 · 2023-09 | |
| Grizzl-E Ultimate 48 | Not working | Firmware update broke OCPP; support says fix pendingSaved copyWiFi Version: ULGRW000A-03.14.1 EVSE Version: GRU077L-01.07.3 Grizzl-E Ultimate 48. Same issue, was hoping emitclever's tricks would work, but {grizzle-IP}/info just returns "failed to read existing file" (which is the same message I get when going to any {grizzle-IP}/{random string} on the charger). grizzle-ip/ocppconfig still asks for password. the tampermonkey script runs/injects, but doesn't appear to work to get me in, (still asks for a password, still doesn't load regardless of what/if I type in and hit "sign in"). Excerpt saved from GitHub on 2026-10-23. | Issue #1652 · 2025-08 |
Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.
How it connects
Local push
Talks to the device on your network, and the device tells Home Assistant the moment something changes.
Details
| Installs (analytics) | 2,675 (0.38%) |
|---|---|
| GitHub stars | 409 |
| Latest version | v0.12.2 (2026-10-19) |
| Set up in the UI | Yes |
| Maintainers | @lbbrhzn, @drc38 |
| License | MIT |
Notable forks
Forks with stars, or with code pushed at least 90 days after the original’s last push. Useful when the original goes quiet.
| Fork | Stars | Last push | Description |
|---|---|---|---|
| stefanthoss/ocpp-grizzl-e | ★ 7 | 2025-04-16 | Home Assistant integration for the Grizzl-E Smart charger with its faulty OCPP implementation |
| djiesr/ocpp | ★ 6 | 2025-09-10 | Home Assistant integration for Grizzl-E Smart chargers patch to support the Open Charge Point Protocol (OCPP). |
| archerjm/ocpp_projectev | ★ 4 | 2022-09-17 | Home Assistant integration for electric vehicle chargers that support the Open Charge Point Protocol (OCPP). Version to work with ProjectEV (Atess) Charger. |
In ReReHome
Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.
Bridges get their own settings page listing the accessories behind them.
Sources
- Documentation: https://github.com/lbbrhzn/ocpp/blob/main/README.md
- Source code: https://github.com/lbbrhzn/ocpp
- Issues: https://github.com/lbbrhzn/ocpp/issues
- HACS: https://hacs.xyz