no supporter feture fork of evcc.io
Find a file
Michael Geers 7de484969a
Persist targetSoc/Energy, minSoc, targetTime per vehicle, add minSoc to UI (#8115)
* Plugins: make javascript return values more permissive

* Persist targetSoc/Energy, minSoc and target time, remove experimental from minSoc UI

* go generate

* Fix tests

* Update minSoc description

* Store settings by index. Show plan outside pv mode. Add help texts.

* remove slug

* go mock

* lint

* chore: simplify templates (#8304)

* Add e2e tests with playwright (#8123)

* Revert "1p3p: let charger handle session stop/restart (#7723)"

This reverts commit dd787ce52f.

* mazda2mqtt: document vin required (#8319)

* FoxESS: split H1/H3 devices (#7376)

Co-authored-by: premultiply <4681172+premultiply@users.noreply.github.com>

* Translations update from Hosted Weblate (#8124)

* Translated using Weblate (Czech)

Currently translated at 37.3% (99 of 265 strings)

Co-authored-by: Dusan Suja <bc.suja.dusan@googlemail.com>
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/cs/
Translation: evcc/evcc

* Translated using Weblate (Finnish)

Currently translated at 100.0% (265 of 265 strings)

Co-authored-by: Arna Lepikkö <arna.lepikko@telemail.fi>
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/fi/
Translation: evcc/evcc

* Translated using Weblate (German)

Currently translated at 100.0% (265 of 265 strings)

Co-authored-by: ThinkEV <claas@rootdir.de>
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/de/
Translation: evcc/evcc

* Translated using Weblate (Croatian)

Currently translated at 100.0% (265 of 265 strings)

Translated using Weblate (Slovenian)

Currently translated at 100.0% (265 of 265 strings)

Co-authored-by: Žiga Deisinger <ziga@deisinger.si>
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/hr/
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/sl/
Translation: evcc/evcc

* Translated using Weblate (Catalan)

Currently translated at 100.0% (265 of 265 strings)

Co-authored-by: Norbert Poch <npoch@yahoo.com>
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/ca/
Translation: evcc/evcc

* Translated using Weblate (Dutch)

Currently translated at 76.6% (203 of 265 strings)

Translated using Weblate (Dutch)

Currently translated at 74.3% (197 of 265 strings)

Co-authored-by: Ruben Van Boxem <vanboxem.ruben@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/evcc/evcc/nl/
Translation: evcc/evcc

* fix toml

---------

Co-authored-by: Dusan Suja <bc.suja.dusan@googlemail.com>
Co-authored-by: Arna Lepikkö <arna.lepikko@telemail.fi>
Co-authored-by: ThinkEV <claas@rootdir.de>
Co-authored-by: Žiga Deisinger <ziga@deisinger.si>
Co-authored-by: Norbert Poch <npoch@yahoo.com>
Co-authored-by: Ruben Van Boxem <vanboxem.ruben@gmail.com>
Co-authored-by: premultiply <4681172+premultiply@users.noreply.github.com>

* Add OBO Betterman Ion (#8321)

Also aligns heartbeat implementations

* Enphase: add token auth (firmware D7.x.xxx) and grid (#8247)

* Mqtt: fix smartCostLimit topic case (#8328)

* Add ISO15118 vehicle template (#8302)

* Mqtt: simplify setters

* Mqtt: disable message ordering to improve performance

* chore: simplify random state generation

* Porsche: remove deprecated mobile api (#8349)

* Porsche: remove remaining mobile api types

* Cupra: add odometer (#8340)

* chore: refactor go-stylish

* chore: fix stale handler

* mazda2mqtt: longer timeout (#8364)

* chore: pre-process toml

* chore: prevent toml double quotes

* Audi: temporarily switch to etron (#8374)

* Fix nightly build (#8384)

* Update SunSpec templates (#8270)

* Revert "Fix nightly build (#8384)"

This reverts commit 536dbc936c.

* Revert "Add e2e tests with playwright (#8123)"

This reverts commit 0df815729b.

* Easee: update Observation IDs (#8391)

* Easee: handle smartCharging errors (#8389)

* TWC: add non-Tesla vehicle warning (#8329)

* TWC: allow loadpoint to wakeup vehicle (#8284)

* chore: use gridx consts

* Fix ISO15118 vehicle (#8402)

Such vehicles would be reported as `(Offline)` previously, as no Soc can be fetched and thus needs to behave as the `offline` template.

The SoC is fetched via the charger, so hardcode it to 0 in here

* Modbus: add coils  (#8385)

* OpenEVSE: fix api (#8415)

* chore: refactor offline vehicles (#8404)

* Easee: wait for api confirmation (#8307)

* Revert "Easee: wait for api confirmation (#8307)"

This reverts commit ce0e4277aa.

* automatically switch session log energy unit (#8371)

Show the charged energy in the session log table and details in Wh for
values below 1 kWh and in kWh for larger values

* Fix nightly/release + integration workflow  (#8450)

* Revert "Add e2e tests with playwright (#8123)"

This reverts commit 0df815729b.

* Revert "Revert "Add e2e tests with playwright (#8123)""

This reverts commit 2299306954.

* fix nightly/release

* fix nightly/release

* fix nightly/release

---------

Co-authored-by: andig <cpuidle@gmx.de>

* chore: no integration on nightly

* chore: no integration on nightly

* chore: no integration on nightly

* Sessions: filter, monthly sums, paging (#8278)

* fmt

* Update i18n/en.toml

Co-authored-by: Simon Riepl <43091717+savus4@users.noreply.github.com>

* Use exp/slices

* Use mux consistently

* add integration tests

---------

Co-authored-by: andig <cpuidle@gmx.de>
Co-authored-by: C64Axel <33828760+C64Axel@users.noreply.github.com>
Co-authored-by: premultiply <4681172+premultiply@users.noreply.github.com>
Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Dusan Suja <bc.suja.dusan@googlemail.com>
Co-authored-by: Arna Lepikkö <arna.lepikko@telemail.fi>
Co-authored-by: ThinkEV <claas@rootdir.de>
Co-authored-by: Žiga Deisinger <ziga@deisinger.si>
Co-authored-by: Norbert Poch <npoch@yahoo.com>
Co-authored-by: Ruben Van Boxem <vanboxem.ruben@gmail.com>
Co-authored-by: salz3n <79696598+salz3n@users.noreply.github.com>
Co-authored-by: Daniel Paschke <paschdan@gmail.com>
Co-authored-by: Andreas Linde <42185+DerAndereAndi@users.noreply.github.com>
Co-authored-by: lex777777 <84906358+lex777777@users.noreply.github.com>
Co-authored-by: Oscar <OAltr@users.noreply.github.com>
Co-authored-by: Michael Heß <GrimmiMeloni@users.noreply.github.com>
Co-authored-by: RTTTC <94727758+RTTTC@users.noreply.github.com>
Co-authored-by: kscholty <47229207+kscholty@users.noreply.github.com>
Co-authored-by: Jan Alexander <jan.alexander@posteo.de>
Co-authored-by: Simon Riepl <43091717+savus4@users.noreply.github.com>
2023-08-02 15:43:00 +02:00
.github chore: simplify build/integration workflow (#8512) 2023-06-18 13:49:49 +02:00
api API: extend charger status mapping (#9142) 2023-07-30 22:19:34 +02:00
assets Persist targetSoc/Energy, minSoc, targetTime per vehicle, add minSoc to UI (#8115) 2023-08-02 15:43:00 +02:00
charger Easee: wait for op_mode change when pausing/resuming (#9156) 2023-07-30 17:14:45 +02:00
cmd cmd/vehicle: error if vehicle creation has failed (#9130) 2023-07-26 21:00:18 +02:00
core Persist targetSoc/Energy, minSoc, targetTime per vehicle, add minSoc to UI (#8115) 2023-08-02 15:43:00 +02:00
detect chore: use gridx consts 2023-06-11 11:29:52 +02:00
docker/bin Update entrypoint.sh (#6306) 2023-02-18 21:30:26 +01:00
docs chore: add some docs 2022-11-05 17:35:25 +01:00
hems Add smartCostLimit to site (#6732) 2023-03-19 17:45:34 +01:00
i18n Persist targetSoc/Energy, minSoc, targetTime per vehicle, add minSoc to UI (#8115) 2023-08-02 15:43:00 +02:00
meter Homewizard: add cache (#9158) 2023-07-30 14:24:24 +02:00
mock Add dedicated co2 tariff (#8089) 2023-05-31 09:19:36 +02:00
packaging chore: prevent toml double quotes 2023-06-09 17:45:25 +02:00
patch Add support for Elli chargers (#4207) 2022-09-30 10:52:17 +02:00
provider Mqtt: fix setter not cleared 2023-07-18 18:43:34 +02:00
push Simplify template handling and trim trailing spaces (#7144) 2023-04-01 10:32:49 +02:00
server Mqtt: simplify setters 2023-06-07 10:07:38 +02:00
tariff Tariffs: retry download with backoff (#8833) 2023-07-27 09:31:40 +02:00
templates Add Jeep (#9140) 2023-07-28 11:11:20 +02:00
tests Persist targetSoc/Energy, minSoc, targetTime per vehicle, add minSoc to UI (#8115) 2023-08-02 15:43:00 +02:00
util chore: fix token refresh 2023-07-27 20:10:39 +02:00
vehicle Bluelink: calculate stamps locally (#9170) 2023-07-30 11:11:06 +02:00
.dockerignore chore: ignore zipped images 2022-10-17 20:11:28 +02:00
.editorconfig Revert undesired markdown changes 2021-02-24 11:53:00 +01:00
.eslintrc.js Replace storybook with histoire (#5154) 2022-11-14 17:24:32 +01:00
.gitignore Fix nightly/release + integration workflow (#8450) 2023-06-13 23:12:22 +02:00
.golangci.yml chore: upgrade to Go 1.20 (#5993) 2023-02-12 13:18:53 +01:00
.goreleaser-nightly.yml chore: disable cgo 2023-06-02 12:58:44 +02:00
.goreleaser.yml chore: update deprecated GoReleaser tap use (#8859) 2023-07-09 11:24:21 +02:00
.prettierrc.js chore: upgrade npm dependencies (#8882) 2023-07-09 19:49:09 +02:00
Dockerfile chore: update base image to alpine 3.18 (#8182) 2023-05-27 11:33:58 +02:00
evcc.dist.yaml chore: set 30s default interval 2023-07-17 10:29:14 +02:00
go.mod NRG: upgrade muka/go-bluetooth to 5.64 for Debian 12 2023-07-09 12:19:43 +02:00
go.sum NRG: upgrade muka/go-bluetooth to 5.64 for Debian 12 2023-07-09 12:19:43 +02:00
histoire.config.js Add option to show current price and co2 info (#6048) 2023-02-06 21:57:00 +01: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 chore: upgrade to Go 1.20 (#5993) 2023-02-12 13:18:53 +01:00
Makefile Ocpp: reduce timeouts during testing (#7342) 2023-04-10 17:05:20 +02:00
package-lock.json Core: Bump semver from 5.7.1 to 5.7.2 (#8906) 2023-07-11 08:57:32 +02:00
package.json chore: upgrade npm dependencies (#8882) 2023-07-09 19:49:09 +02:00
playwright.config.js Sessions: filter, monthly sums, paging (#8278) 2023-06-14 08:57:09 +02:00
README.md Add npm install to Contribute in README (#8936) 2023-07-12 14:21:02 +02:00
schema.json Add battery settings UI (#7802) 2023-05-08 18:11:31 +02:00
tools.go chore: upgrade unmaintained alvaroles/enumer (#4092) 2022-08-10 17:30:36 +02:00
vite.config.js chore: upgrade npm dependencies (#8664) 2023-06-29 11:25:12 +02:00
vitest.config.js Add Target Charge Plan Visualisation (#5860) 2023-01-29 21:53:37 +01:00

evcc 🚘☀️

Build Status Code Quality Translation 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), Siemens, TechniSat (Technivolt), Tinkerforge Warp Charger, Ubitricity (Heinz), Vestel, Wallbe, Webasto (Live), Mobile Charger Connect and many more
    • experimental EEBus support (Elli, PMCC)
    • experimental OCPP support
    • Build-your-own: Phoenix Contact (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 as OLC)
  • REST and MQTT APIs for integration with home automation systems
  • Add-ons for HomeAssistant and OpenHAB (not maintained by the evcc core team)

Getting Started

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

Contribute

To build evcc from source, Go 1.20 and Node 18 are required.

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

make install-ui
make ui
make install
make
./evcc

UI development

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

Integration tests

We use Playwright for end-to-end integration tests. They start a local evcc instance with different configuration yamls and prefilled databases. To run them, you have to do a local build first.

make ui build
npm run playwright

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 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.

Adding or modifying translations

evcc already includes many translations for the UI. Weblate Hosted is used to maintain all languages. Feel free to add more languages or verify and edit existing translations. Weblate will automatically push all modifications on a regular base to the evcc repository.

Weblate Hosted Languages

https://hosted.weblate.org/projects/evcc/evcc/

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 otherwise 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 sponsor.evcc.io.