Add Genesis Europe Bluelink (#30158)

This commit is contained in:
okuegow 2026-05-23 21:49:08 +02:00 • committed by GitHub
parent e5c314adf6
commit d121466553
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 39 additions and 1 deletions

View file

@ -33,7 +33,7 @@ Featured in [PV Magazine](https://www.pv-magazine.de/2022/01/14/mit-open-source-
- **sunspec**-compatible inverter or home battery devices - **sunspec**-compatible inverter or home battery devices
- **mbmd**-compatible devices, see [volkszaehler/mbmd](https://github.com/volkszaehler/mbmd#supported-devices) for a complete list - **mbmd**-compatible devices, see [volkszaehler/mbmd](https://github.com/volkszaehler/mbmd#supported-devices) for a complete list
- [vehicle](https://docs.evcc.io/en/docs/devices/vehicles) integrations (state of charge, remote charge, battery and preconditioning status): - [vehicle](https://docs.evcc.io/en/docs/devices/vehicles) integrations (state of charge, remote charge, battery and preconditioning status):
- Aiways, Audi, BMW, Citroën, Dacia, DS, Fiat, Ford, Hyundai, Jeep, Kia, Mercedes-Benz, MG, Mini, Nissan, NIU, Opel, Peugeot, Polestar, Renault, Seat, Skoda, Smart, Subaru, Tesla, Toyota, Volkswagen, Volvo, Zero Motorcycles. [Read more.](https://docs.evcc.io/en/docs/devices/vehicles) - Aiways, Audi, BMW, Citroën, Dacia, DS, Fiat, Ford, Genesis, Hyundai, Jeep, Kia, Mercedes-Benz, MG, Mini, Nissan, NIU, Opel, Peugeot, Polestar, Renault, Seat, Skoda, Smart, Subaru, Tesla, Toyota, Volkswagen, Volvo, Zero Motorcycles. [Read more.](https://docs.evcc.io/en/docs/devices/vehicles)
- **services:** OVMS, Tronity, evNotify, ioBroker.bmw, mg2mqtt, mz2mqtt, TeslaLogger, TeslaMate, Tessi, volvo2mqtt - **services:** OVMS, Tronity, evNotify, ioBroker.bmw, mg2mqtt, mz2mqtt, TeslaLogger, TeslaMate, Tessi, volvo2mqtt
- [plugins](https://docs.evcc.io/en/docs/devices/plugins) for integrating with any charger, smartswitch, heatpump, electric heater, meter, solar- / battery-inverter or vehicle: - [plugins](https://docs.evcc.io/en/docs/devices/plugins) for integrating with any charger, smartswitch, heatpump, electric heater, meter, solar- / battery-inverter or vehicle:
- Modbus, HTTP, MQTT, JavaScript, WebSocket, Go and shell scripts - Modbus, HTTP, MQTT, JavaScript, WebSocket, Go and shell scripts

View file

@ -0,0 +1,18 @@
template: genesis
products:
- brand: Genesis
description:
generic: Bluelink
requirements:
description:
en: |
Instead of your account's password, the password field needs to be filled with a `refresh_token` ([instructions](https://github.com/evcc-io/evcc/wiki/Hyundai-Kia:-Refresh-Token)).
de: |
Anstelle des Passworts muss in das Passwort-Feld ein `refresh_token` eingetragen werden ([Anleitung](https://github.com/evcc-io/evcc/wiki/Hyundai-Kia:-Refresh-Token)).
params:
- preset: vehicle-base
- preset: vehicle-language
render: |
type: genesis
{{ include "vehicle-base" . }}
{{ include "vehicle-language" . }}

View file

@ -20,6 +20,7 @@ type Bluelink struct {
func init() { func init() {
registry.Add("kia", NewKiaFromConfig) registry.Add("kia", NewKiaFromConfig)
registry.Add("hyundai", NewHyundaiFromConfig) registry.Add("hyundai", NewHyundaiFromConfig)
registry.Add("genesis", NewGenesisFromConfig)
} }
// NewHyundaiFromConfig creates a new vehicle // NewHyundaiFromConfig creates a new vehicle
@ -56,6 +57,24 @@ func NewKiaFromConfig(other map[string]any) (api.Vehicle, error) {
return newBluelinkFromConfig("kia", other, settings) return newBluelinkFromConfig("kia", other, settings)
} }
// NewGenesisFromConfig creates a new vehicle
// Constants sourced from hyundai_kia_connect_api (KiaUvoApiEU.py, BRAND_GENESIS, Europe)
func NewGenesisFromConfig(other map[string]any) (api.Vehicle, error) {
settings := bluelink.Config{
URI: "https://prd-eu-ccapi.genesis.com:443",
CCSPServiceID: "3020afa2-30ff-412a-aa51-d28fbe901e10",
CCSPServiceSecret: "FKDdlef2ffdleFEweELFKERiLER2FED21sDdwdgQz6hFESE3",
CCSPApplicationID: "f11f2b86-e0e7-4851-90df-5600b01d8b70",
Cfb: "RFtoRq/vDXJmRndoZaZQyYo3/qFLtVReW8P7utRPcc0ZxOzOELm9mexvviBk/qqIp4A=",
BasicToken: "MzAyMGFmYTItMzBmZi00MTJhLWFhNTEtZDI4ZmJlOTAxZTEwOkZLRGRsZWYyZmZkbGVGRXdlRUxGS0VSaUxFUjJGRUQyMXNEZHdkZ1F6NmhGRVNFMw==",
PushType: "GCM",
LoginFormHost: "https://idpconnect-eu.genesis.com",
Brand: "genesis",
}
return newBluelinkFromConfig("genesis", other, settings)
}
// newBluelinkFromConfig creates a new Vehicle // newBluelinkFromConfig creates a new Vehicle
func newBluelinkFromConfig(brand string, other map[string]any, settings bluelink.Config) (api.Vehicle, error) { func newBluelinkFromConfig(brand string, other map[string]any, settings bluelink.Config) (api.Vehicle, error) {
cc := struct { cc := struct {

View file

@ -140,6 +140,7 @@ func (v *Identity) Login(user, password, language, brand string) (err error) {
switch brand { switch brand {
case "kia": case "kia":
case "hyundai": case "hyundai":
case "genesis":
default: default:
return fmt.Errorf("unknown brand (%s)", brand) return fmt.Errorf("unknown brand (%s)", brand)
} }