Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
naltatis committed Sep 20, 2021
0 parents commit ee2bacc
Show file tree
Hide file tree
Showing 153 changed files with 14,363 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependencies
/node_modules

# Production
/build

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Website

This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.

### Installation

```
$ yarn
```

### Local Development

```
$ yarn start
```

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

### Build

```
$ yarn build
```

This command generates static content into the `build` directory and can be served using any static contents hosting service.

### Deployment

```
$ GIT_USER=<Your GitHub username> USE_SSH=true yarn deploy
```

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
3 changes: 3 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
12 changes: 12 additions & 0 deletions blog/2019-05-28-first-blog-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
slug: first-blog-post
title: First Blog Post
authors:
name: Gao Wei
title: Docusaurus Core Team
url: https://github.com/wgao19
image_url: https://github.com/wgao19.png
tags: [hola, docusaurus]
---

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
44 changes: 44 additions & 0 deletions blog/2019-05-29-long-blog-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
slug: long-blog-post
title: Long Blog Post
authors: endi
tags: [hello, docusaurus]
---

This is the summary of a very long blog post,

Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.

<!--truncate-->

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
20 changes: 20 additions & 0 deletions blog/2021-08-01-mdx-blog-post.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
slug: mdx-blog-post
title: MDX Blog Post
authors: [slorber]
tags: [docusaurus]
---

Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).

:::tip

Use the power of React to create interactive blog posts.

```js
<button onClick={() => alert('button clicked!')}>Click me!</button>
```

<button onClick={() => alert('button clicked!')}>Click me!</button>

:::
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions blog/2021-08-26-welcome/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
slug: welcome
title: Welcome
authors: [slorber, yangshun]
tags: [facebook, hello, docusaurus]
---

[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).

Simply add Markdown files (or folders) to the `blog` directory.

Regular blog authors can be added to `authors.yml`.

The blog post date can be extracted from filenames, such as:

- `2019-05-30-welcome.md`
- `2019-05-30-welcome/index.md`

A blog post folder can be convenient to co-locate blog post images:

![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)

The blog supports tags as well!

**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
17 changes: 17 additions & 0 deletions blog/authors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
endi:
name: Endilie Yacop Sucipto
title: Maintainer of Docusaurus
url: https://github.com/endiliey
image_url: https://github.com/endiliey.png

yangshun:
name: Yangshun Tay
title: Front End Engineer @ Facebook
url: https://github.com/yangshun
image_url: https://github.com/yangshun.png

slorber:
name: Sébastien Lorber
title: Docusaurus maintainer
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
37 changes: 37 additions & 0 deletions docs/Home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
sidebar_position: 1
---

## Introduction

EVCC is an extensible EV Charge Controller with PV integration. It allows you to to charge your car with optimal usage of your self generated power.

Normally to get this feature, the Wallbox needs to be compatible with a smart home manager in your house. Using EVCC you can make this work with a variety of wallboxes and a variety of power meters and PV inverters that are not designed to work together from their manufacturers. In addition it provides an interface to allow other device not directly supported to be included.

EVCC runs on a computer connected to your local network and with access to the supported devices. How such a device needs to be accessible depends on the supported device or the how the plugin interface is used to provide the according data.

## Getting Started

- Install EVCC either [manually](1.1.-manual-installation) or via [Docker](1.2.-docker-installation)
- [Create and edit the EVCC configuration](1.3.-manual-configuration) to tell EVCC about your setup and how to access it. Use a [sample configuration](7.-sample-configurations) of EVCC users for a starting point.
- Open a web browser and access EVCC to start charging


## Requirements

To run EVCC you must have:

- a supported [wallbox](2.-wallbox)
- a supported [power meter](3.-power-meter) as a Grid meter, or a supported [PV inverter](4.-pv-inverter), or supported [power meter](3.-power-meter) that measures the generated energy by the PV installation.
- optionally: a supported [Battery inverter](5.-battery-inverter)
- a supported [computer](2.-computer-requirements) running EVCC

Optional:

- a supported [Vehicle](6.-vehicle) to get the cars battery current state of charge

This is how you can talk to us:
- Support, Configuration, Device question: https://github.com/andig/evcc/discussions
- Chat about development related topics: [Slack](https://join.slack.com/t/evccgroup/shared_invite/zt-fw52e6lt-tdazCp1LPdPlYuKz3PvTAw) or [Matrix](https://app.element.io/#/room/#evcc-io:matrix.org)

See [getting started](1.-getting-started) for first steps.
4 changes: 4 additions & 0 deletions docs/api/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "API",
"position": 5
}
9 changes: 9 additions & 0 deletions docs/api/http-rest-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# REST API

- `/api/state`: EVCC state (static configuration and dynamic state)
- `/api/loadpoints/<id>/mode`: loadpoint charge mode (writable)
- `/api/loadpoints/<id>/minsoc`: loadpoint minimum SoC (writable)
- `/api/loadpoints/<id>/targetsoc`: loadpoint target SoC (writable)
- `/api/loadpoints/<id>/phases`: loadpoint enabled phases (writable)

Note: to modify writable settings perform a `POST` request appending the value as path segment.
17 changes: 17 additions & 0 deletions docs/api/mqtt-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# MQTT API

The MQTT API follows the REST API's structure, with loadpoint ids starting at `0`:

