no supporter feture fork of evcc.io
Find a file
2022-08-21 13:06:09 +02:00
.github chore: disable broken linter (https://github.com/golangci/golangci-lint-action/issues/545) 2022-08-09 22:25:03 +02:00
.storybook UI: Add Light- and Dark-Mode (#3720) 2022-06-27 16:18:58 +02:00
api chore: rename ProviderLogin api to AuthProvider 2022-08-14 10:25:24 +02:00
assets Fix vehicle options in disconnected state (#4172) 2022-08-21 13:06:09 +02:00
charger Webasto Next: add more diagnosis (#4165) 2022-08-21 12:59:08 +02:00
cmd chore: don't initialise zero-valued structs 2022-08-18 18:33:25 +02:00
core Fix vehicle detection starting when no vehicle connected on startup 2022-08-21 12:49:29 +02:00
detect Require Go 1.18 and use generics (#2116) 2022-04-02 12:47:26 +02:00
dist Fix vehicle options in disconnected state (#4172) 2022-08-21 13:06:09 +02:00
docker chore: align parameter order across dockerfiles 2022-03-31 10:26:27 +02:00
docs updated screenshots 2022-08-19 17:25:58 +02:00
hems chore: don't initialise zero-valued structs 2022-08-18 18:33:25 +02:00
meter chore: don't initialise zero-valued structs 2022-08-18 18:33:25 +02:00
mock chore: rename ChargePhases api to PhaseSwitcher (#4105) 2022-08-13 14:19:18 +02:00
packaging Ask user for old service file (#2966) 2022-04-04 22:06:56 +02:00
provider chore: don't initialise zero-valued structs 2022-08-18 18:33:25 +02:00
push Skip sending empty msg after template rendering (#2720) 2022-02-27 09:57:09 +01:00
server Vehicle: fix detection indicator and add vehicledetect api (#4164) 2022-08-20 11:23:53 +02:00
tariff Ersparnisanzeige (#2105) 2022-01-02 22:58:13 +01:00
templates Webasto Next: add more diagnosis (#4165) 2022-08-21 12:59:08 +02:00
util Fix defaults not applied and improve testability (#3777) 2022-07-22 11:00:33 +02:00
vehicle Dacia: use correct account id per brand (#4166) 2022-08-20 15:13:40 +02:00
.dockerignore Fix CI build 2021-08-23 08:03:27 +02:00
.editorconfig Revert undesired markdown changes 2021-02-24 11:53:00 +01:00
.eslintrc.js Fix: small UI improvements; formatting consistancy, typo, npm deps (#3763) 2022-07-03 16:03:15 +02:00
.gitignore Renault: error if not paired or connected to driver (#3668) 2022-07-03 11:08:06 +02:00
.golangci.yml Yaml: apply prettier (#3023) 2022-03-29 15:54:02 +02:00
.goreleaser-nightly.yml chore: align templates 2022-07-31 17:26:41 +02:00
.goreleaser.yml chore: align templates 2022-07-31 17:26:41 +02:00
.prettierrc.js Refactor UI into single file components (#491) 2020-12-02 08:29:54 +01:00
Dockerfile OCPP: expose web socket port on docker (#4169) 2022-08-21 13:05:34 +02:00
evcc.dist.yaml Signal vehicle detection and send message on guest vehicle (#4139) 2022-08-19 14:13:36 +02:00
go.mod Make vehicles config global instead of per loadpoint (BC) (#3827) 2022-08-13 14:03:53 +02:00
go.sum Make vehicles config global instead of per loadpoint (BC) (#3827) 2022-08-13 14:03:53 +02:00
icon.png Implement basic hardware detection (#435) 2020-11-21 17:13:59 +01:00
jest.config.js Visualisation of Site Energy Flow (#1148) 2021-08-04 14:53:51 +02:00
LICENSE Update license 2021-01-25 17:27:08 +01:00
main.go Fail build when golang version doesn't match (#1734) 2021-10-27 10:01:54 +02:00
Makefile chore: cleanup package build 2022-07-28 09:15:26 +02:00
package-lock.json chore: upgraded bootstrap, vite, eslint deps (#4020) 2022-08-01 20:41:10 +02:00
package.json chore: upgraded bootstrap, vite, eslint deps (#4020) 2022-08-01 20:41:10 +02:00
postcss.config.js UI: Add Light- and Dark-Mode (#3720) 2022-06-27 16:18:58 +02:00
README.md updated screenshots 2022-08-19 17:25:58 +02:00
schema.json Remove loadpoint: vehicles from config schema and examples 2022-08-13 14:16:11 +02:00
tools.go chore: upgrade unmaintained alvaroles/enumer (#4092) 2022-08-10 17:30:36 +02:00
vite.config.js Introduce new UI design; upgrade to Vue 3 tech stack 2022-05-01 21:24:45 +02:00

evcc 🚘☀️

Build Status Code Quality Open in Visual Studio Code OSS hosting by cloudsmith Latest Version

evcc is an extensible EV Charge Controller with PV integration implemented in Go. Featured in PV magazine.

Screenshot

Features

  • simple and clean user interface
  • wide range of supported chargers:
    • ABL eMH1, Alfen (Eve), Bender (CC612/613), cFos (PowerBrain), Daheimladen, Ebee (Wallbox), Ensto (Chago Wallbox), EVSEWifi/ smartWB, Garo (GLB, GLB+, LS4), go-eCharger, HardyBarth (eCB1, cPH1, cPH2), Heidelberg (Energy Control), Innogy (eBox), Juice (Charger Me), KEBA/BMW, Menneckes (Amedio, Amtron Premium/Xtra, Amtron ChargeConrol), NRGkick, openWB (includes Pro), Optec (Mobility One), PC Electric (includes Garo), TechniSat (Technivolt), Ubitricity (Heinz), Vestel, Wallbe, Webasto (Live), Mobile Charger Connect
    • experimental EEBus support (PMCC)
    • experimental OCPP support
    • Build-your-own: Phoenix (includes ESL Walli), EVSE DIN
    • Smart-Home outlets: FritzDECT, Shelly, Tasmota, TP-Link
  • wide range of supported meters for grid, pv, battery and charger:
    • ModBus: Eastron SDM, MPM3PM, ORNO WE, SBC ALE3 and many more, see https://github.com/volkszaehler/mbmd#supported-devices for a complete list
    • Integrated systems: SMA Sunny Home Manager and Energy Meter, KOSTAL Smart Energy Meter (KSEM, EMxx)
    • Sunspec-compatible inverter or home battery devices: Fronius, SMA, SolarEdge, KOSTAL, STECA, E3DC, ...
    • and various others: Discovergy, Tesla PowerWall, LG ESS HOME, OpenEMS (FENECON)
  • vehicle integration (state of charge, remote charge, battery and preconditioning status):
    • Audi, BMW, Citroën, Dacia, Fiat, Ford, Hyundai, Jaguar, Kia, Landrover, Mercedes, Mini, Nissan, Opel, Peugeot, Porsche, Renault, Seat, Smart, Skoda, Tesla, Volkswagen, Volvo
    • Services: OVMS, Tronity
    • Scooters: Niu, Silence
  • plugins for integrating with any charger/ meter/ vehicle:
    • Modbus, HTTP, MQTT, Javascript, WebSockets and shell scripts
  • status notifications using Telegram, PushOver and many more
  • logging using InfluxDB and Grafana
  • granular charge power control down to mA steps with supported chargers (labeled by e.g. smartWB als OLC)
  • REST and MQTT APIs for integration with home automation systems
  • HomeAssistant add-on

Getting Started

You'll find everything you need in our documentation (German).

Contribute

To build evcc from source, Go 1.18 and Node 16 are required.

Build and run go backend. The UI becomes available at http://127.0.0.1:7070/

make
./evcc

For frontend development start the Vue toolchain in dev-mode. Open http://127.0.0.1:7071/ to get to the livelreloading development server. It pulls its data from port 7070 (see above).

npm install
npm run start

Code formatting

We use linters (golangci-lint, Prettier) to keep a coherent source code formatting. It's recommended to use the format-on-save feature of your editor. For VSCode use the Go, Prettier and Veture extension. You can manually reformat your code by running:

make lint
make lint-ui

Changing UI code

To ensure reproducability the build frontend artifacts are part of the source code repository. If you've made changes to frontend code, please make sure to rebuild the production assets before you commit.

make ui

Changing templates

evcc supports a massive amount of different devices. To keep our documentation and website in sync with the latest software the core project (this repo) generates meta-data that's pushed to the docs and evcc.io repository. Make sure to update this meta-data every time you make changes to a templates.

make docs

If you miss one of the above steps Gitub Actions will likely trigger a Porcelain error.

Sponsorship

evcc believes in open source software. We're committed to provide best in class EV charging experience. Maintaining evcc consumes time and effort. With the vast amount of different devices to support, we depend on community and vendor support to keep evcc alive.

While evcc is open source, we would also like to encourage vendors to provide open source hardware devices, public documentation and support open source projects like ours that provide additional value to otherwised closed hardware. Where this is not the case, evcc requires "sponsor token" to finance ongoing development and support of evcc.

The personal sponsor token requires a Github Sponsorship and can be requested at cloud.evcc.io. A sponsor token is valid for one year and can be renewed any time with active sponsorship.

Background

evcc is heavily inspired by OpenWB. However, in 2019, I found OpenWB's architecture slightly intimidating with everything basically global state and heavily relying on shell scripting. On the other side, especially the scripting aspect is one that contributes to OpenWB's flexibility.

Hence, for a simplified and stricter implementation of an EV charge controller, the design goals for evcc were:

  • typed language with ability for systematic testing - achieved by using Go
  • structured configuration - supports YAML-based config file
  • avoidance of feature bloat, simple and clean UI - utilizes Vue.js and Bootstrap
  • containerized operation beyond Raspberry Pi - provide multi-arch Docker Image