Skip to content

PanNwt/evcc-config

 
 

Repository files navigation

Configuration examples for EVCC

Build Status

Configuration examples for the EVCC EV Charge Controller.

EVCC supports a growing list of chargers, meters and vehicles. See below for detailed configuration. Additional devices can be configured using the generic device type and related plugins.

Contributing

If you want to contribute configurations to this repository please open a Pull Request ("PR"). PRs should contain:

Chargers

Meters

Vehicles

Details

Meters

Discovergy

- type: discovergy
  user: demo@discovergy.com 
  password: demo # password 
  meter: 1ESY1161229886

E3DC (Battery Meter)

- type: custom
  power:
    source: modbus
    uri: e3dc.fritz.box:502
    id: 1 # ModBus slave id
    register: # manual register configuration
      address: 40069
      type: holding
      decode: int32s
    scale: -1 # reverse direction
  soc:
    source: modbus
    uri: e3dc.fritz.box:502
    id: 1 # ModBus slave id
    register: # manual register configuration
      address: 40082
      type: holding
      decode: uint16

E3DC (Grid Meter)

- type: custom
  power:
    source: modbus
    uri: e3dc.fritz.box:502
    id: 1 # ModBus slave id
    register: # manual register configuration
      address: 40073
      type: holding
      decode: int32s

E3DC (PV Meter)

- type: custom
  power:
    source: modbus
    uri: e3dc.fritz.box:502
    id: 1 # ModBus slave id
    register: # manual register configuration
      address: 40067 # (40068 - 1) "Photovoltaikleistung in Watt"
      type: holding
      decode: int32s

Eastron SDM Modbus Meter (RTU)

- type: modbus
  model: sdm
  device: /dev/ttyUSB0 # serial port
  baudrate: 9600
  comset: 8N1
  id: 1
  energy: Sum # only required for charge meter usage

Eastron SDM Modbus Meter (RTU-over-TCP)

- type: modbus
  model: sdm
  uri: 192.0.2.2:502
  rtu: true # serial modbus rtu (rs485) device connected using simple ethernet adapter
  id: 1
  energy: Sum # this assignment is only required for charge meter usage