- `evcc`: root topic
- `evcc/status`: status (`online`/`offline`)
- `evcc/updated`: timestamp of last update
- `evcc/site`: site dynamic state
- `evcc/site/prioritySoC`: battery priority SoC (writable)
- `evcc/loadpoints`: number of available loadpoints
- `evcc/loadpoints/<id>`: loadpoint dynamic state
- `evcc/loadpoints/<id>/mode`: loadpoint charge mode (writable)
- `evcc/loadpoints/<id>/minSoC`: loadpoint minimum SoC (writable)
- `evcc/loadpoints/<id>/targetSoC`: loadpoint target SoC (writable)
- `evcc/loadpoints/<id>/phases`: loadpoint enabled phases (writable)

Note: to modify writable settings append `/set` to the topic for writing.
12 changes: 12 additions & 0 deletions docs/configuration/Config.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from 'react'
import CodeBlock from '@theme/CodeBlock';

export default ({file}) => {
try {
const code = require(`js-yaml-loader!./configs/${file}.yaml`)
return <CodeBlock title={code.name} className="language-yaml">{code.sample}</CodeBlock>
} catch (e) {
console.warn(e);
return <p className="admonition admonition-danger alert alert--danger">Config file <code>./configs/{file}.yaml</code> not found</p>
}
}
4 changes: 4 additions & 0 deletions docs/configuration/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Configuration",
"position": 3
}
62 changes: 62 additions & 0 deletions docs/configuration/battery-inverter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
sidebar_position: 4
---

# Battery Inverter

Any type of battery inverter is supported which conforms to the SunSpec ModBus specification.

## Device specific setup

### E3/DC using Modbus/TCP E3/DC Simple-Mode

Current Modbus/TCP documentation can be found inside german E3/DC portal. Enable Modbus/TCP and select E3DC instead of SunSpec as desired protocol. All registers must be decremented by 1 to work.

Example configuration when running as a charge meter, if you are using the original E3/DC wallbox connected to an E3/DC S10 (not tested):

```yaml
meters:
- name: e3dc-battery
type: default
power:
type: modbus
uri: 192.0.2.1:502 # IP address of E3/DC device, configured port (default is 502)
id: 1 # Configured Modbus Device ID ("Gerät")
register: # manual register configuration
address: 40069 # (40070 - 1) "Batterie-Leistung in Watt (negative Werte = Entladung)"
length: 2
type: holding
decode: int32s
scale: -1 # reverse direction, because the battery meter is expected to deliver negative values when charging and positive values when discharging.
```
### SunSpec-kompatibel, z.B. Sunny Island
```yaml
meters:
- name: battery
type: modbus
model: sunny-island # generic name for sunspec-compatible inverter
uri: 192.168.0.23:502
id: 126

loadpoints:
- name: home
meters:
grid: ...
battery: battery
```
Tested with:
- SMA Sunny Island
### Kostal Plenticore with connected battery (eg. BYD)
```yaml
- name: battery-kostal
type: modbus
power: 802:W
uri: 192.168.178.52:1502
id: 71 # Configured Modbus Device ID ("Gerät")
```
see also [calculation of DC-Power setup with Plenticore and attached battery](https://github.com/andig/evcc/wiki/4.-PV-inverter#kostal-plenticore)
12 changes: 12 additions & 0 deletions docs/configuration/configs/chargers/abl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
type: abl
name: ABL eMH
sample: |
# chargers based on the ABL EVCC2 controller
# chose either locally attached on serial port:
device: /dev/ttyUSB0
baudrate: 38400
comset: 8E1
# or via external TCP-RS485 translator:
# uri: 192.0.2.2:502
id: 1
# an evcc sponsortoken is required for using this charger
15 changes: 15 additions & 0 deletions docs/configuration/configs/chargers/custom.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
type: custom # Configurable charger
name: Generic
sample: |
status: # charger status A..F
source: ...
# ...
enabled: # charger enabled state (true/false or 0/1)
source: ...
# ...
enable: # set charger enabled state (true/false or 0/1)
source: ...
# ...
maxcurrent: # set charger max current (A)
source: ...
# ...
9 changes: 9 additions & 0 deletions docs/configuration/configs/chargers/easee.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
type: easee
name: Easee Home (Cloud API)
sample: |
user: [email protected]
password: *****
charger: EH______
cache: 10s
# an evcc sponsortoken is required for using this charger
5 changes: 5 additions & 0 deletions docs/configuration/configs/chargers/eebus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
type: eebus
name: EEBUS compatible wallbox (e.g. Mobile Charger Connect)
sample: |
ski: 1234-5678-90ab-cdef-1234-5678-90ab-cdef-1234-5678 # Enter the SKI of the wallbox which can usually be found in the wallbox web interface
forcePVLimits: true # use Overload Protection to limit PV charging, if false PV surplus is sent as recommended charging levels to the EV, but this is currently unreliable
4 changes: 4 additions & 0 deletions docs/configuration/configs/chargers/evsewifi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
type: evsewifi
name: EVSE-Wifi
sample: |
uri: http://192.0.2.2
8 changes: 8 additions & 0 deletions docs/configuration/configs/chargers/fritzdect.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
type: fritzdect # FritzDECT
name: FritzDECT
sample: |
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
Loading

0 comments on commit ee2bacc

Please sign in to comment.