Skip to content

HA integration for go-eCharger series & go-eController communicate via WebSocket or the HTTP API v2.0. Please note, that this integration is not official and not supported by the go-e developer team. This project is not affiliated with go-e.com in any way.

License

Notifications You must be signed in to change notification settings

marq24/ha-goecharger-api2

Repository files navigation

Home Assistant Integration 'go-eCharger & go-eController [via APIv2]'

logo

Support for all go-eCharger Wallboxes & go-eController's supporting the APIv2 — of course the APIv2 has to be enabled via the go-e mobile app, before you can use this integration [see instructions].

Important

Please note, that this integration is not official and not supported by the go-e development team. I am not affiliated with go-e.com in any way. This integration is based on the go-e API and the go-e API documentation.

hacs_badge hainstall Wero Revolut PayPal github BuyMeCoffee

latest successfully tested go-eCharger Firmware Versions / go-eController Firmware Versions

Technically, there should be no issues using always the latest go-eCharger & go-eController firmware versions available. As long as the API will just add additional fields and not change the existing ones, this integration should work with all go-eCharger & go-eController firmware versions.

go-eCharger Firmware Versions

List of confirmed working go-eCharger Firmware versions with this integration:

  • 60.3 (60.2 had general connection issues)
  • 59.4
  • 57.0 & 57.1
  • 56.2 - 56.11
  • 055.0, 055.5, 055.7, 055.8

go-eController Firmware Versions

List of confirmed working go-eController Firmware versions with this integration:

  • 1.1.1

If you have any issues with this integration after you updated your go-eCharger firmware — as reported here: #11 — then please be so kind and downgrade the firmware again and create an issue. TIA

Main features

go-eCharger

  • All documented fields in the official go-eCharger GitHub repository are supported by this integration (with very few exceptions) [see list of currently not handled API keys]

  • Support for 'PV surplus charging' (PV-Überschuss Laden) without additional hardware — no need to pay for evcc. In order to use this feature, a small additional manual setup process is required [details can be found below]

  • For all go-eCharger (status) fields that support a numeric status code, this code is available as a separate sensor

  • Multilanguage support: a German translation included (any feedback highly appreciated!) & looking forward to other language contributions

  • Hibernation-Mode: only request sensor data from wallbox when a system is in use [details can be found below]

    Please note that the configuration data will be read only every 24 hours from the hardware (to save data) — but you can update the sensors any time with an 'update' button.

  • Owners of a 22kW variant can force 16A only for all relevant settings. (This can be enabled via the integration settings and require a restart of the integration — then with every restart the settings will be inspected and adjusted to a max of 16A if required)

go-eController

  • This integration supports most documented fields in the official go-eCharger GitHub repository.

  • More sensors will follow up

  • Multilanguage support: a German translation included (any feedback highly appreciated!) & looking forward to other language contributions

    Please note that the configuration data will be read only every 24 hours from the hardware (to save data) — but you can update the sensors any time with an 'update' button.

Warning

Disclaimer

Please be aware that we are developing this integration to the best of our knowledge and belief, but can't give a guarantee. Therefore, use this integration at your own risk.

Requirements

go-eCharger

  • go-eCharger Wallbox running Firmware version 56.1 (or higher)
  • enabled APIv2 [see instructions]
  • [optional] Your Wallbox password to enable the WebSocket implementation (details see below)

go-eController

  • enabled APIv2 Controller running Firmware version 1.1.1 (or higher)
  • enabled APIv2 [see instructions]

Installation

Step I: Install the integration

Option 1: via HACS

Open your Home Assistant instance and adding repository to HACS.

  1. Add a custom integration repository to HACS: https://github.com/marq24/ha-goecharger-api2
  2. Once the repository is added, use the search bar and type go-e APIv2 Connect
  3. Use the 3-dots at the right of the list entry (not at the top bar!) to download/install the custom integration — the latest release version is automatically selected. Only select a different version if you have specific reasons.
  4. After you press download and the process has completed, you must Restart Home Assistant to install all dependencies
  5. Setup the go-eCharger custom integration as described below (see Step II: Adding or enabling the integration)

Option 2: manual steps

  1. Using the tool of choice to open the directory (folder) for your HA configuration (where you find configuration.yaml).
  2. If you do not have a custom_components directory (folder) there, you need to create it.
  3. In the custom_components directory (folder) create a new folder called goecharger_api2.
  4. Download all the files from the custom_components/goecharger_api2/ directory (folder) in this repository.
  5. Place the files you downloaded in the new directory (folder) you created.
  6. Restart Home Assistant
  7. Setup the go-e custom integration as described below (see Step II: Adding or enabling the integration)