Fronius Solar API V1 (Battery Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2/solar_api/v1/GetPowerFlowRealtimeData.fcgi
    jq: if .Body.Data.Site.P_Akku == null then 0 else .Body.Data.Site.P_Akku end
  soc:
    source: http
    uri: http://192.0.2.2/solar_api/v1/GetPowerFlowRealtimeData.fcgi
    jq: .Body.Data.Inverters."1".SOC

Fronius Solar API V1 (Grid Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2/solar_api/v1/GetPowerFlowRealtimeData.fcgi
    jq: if .Body.Data.Site.P_Grid == null then 0 else .Body.Data.Site.P_Grid end

Fronius Solar API V1 (PV Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2/solar_api/v1/GetPowerFlowRealtimeData.fcgi
    jq: if .Body.Data.Site.P_PV == null then 0 else .Body.Data.Site.P_PV end

Fronius Symo GEN24 Plus (Battery Meter)

- type: custom
  power:
    source: calc
    add:
    - source: modbus
      model: sunspec
      uri: 192.0.2.2:502
      id: 1
      value: 160:3:DCW # mppt 3 charge
      scale: -1
    - source: modbus
      model: sunspec
      uri: 192.0.2.2:502
      id: 1
      value: 160:4:DCW # mppt 4 discharge
  soc:
    source: modbus
    model: sunspec
    uri: 192.0.2.2:502
    id: 1
    value: ChargeState

Fronius Symo GEN24 Plus (Grid Meter)

- type: modbus
  model: sunspec
  uri: 192.0.2.2:502
  id: 200
  power: 213:W # sunspec meter

Fronius Symo GEN24 Plus (PV Meter)

- type: custom
  power:
    source: calc
    add:
    - source: modbus
      model: sunspec
      uri: 192.0.2.2:502
      id: 1
      value: 160:1:DCW # mpp 1 pv
    - source: modbus
      model: sunspec
      uri: 192.0.2.2:502
      id: 1
      value: 160:2:DCW # mpp 2 pv

Generic (MQTT)

- type: custom
  power: # power reading
    source: mqtt # use mqtt plugin
    topic: mbmd/sdm1-1/Power # mqtt topic
    timeout: 10s # don't use older values

Generic (Script)

- type: custom
  power:
    source: script # use script plugin
    cmd: /bin/sh -c "echo 0" # actual command
    timeout: 3s # kill script after 3 seconds

Generic SunSpec 3-phase meter via inverter (Grid Meter)

- type: modbus
  model: sunspec
  uri: 192.0.2.2:502
  id: 1
  power: 203:W # sunspec meter

Generic SunSpec battery inverter (Battery Meter)

- type: modbus
  uri: 192.0.2.2:502
  id: 1
  soc: ChargeState

Generic SunSpec PV inverter (PV Meter)

- type: modbus
  uri: 192.0.2.2:502
  id: 1

Kostal Energy Meter via inverter (Grid Meter)

- type: custom
  power:
    source: modbus # use ModBus plugin
    uri: 192.0.2.2:1502 # inverter port
    id: 71
    register: # manual non-sunspec register configuration
      address: 252 # (see ba_kostal_interface_modbus-tcp_sunspec.pdf)
      type: holding
      decode: float32

Kostal Hybrid Inverter (Battery Meter)

- type: modbus
  uri: 192.0.2.2:1502
  id: 71
  power: 802:W
  soc: 802:SoC

Kostal Inverter (PV Meter)

- type: modbus
  uri: 192.0.2.2:1502
  id: 71

Kostal Smart Energy Meter (Grid Meter)

- type: modbus
  uri: 192.0.2.2:502
  id: 71

Multiple DC MPP strings combined (PV Meter)

- type: custom
  power:
    source: calc
    add:
    - source: modbus
      model: sunspec
      value: 160:1:DCW # SunSpec Model 160 MPP string 1 DCW
      uri: 192.0.2.2:502
      id: 1
    - source: modbus
      model: sunspec
      value: 160:2:DCW # SunSpec Model 160 MPP string 2 DCW
      uri: 192.0.2.2:502
      id: 1

Multiple PV inverters combined (PV Meter)

- type: custom
  power:
    source: calc
    add:
    - source: modbus
      model: sunspec
      uri: 192.0.2.2:502
      id: 1
    - source: modbus
      model: sunspec
      uri: 192.0.2.3:502
      id: 1

SMA Sunny Home Manager / Energy Meter (Speedwire)

- type: sma
  uri: 192.0.2.2

SMA Sunny Island / Sunny Boy Storage (Battery Meter)

- type: modbus
  uri: 192.0.2.2:502
  id: 126
  soc: ChargeState

SMA SunnyBoy / TriPower / other PV-inverter (PV Meter)

- type: modbus
  uri: 192.0.2.2:502
  id: 126

SolarEdge Energy Meter via inverter (Grid Meter)

- type: custom
  power:
    source: modbus
    model: sunspec
    uri: 192.0.2.2:502 # Port 502 (SetApp) or 1502 (LCD)
    id: 1
    subdevice: 1 # Metering device
    value: 203:W
    scale: -1

SolarEdge Hybrid Inverter (PV Meter)

- type: custom
  power:
    source: calc
    add:
    - source: modbus
      model: sunspec
      uri: 192.0.2.2:502 # Port 502 (SetApp) or 1502 (LCD)
      id: 1
      value: 103:DCW
    - source: modbus
      uri: 192.0.2.2:502 # Port 502 (SetApp) or 1502 (LCD)
      id: 1
      register:
        address: 62836 # Battery 1 Instantaneous Power
        type: holding
        decode: float32s

SolarEdge StorEdge (Battery Meter)

- type: custom
  power:
    source: modbus
    uri: 192.0.2.2:502 # Port 502 (SetApp) or 1502 (LCD)
    id: 1
    register:
      address: 62836 # Battery 1 Instantaneous Power
      type: holding
      decode: float32s
    scale: -1
  soc:
    source: modbus
    uri: 192.0.2.2:502 # Port 502 (SetApp) or 1502 (LCD)
    id: 1
    register:
      address: 62852 # Battery 1 State of Energy (SOE)
      type: holding
      decode: float32s

Solarlog (Grid Meter)

- type: custom
  power:
    source: modbus
    uri: 192.0.2.2:502 # IP address of the SolarLog device and ModBus port address
    id: 1
    register:
      address: 3518
      type: input
      decode: uint32s

Solarlog (PV Meter)

- type: custom
  power:
    source: modbus
    uri: 192.0.2.2:502 # IP address of the SolarLog  device and ModBus port address
    id: 1
    register:
      address: 3502
      type: input
      decode: uint32s

Solarwatt MyReserve (Battery Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2/rest/kiwigrid/wizard/devices # EnergyManager
    jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | .tagValues.PowerConsumedFromStorage.value - .tagValues.PowerBuffered.value
  soc:
    source: http
    uri: http://192.0.2.2/rest/kiwigrid/wizard/devices # EnergyManager
    jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.solarwatt.MyReserve") | .tagValues.StateOfCharge.value

Solarwatt MyReserve (Grid Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2/rest/kiwigrid/wizard/devices # EnergyManager
    jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | .tagValues.PowerConsumedFromGrid.value - .tagValues.PowerOut.value

Solarwatt MyReserve (PV Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2/rest/kiwigrid/wizard/devices # EnergyManager
    jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | .tagValues.PowerProduced.value

Sonnenbatterie Eco/10 (Battery Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2:8080/api/v1/status
    jq: .Pac_total_W
  soc:
    source: http
    uri: http://192.0.2.2:8080/api/v1/status
    jq: .USOC

Sonnenbatterie Eco/10 (Grid Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2:8080/api/v1/status
    jq: .GridFeedIn_W
    scale: -1 # reverse direction

Sonnenbatterie Eco/10 (PV Meter/ HTTP)

- type: custom
  power:
    source: http
    uri: http://192.0.2.2:8080/api/v1/status
    jq: .Production_W

Tesla Powerwall (Battery Meter)

- type: tesla
  uri: http://192.0.2.2/
  usage: battery

Tesla Powerwall (Grid Meter)

- type: tesla
  uri: http://192.0.2.2/
  usage: grid

Tesla Powerwall (PV Meter)

- type: tesla
  uri: http://192.0.2.2/
  usage: pv

vzlogger (HTTP)

- type: custom
  power: # power reading
    source: http # use http plugin
    uri: http://demo.volkszaehler.org/api/data/<uuid>.json?from=now
    jq: .data.tuples[0][1] # parse response json

vzlogger (Push Server/ Websocket)

- type: custom
  power:
    source: ws # use websocket plugin
    uri: ws://192.0.2.2:8082/socket
    jq: .data | select(.uuid=="<uuid>") .tuples[0][1] # parse response json
    timeout: 30s
    scale: 1

vzlogger (split import/export channels)

- type: custom
  power:
    source: calc # use calc plugin
    add:
    - source: http # import channel
      uri: http://demo.volkszaehler.org/api/data/<import-uuid>.json?from=now
      jq: .data.tuples[0][1] # parse response json
    - source: http # export channel
      uri: http://demo.volkszaehler.org/api/data/<export-uuid>.json?from=now
      jq: .data.tuples[0][1] # parse response json
      scale: -1 # export must result in negative values

Chargers

EVSE DIN (Modbus RTU)

- type: simpleevse
  device: /dev/ttyUSB0 # serial RS485 interface

EVSE DIN (Modbus/TCP)

- type: simpleevse
  uri: 192.0.2.2:502 # Modbus/TCP converter adress

EVSE-Wifi

- type: evsewifi
  uri: http://192.0.2.2

FritzDECT

- type: fritzdect
  uri: https://fritz.box # FRITZ!Box ip address (local)
  user: xxxxxxxxxx # FRITZ!Box username (Has to have Smart Home privileges!)
  password: yyyyyyyyyy # FRITZ!Box password
  ain: '007788992233' # switch actor identification number without blanks (see AIN number on switch sticker)
  standbypower: 15 # treat as charging above this power

Generic

- type: custom
  status: # charger status A..F
    source: ...
    # ...
  enabled: # charger enabled state (true/false or 0/1)
    source: ...
    # ...
  enable: # set charger enabled state
    source: ...
    # ...
  maxcurrent: # set charger max current
    source: ...
    # ...

Generic (MQTT)

- type: custom
  status: # charger status A..F
    source: mqtt
    topic: some/topic1
  enabled: # charger enabled state (true/false or 0/1)
    source: mqtt
    topic: some/topic2
  enable: # set charger enabled state
    source: script
    cmd: /bin/sh -c "echo ${enable}"
  maxcurrent: # set charger max current
    source: script
    cmd: /bin/sh -c "echo ${maxcurrent}"

go-eCharger

- type: go-e
  uri: http://192.0.2.2 # go-e ip address (local)

go-eCharger (Cloud)

- type: go-e
  token: 4711c # go-e cloud API token
  cache: 10s # go-e cloud API cache duration

i-CHARGE CION (Modbus RTU-over-TCP)

- type: custom
  status:
    source: modbus
    uri: 192.0.2.2:502
    rtu: true # Modbus over TCP
    id: 1
    register: # manual register configuration
        address: 139 # CP-Status
        type: holding
        decode: uint16
  enabled:
    source: modbus
    uri: 192.0.2.2:502
    rtu: true # Modbus over TCP
    id: 1 
    register: # manual register configuration
      address: 100 # Zustand
      type: holding
      decode: uint16
  enable:
    source: modbus
    uri: 192.0.2.2:502
    rtu: true # Modbus over TCP
    id: 1
    register: # manual register configuration
      address: 100 # ein / aus
      type: writesingle
      decode: uint16
  maxcurrent:
    source: modbus
    uri: 192.0.2.2:502
    rtu: true # Modbus over TCP
    id: 1
    register: # manual register configuration
      address: 127 # Strom max
      type: writesingle
      decode: uint16

KEBA Connect

- type: keba
  uri: 192.0.2.2
  rfid:
    tag: 765765348 # RFID tag, see `evcc charger` to show tag

Mobile Charger Connect (Audi, Bentley, Porsche)

- type: mcc
  uri: https://192.0.2.2
  password: # home user password

NRGKick BT (Bluetooth)

- type: nrgkick-bluetooth
  mac: 00:1E:C0:XX:XX:XX # BT device MAC address (sudo hcitool lescan)
  pin: 1234 # App PIN number (write protection, ignore leading zeros)

NRGKick Connect

- type: nrgkick-connect
  uri: http://192.0.2.2
  mac: 00:1E:C0:XX:XX:XX # BT device MAC address (sudo hcitool lescan)
  password: # password

openWB (MQTT)

- type: openwb
  broker: 192.0.2.2 # openWB IP
  id: 1 # loadpoint id

Phoenix EM-CP-PP-ETH Controller (Modbus/TCP)

- type: phoenix-em-eth
  uri: 192.168.0.8:502
  meter:
    power: true    # charge meter connected to controller
    energy: true   # charge meter connected to controller
    currents: true # charge meter connected to controller

Phoenix EV-ETH Controller (Modbus/TCP)

- type: phoenix-ev-eth
  uri: 192.168.0.8:502
  meter:
    power: true    # charge meter connected to controller
    energy: true   # charge meter connected to controller
    currents: true # charge meter connected to controller

Phoenix EV-SER Controller (Modbus RTU)

- type: phoenix-ev-ser
  device: /dev/ttyUSB0
  baudrate: 9600 # configurable (S2/DIP 1)
  comset: 8N1
  id: 1 # configurable (S2/DIP 2–6)

Shelly

- type: shelly
  uri: http://192.168.xxx.xxx  # shelly device ip address (local)
  channel: 0  # shelly device relay channel 
  standbypower: 15  # treat as charging above this power

Tasmota

- type: tasmota
  uri: http://192.168.xxx.xxx # tasmota device ip address (local)
  # user: xxxx # user, (optional) in case user + password are defined
  # password: xxxxx #  (optional) in case user + password are defined
  standbypower: 15 # treat as charging above this power

TinkerForge WARP Charger

- type: warp
  broker: 192.0.2.2:1883
  topic: warp
  useMeter: true # WARP Charger Pro
  timeout: 30s

TP-LINK Smart Plug

- type: tplink
  uri: 192.0.2.2 # TP-LINK Smart Plug ip address (local)
  standbypower: 15 # treat as charging above this power

Wallbe (Eco, Pro)

- type: wallbe
  uri: 192.168.0.8:502 # TCP ModBus address

Wallbe (pre 2019 EV-CC-AC1 controller)

- type: wallbe
  uri: 192.168.0.8:502 # TCP ModBus address
  legacy: true # enable for older Wallbes with Phoenix EV-CC-AC1-M3-CBC-RCM controller

Vehicles

Audi (eTron etc)

- type: audi
  title: eTron # display name for UI
  capacity: 14 # kWh
  user: # user
  password: # password
  vin: WAUZZZ... # optional

BMW (i3)

- type: bmw
  title: i3 # display name for UI
  capacity: 65 # kWh
  user: # user
  password: # password
  vin: WBMW... # optional

- type: custom
  title: My Car # display name for UI
  capacity: 39 # kWh
  charge:
    type: http
    uri: https://app.evnotify.de/soc?akey=AKEY&token=1234567890abcdef # evNotify Server + AKEY
    method: GET
    jq: .soc_display
  cache: 5m # cache duration

Ford (Kuga, Mustang, etc)

- type: ford
  title: Kuga # display name for UI
  capacity: 10 # kWh
  user: # user
  password: # password
  vin: WF0FXX... # optional

Generic

- type: custom
  title: Mein Auto # display name for UI
  capacity: 50 # kWh
  charge:
    source: ...
    # ...

Generic (Script)

- type: custom
  title: Auto # display name for UI
  capacity: 50 # kWh
  charge:
    source: script # use script plugin
    cmd: /bin/sh -c "echo 50" # actual command
    timeout: 3s # kill script after 3 seconds
  status: # optional
    source: script # use script plugin
    cmd: /bin/sh -c "echo B" # actual command 
    timeout: 3s # kill script after 3 seconds
  range: # optional
    source: script # use script plugin
    cmd: /bin/sh -c "echo 123" # actual command
    timeout: 3s # kill script after 3 seconds
  cache: 5m # cache duration

Generic EV without SoC (Javascript)

- type: custom
  title: My electric vehicle # display name for UI
  capacity: 10 # kWh
  charge:
    source: js
    script: 95 // vehicle SoC in %

Hyundai (Kona, Ioniq)

- type: hyundai
  title: Kona # display name for UI
  capacity: 64 # kWh
  user: # user
  password: # password

Kia (e-Niro, e-Soul, etc)

- type: kia
  title: e-Niro # display name for UI
  capacity: 64 # kWh
  user: # user
  password: # password

Nissan (Leaf)

- type: nissan
  title: Leaf # display name for UI
  capacity: 60 # kWh
  user: # user
  password: # password

NIU E-Scooter

- type: niu
  title: NIU E-Scooter # display name for UI
  capacity: 4 # kWh
  user: xxxxxxx # NIU app user
  password: xxxxxx # NIU app password
  serial: NXXXXXXXXXXXXXXX # NIU E-Scooter serial number like shown in app 

Porsche

- type: porsche
  title: Taycan # display name for UI
  capacity: 83 # kWh
  user: # user
  password: # password
  vin: WP...

Renault (Zoe)

- type: renault
  title: Zoe # display name for UI
  capacity: 60 # kWh
  user: # user
  password: # password
  vin: WREN... # optional

Tesla

- type: tesla
  title: Model S # display name for UI
  capacity: 90 # kWh
  user: # email
  password: # password
  vin: WTSLA...

VW (e-Up, e-Golf, etc)

- type: vw
  title: Golf # display name for UI
  capacity: 10 # kWh
  user: # user
  password: # password
  vin: WVWZZZ... # optional

VW ID (ID.3, ID.4, but also e-Golf, e-Up)

- type: id
  title: ID.3 # display name for UI
  capacity: 50 # kWh
  user: # user
  password: # password
  vin: WVWZZZ... # optional

About

Configuration templates for EVCC

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.6%
  • Makefile 0.4%