# Configuration

> Shows how to set up evcc after installation, preferably in the web interface or alternatively with an evcc.yaml file, and how to test and troubleshoot it.

After installing evcc, you can configure your devices and settings. The recommended way is configuration through the web interface. File-based configuration is also available for advanced users.

## via Web Interface

> **Recommended**
>
> The web interface is the easiest and fastest way to set up evcc.

### Getting Started

1. **Start evcc**: After [installation](/en/installation), start evcc according to the instructions for your system
2. **Open browser**: Go to `http://<your-ip>:7070` (e.g., `http://evcc.local:7070` or `http://192.168.1.50:7070`)
3. **Set administrator password**: On first start, you’ll be prompted to set a password
4. **Setup**: Follow the instructions on the welcome page

### Adding Devices

In the configuration area, you can set up the following components:

* **Charging points & Heaters** (recommended): Wallboxes and heat pumps
* **Grid** (recommended): Grid connection meter, electricity tariffs and curtailment devices – important for proper energy management
* **Solar & Battery** (optional): Solar systems and battery storage
* **Vehicles** (optional): Vehicle integrations for battery capacity and state of charge, enables smarter charging

At least one meter or charging point must be configured for the system to run.

Most devices are addressed via their IP address or hostname. The **IP address or hostname** field suggests the devices found in your network with their address, hostname and vendor. Devices that fit the selected device type are listed under **Matching**, all others under **Other**. Entries that are **already used** by another device are marked. If exactly one device matches, it is filled in automatically. You can always type an address yourself. The search only runs locally while you configure a device. It only finds devices in the same network segment as your evcc instance. Devices in other VLANs or subnets are not found. In a Docker container this requires [host networking](/en/installation/docker#network) (alternatively macvlan), because in bridge mode the container doesn’t see the local network.

### Integrations

Additionally, you can integrate various services and protocols:

* **MQTT**: Data exchange with other systems on the network
* **[Notifications](/en/notifications)**: Push notifications and email alerts
* **InfluxDB**: Data export for long-term analysis
* **EEBus**: Communication with other EEBus devices
* **OCPP Server**: Connection with OCPP-capable wallboxes
* **Circuits**: Circuit monitoring and control
* **Modbus Proxy**: Multiple access to Modbus devices
* **Sunny Home Manager**: Integration via SEMP protocol
* **External Limit**: Power limitation by grid operators (§ 14a EnWG, § 9 EEG) or higher-level energy management systems

### Backup & Restore

The web interface offers integrated data backup functions:

* **Backup**: Download database for data backup
* **Restore**: Restore data from a backup file
* **Reset**: Delete configuration or charging history

## via Configuration File

> **Traditional Method**
>
> This method uses an `evcc.yaml` file and requires knowledge of command line and YAML files. Some new features are only configurable via the web interface.

### From Scratch

You can also create the `evcc.yaml` file manually. Here you’ll find a minimal template that you can use as a starting point.

#### Creation

Copy the content into a new `evcc.yaml` file.

**evcc.yaml**

```yaml
## minimal configuration example


site:
  title: Home # display name for UI
  meters:
    grid: my_grid
    pv:
      - my_pv
    battery:
      - my_battery


# see https://docs.evcc.io/en/docs/reference/configuration/loadpoints
loadpoints:
  - title: Garage # display name for UI
    charger: my_charger # charger
    vehicle: my_car # default vehicle


# meter definitions
# name can be freely chosen and is used as reference when assigning meters to site and loadpoints
# for documentation see https://docs.evcc.io/docs/meters
meters:
  # replace with your real grid meter
  - name: my_grid
    type: template
    template: demo-meter
    usage: grid
    power: -1000 # 1 kW feed-in
  # replace with your real solar system
  - name: my_pv
    type: template
    template: demo-meter
    usage: pv
    power: 4000 # 4 kW production
  # replace with your real battery
  - name: my_battery
    type: template
    template: demo-battery
    usage: battery
    power: -1000 # 1 kW battery charging
    soc: 50 # 50 % state of charge


# replace with your real charger
# see https://docs.evcc.io/docs/chargers
chargers:
  - name: my_charger
    type: template
    template: demo-charger
    status: C # charging
    power: 2000 # 2 kW charging power
    enabled: true # optional


# replace with your real vehicle (optional)
# see https://docs.evcc.io/docs/vehicles
vehicles:
  - name: my_car
    type: template
    template: offline
    title: blue e-Golf
    capacity: 50 # in kWh


# enter your real grid tariff and feed-in price
# see https://docs.evcc.io/docs/tariffs
tariffs:
  currency: EUR
  grid:
    type: fixed
    price: 0.29 # EUR/kWh
  feedin:
    type: fixed
    price: 0.10 # EUR/kWh
```

You can start evcc with this file. Use the respective instructions for your system.

#### Testing

Restart evcc and open your browser at `http://<evcc-ip>:7070`. Check if the values are plausible. If you receive an error message, check your entries.

Often these are indentation or typing errors. The file is written in [YAML format](https://wikipedia.org/wiki/YAML). You can use the online tool [YAML Lint](https://www.yamllint.com/) to check if your file follows the correct format.

#### Customizing

The file only contains demo devices (`demo-charger`, `demo-meter`, `demo-battery`, `offline`). These have fixed values. Go through the file step by step and adjust the values to your setup:

* Replace the demo devices with your own [meters](/en/meters), [wallboxes](/en/chargers), and [vehicles](/en/vehicles).
* If you don’t have a battery, you can remove that section completely.
* If you have multiple solar systems, you can duplicate the corresponding sections.
* If you have multiple wallboxes, copy the loadpoint and charger sections and adjust the names.

Note that the individual entries reference each other. In the `site` entry (`meters`), the meters (`grid`, `pv`, `battery`) are assigned to their roles. The `name` field is always used for this. Names must therefore be unique.

Make these changes step by step if possible. Restart evcc after each change and check the output in the browser. This way you’ll quickly notice if you’ve made a mistake.

#### Further Information

The [evcc.dist.yaml](https://github.com/evcc-io/evcc/blob/master/evcc.dist.yaml) in the main project contains a complete list of all possible configuration options. More detailed explanations of the options can be found under [Reference → evcc.yaml](/en/reference/configuration).

If you want to see a dynamic demo, you can also look at the contents of the [demo.yaml](https://github.com/evcc-io/evcc/blob/master/cmd/demo.yaml) file. This file contains JavaScript-based demo devices that simulate limited functionality. It is also used for [demo.evcc.io](https://demo.evcc.io).

To run your own installation in demo mode, just start evcc with the parameter `--demo`. See [CLI Reference](/en/reference/cli/evcc) for more information.

## Testing

Test if the configuration works:

```sh
evcc -c evcc.yaml
```

Open a browser and enter the URL: `http://<your-ip>:7070` (e.g., `http://evcc.local:7070`). The evcc interface should now show your own devices.

If everything works, you can move your `evcc.yaml` to the location required for your installation.

## Troubleshooting

If errors occur, you can get additional information using the following commands.

* Syntax check

  ```sh
  evcc -c evcc.yaml checkconfig
  ```

* Meters (Grid, Solar, Battery)

  ```sh
  evcc -c evcc.yaml -l debug meter
  ```

* Vehicles

  ```sh
  evcc -c evcc.yaml -l debug vehicle
  ```

* Wallboxes

  ```sh
  evcc -c evcc.yaml -l debug charger
  ```

Check the output of each command for plausibility.