Step II: Adding or enabling the integration

You must have installed the integration (manually or via HACS before)!

Option 1: My Home Assistant (2021.3+)

Just click the following Button to start the configuration automatically (for the rest see Option 2: Manually step by step):

Open your Home Assistant instance and start setting up a new integration.

Option 2: Manually step by step

Use the following steps for a manual configuration by adding the custom integration using the web interface and follow instruction on screen:

  • Go to Configuration -> Integrations and add "go-e APIv2 Connect" integration
  • Select what go-e device you would like to install: go-eCharger or go-eController
  • Provide the IP address (or hostname) of your go-eCharger or go-eController web server
  • Provide an area/room where the wallbox/controller is located

After the integration was added, you can use the 'config' button to adjust your settings, you can additionally modify the update interval

Please note that some of the available sensors are not enabled by default.

WebSocket – use local/cloud push (instead of polling)

The integration can use the (undocumented) go-eCharger WebSocket API to receive the current status of your wallbox (or sending data to the wallbox).

Using the WebSocket communication makes the polling interval obsolete, and you will get the latest data in HA as soon as something changes at your wallbox. This includes any changes of the wallbox configuration. When using the WebSocket feature, the refresh/configuration sync buttons are obsolete and also the hibernation-mode is disabled.

To enable the WebSocket communication, you need to provide a password for your go-eCharger. This password is used to authenticate the WebSocket connection and to prevent unauthorized access to your wallbox data. [This is a go-e requirement.]

Open the Integration configuration and provide the password for your go-eCharger. Once a password is available for the integration, it will use the WebSocket communication. This applies to the local and the cloud connection variants.

If you can't remember the password, you can set a new one via the go-eApp:

set-password

What is the difference between pull (http get) vs. push (WebSocket)?

A WebSocket connection provides a persistent, two-way communication channel between a client and a server, whereas an HTTP GET is a one-time request that typically ends after the server responds. The primary advantages of using WebSockets over traditional HTTP GET requests include:

  • Full-Duplex Communication: Both the client and server can send data simultaneously and independently. In contrast, HTTP is half-duplex, meaning data flows in only one direction at a time.
  • Reduced Overhead: After the initial handshake, WebSocket messages (frames) are sent with very small headers (as little as 2 bytes). HTTP GET requests must include full headers (e.g., cookies, user-agent) with every request, which can be hundreds of bytes.
  • Lower Latency: Since the connection remains open, there is no need for the "handshake" process (TCP three-way handshake and TLS setup) for every interaction. This makes data exchange nearly instantaneous, which is critical for real-time apps.
  • Server Push Capabilities: In a WebSocket connection, the server can proactively push data to the client as soon as it is available. With HTTP GET, the client must usually "poll" the server periodically to see if there is new data, which is inefficient and creates delays.
  • Persistent State (not relevant for this integration): WebSockets are inherently stateful, meaning the server can easily track the client's session over the single, long-lived connection. HTTP is stateless, requiring extra mechanisms like cookies or tokens to maintain context between separate GET requests.

go-eCharger

PV Surplus Charging via HA automation

The information about PV surplus charging can be found in a separate document. Please follow this link: PV Surplus Charging via HA automation


Hibernation-Mode — Good to know [ONLY in polling mode]

When you do not use the WebSocket implementation, this integration has implemented a special hibernation-mode.

The integration will not always fetch all sensor data from your wallbox (when you do not have specified the wallbox password in the integration configuration).

For example, the configuration values — they probably do not change every 5 sec. — so to reduce the overall system load, the integration will refresh the configuration entities just every 24h — OR when you make adjustments to any of the go-eCharger settings via HA. If you want to manually sync the configuration sensors, then you can use the button.goe_[serial]_zfocore 1 ['Read Configuration' button].

Additionally, to the configuration values, the number of entities that will be refreshed when no vehicle is connected (car state = 'Idle') is also drastically reduced. In this case, the integration will only read the full data set every 5 minutes from your wallbox.

So the integration has some sort of hibernation-mode in which only the following entities will be frequently read from your wallbox (based on the configured update interval):

  • car: vehicle connection status
  • modelStatus: wallbox status
  • err: possible error status
  • nrg: power values
  • trx: authorization required/unlocked (with Card ID)
  • tma: temperature values

and when you make use of the PV Surplus Charging feature, additionally the values for:

  • pgrid
  • ppv
  • pakku

Once the car status will switch from idle (=1) to something different the integration will leave the hibernation-mode and update all the (none configuration) entities with the configured update interval.

List of (currently) not handled API keys (21/172)

Just as reference, here is the list of API keys that the current implementation of the integration will not handle:

  • atp: nextTripPlanData (debug)
  • awc: awattar country (Austria=0, Germany=1)
  • ccu: charge controller update progress (null if no update is in progress)
  • cch: color_charging, format: #RRGGBB
  • cfi: color_finished, format: #RRGGBB
  • cid: color_idle, format: #RRGGBB
  • cwc: color_waitcar, format: #RRGGBB
  • clp: current limit presets, max. 5 entries
  • del: set this to 0-9 to clear card (erases card name, energy and rfid id)
  • delw: set this to 0-9 to delete sta config (erases ssid, key, ...)
  • ferm: effectiveRoundingMode
  • fna: friendlyName
  • ido: Inverter data override
  • loc: local time
  • log: load_group_id
  • lrn: set this to 0-9 to learn last read card id
  • oct: firmware update trigger (must specify a branch from ocu)
  • tof: timezone offset in minutes
  • utc: utc time
  • wsc: WiFi STA error count
  • wsm: WiFi STA error message

go-eController

Implementation of eController features has been provided by @s3ppo (Harald Wiesinger) — thank you very much!

go-eCharger & go-eController [COMON]

Enable HTTP API v2 in go-e App [v4.x]

[screenshots are from the Android version]

  1. Start the go-er App

  2. Select 'Setting' (lower main button bar)

  3. Select the 'Connection' section as shown here:

    'step1

  4. Select 'API Settings' section as shown here:

    'step2

  5. Toggle the 'Allow local HTTP API v2' as shown here:

    step3

Enable HTTP API v2 in go-e App [v3.x]

[screenshots are from the Android version]

  1. Start the go-e App

  2. Select 'Internet'

  3. Enable 'Advanced Settings' as shown here:

    'step1

  4. Toggle the 'Access to /api/status and /api/set API' (Allow local HTTP API v2) as shown here:

    step1

  5. DO not forget to press the save Icon!

Want to report an issue?

Please use the GitHub Issues for reporting any issues you encounter with this integration. Please be so kind before creating a new issues, check the closed ones if your problem has been already reported (& solved).

1. Consider providing DEBUG Log output

To speed up the support process, you might like to already prepare and provide DEBUG log output. In the case of a technical issue, I would need this DEBUG log output to be able to help/fix the issue. There is a short tutorial/guide 'How to provide DEBUG log' here — please take the time to quickly go through it.

For this integration, you need to add:

logger:
  default: warning
  logs:
    custom_components.goecharger_api2: debug

2. In case of implausible data

It will happen that the data that is displayed by this integration makes little sense (to you) — aka 'the data is not plausible.' Of course, it could be the case that something in this integration has been messed up — but so far — in all reported issues the root cause of implausible data was/is, that the go-e device itself already provided this data [you can check this by directly requesting the attribute from the wallbox]

Each sensor of this integration has an API-Key identifier in its entity ID. You can manually request values from your wallbox by using this API key via a regular web browser.

E.g., assuming the value of the sensor in question is sensor.goe_123456_tpa and your wallbox/controller is reachable via the IP 192.168.22.10, then you can request/read the 'original' value via the following link (where tpa is the API key):

http://192.168.22.10/api/status?filter=tpa

so the pattern is:

http://[device-ip]/api/status?filter=[API-KEY]

If the plain data that will be returned in such a request is matching the data displayed by the integration, then I would kindly ask to get in contact with go-e, since in such a case the integration is just the 'messenger.'


Advertisement / Werbung — alternative way to support me

Switch to Tibber!

Be smart switch to Tibber — that's what I did in october 2023. If you want to join Tibber (become a customer), you might want to use my personal invitation link. When you use this link, Tibber will we grant you and me a bonus of 50,-€ for each of us. This bonus then can be used in the Tibber store (not for your power bill) — e.g., to buy a Tibber Bridge. If you are already a Tibber customer and have not used an invitation link yet, you can also enter one afterward in the Tibber App (up to 14 days). [see official Tibber support article]

Please consider using my personal Tibber invitation link to join Tibber today or Enter the following code: 6o0kqvzf (six, oscar, zero, kilo, quebec, victor, zulu, foxtrot) afterward in the Tibber App — TIA!


References

Footnotes

  1. focore stands for: force configuration request

About

HA integration for go-eCharger series & go-eController communicate via WebSocket or the HTTP API v2.0. Please note, that this integration is not official and not supported by the go-e developer team. This project is not affiliated with go-e.com in any way.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages