Integration in Home Assistant

Ein Kunde ließ uns eine Anleitung zukommen, wie die cFos Power Brain Wallbox in den Home Assistant integriert werden kann. Es ist grundsätzlich ein technisches Verständnis nötig, um diese Schritte erfolgreich auszuführen. Diese Anleitung ist für Fortgeschrittene geeignet, möchten Ihnen diese aber nicht vorenthalten. Bitte beachten Sie, dass es sich hier um eine Anleitung zur Konfiguration bzw. Integration in eine Dritt-Anwendung handelt und nicht von der cFos eMobility GmbH stammt. Die Kundenanleitung wurde von uns zwecks besserer Lesart redaktionell bearbeitet. Sämtliche Hersteller- bzw. Markennamen sind der ursprünglichen Anleitung entnommen und stellen keine explizite Kauf- oder Nutzungsempfehlung der cFos eMobility GmbH dar.

Wenn Sie Fragen zur Konfiguration haben, wenden Sie sich bitte an die cFos-Network-Community.

Vielen herzlichen Dank an dieser Stelle an Dennis V.!

Sämtliche Screenshots stammen aus der Anleitung des Kunden.


Verwendete Hard- & Software

Wallbox-Modell: cFos Power Brain 22kW* Classic
Elektroauto-Modell: Renault ZOE
Verwendete Software/App: Home Assistant

*gedrosselt auf 11kW


1. Daten, Informationen & Regeln der cFos Wallbox


Der Kunde hat folgende Informationen und Regeln seiner cFos Wallbox in den Home Assistant integriert:

  • Zählerstand: für längerfristiges Tracking in einer InfluxDB + Verbrauch je Tag, Woche, Monat & Jahr errechnen
  • Auslesen der Ladeleistung
  • Wallbox Zustand auslesen: Beginn/Ende des Ladevorgangs, Auto ein/ausgesteckt, Benachrichtungen über Statuswechsel
  • Laderegeln aktivieren/deaktivieren
    • Solares Überschussladen samt Auslesen der aktuellen PV-Leistung mit benutzerdefiniertem Zähler für Fronius Wechselrichter
    • 16 A / 32 A freischalten, um das Auto direkt zu laden
    • cFos Benutzerregeln durch Home-Assistant-Regeln deaktivieren: Auto soll nur vollgeladen werden, wenn der Akkustand unter einen bestimmten Wert sinkt.
    • Täglicher Wallbox-Verbrauch im Energie Dashboard des Home Assistant

2. Konfiguration

Im Home Assistant werden folgende Sensoren erstellt:

  • Zählerstand
  • Ladestrom
  • Ladeleistung
  • Wallbox Zustand

Weiterhin wird ein Template Sensor erstellt, der den Zählerstand richtig darstellt sowie diverse „Utility Meter“ Sensoren.

2.1 Sensoren erstellen

Die Sensoren müssen in der Configuration.yaml unter „sensor“ oder in einer eigenen <i>sensor.yaml</i> erstellt werden.

REST Sensoren in sensor.yaml:

- platform: rest
resource: http://IP_OF_WALLBOX/cnf?cmd=modbus&device=meter1&read=8058q
name:  "cFos Zählerstand"
scan_interval: 10
device_class: energy
unit_of_measurement: kWh
state_class: total
username: admin
password: PASSWORD
authentication: basic
headers:
User-Agent: Home Assistant
Content-Type: application/json

- platform: rest
resource: http://IP_OF_WALLBOX/cnf?cmd=modbus&device=meter1&read=8062d
name: "cFos aktuelle Leistung"
scan_interval: 15
device_class: power
unit_of_measurement: W
state_class: measurement
timeout: 120
username: admin
password: PASSWORD
authentication: basic
headers:
User-Agent: Home Assistant
Content-Type: application/json

- platform: rest
resource: http://IP_OF_WALLBOX/cnf?cmd=modbus&device=evse&read=8095
name: "cFos aktueller Ladestrom"
scan_interval: 15
timeout: 60
device_class: current
unit_of_measurement: A
state_class: measurement
username: admin
password: PASSWORD
authentication: basic
headers:
User-Agent: Home Assistant
Content-Type: application/json

- platform: rest
resource: http://IP_OF_WALLBOX/cnf?cmd=modbus&device=evse&read=8092
name: "cFos aktueller Wallbox Zustand"
scan_interval: 15
timeout: 120
username: admin
password: PASSWORD
authentication: basic
headers:
User-Agent: Home Assistant
Content-Type: application/json

- Template Sensor für die korrekte Darstellung vom Zählerstand, ebenfalls in der sensor.yaml;
- platform: template
sensors:
cfos_zahler_gerundet:
friendly_name: "cFos Zählerstand gerundet"
unit_of_measurement: 'kWh'
value_template: "{{ (states('sensor.cfos_zahlerstand') | float / 1000 ) }}“


2.2 Utility Meter

„Utility Meter" sind für die Nachverfolgung von Verbräuchen notwendig. Diese werden in der configuration.yaml unter „utility_meter“ konfiguriert. Die zeichnen den täglichen, wöchentlichen, monatlichen und jährlichen Verbrauch der Wallbox auf. Ebenfalls lässt sich der tägliche Utility Meter in das Energie Dashboard von Home Assistant einbinden.

- daily_wallbox_verbrauch_in_kwh_v2:
source: sensor.cfos_zahler_gerundet
cycle: daily
weekly_wallbox_verbrauch_in_kwh_v2:
source: sensor.cfos_zahler_gerundet
cycle: weekly
monthly_wallbox_verbrauch_in_kwh_v2:
source: sensor.cfos_zahler_gerundet
cycle: monthly
yearly_wallbox_verbrauch_in_kwh_v2:
source: sensor.cfos_zahler_gerundet
cycle: yearly

- Um den Wallbox Zustand von einem „numeric_state“ in einen „state“ umzubauen, 
wird wieder das template genutzt. Dadurch lassen sich einfacher Automatisierungen realisieren.

- platform: template
sensors:
cfos_wallbox_zustand_icon_v2:
value_template: >-
{% if states('sensor.cfos_aktueller_wallbox_zustand') | int == 1 %}
car_plugged
{% elif states('sensor.cfos_aktueller_wallbox_zustand') | int == 2 %}
car_loading
{% elif states('sensor.cfos_aktueller_wallbox_zustand') | int == 4 %}
no_energy
{% else %}
charger_free
{% endif %}
friendly_name: 'cFos Wallbox Zustand'
icon_template: >-
{% if states('sensor.cfos_aktueller_wallbox_zustand')|
int == 1 %}
mdi:ev-plug-type2
{% elif states('sensor.cfos_aktueller_wallbox_zustand') | int == 1 %}
mdi:car-electric
{% elif states('sensor.cfos_aktueller_wallbox_zustand') | int == 4 %}
mdi:transmission-tower-off
{% else %}
mdi:ev-station
{% endif %}

3. Switches/Schalter

Insgesamt wurden vier Schalter konfiguriert, welche folgende Steuerung der cFos Wallbox übernehmen:

  • Solares Überschussladen
  • 16 A / 32 A zum sofortigen Laden freischalten
  • Laden deaktivieren und wieder freigeben
  • Deaktivieren der aktuellen Benutzerregel: Wenn vorher via PV-Überschuss geladen wurde, das Auto jedoch noch nicht voll ist, soll es unter der Voraussetzung, dass der Akkustand unter 40kWh liegt, Nachts voll geladen werden.

Die Switches sind sogenannte "Commandline Switches" und machen im Home Assistant einen Curl auf die cFos Wallbox. In der Wallbox werden dazu zwei Benutzer dafür angelegt:

  • HASS-16A
  • HASS-Solar

- - platform: command_line
switches:
cfos_laden_aktivieren:
friendly_name: 'Wallbox - 16A Laden freischalten'
command_on: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=enter_rfid&rfid=HASS-16A&dev_id=E1"'
command_off: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=enter_rfid&rfid=HASS-16A&dev_id=E1"'
- platform: command_line
switches:
cfos_laden_erzwingen:
friendly_name: 'Wallbox - Solar laden'
command_on: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=enter_rfid&rfid=HASS-Solar&dev_id=E1"'
command_off: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=enter_rfid&rfid=HASS-Solar&dev_id=E1"'
- platform: command_line
switches:
cfos_aktuelle_aktion_start_stop:
friendly_name: 'Wallbox - Aktuelle Aktion START/STOP'
command_on: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=override_device&dev_id=E1&flags=C"'
command_off: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=override_device&dev_id=E1&flags=c"'
- platform: command_line
switches:
cfos_override_benutzer_regel:
friendly_name: 'Wallbox - Überschreiben der
Benutzerregeln'
command_on: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=override_device&dev_id=E1&flags=U"'
command_off: 'curl -s --user admin:PASSWORD "http://IP_OF_WALLBOX/cnf?cmd=override_device&dev_id=E1&flags=u"'

4. Automatisierungen & Benachrichtigungen

Der Kunde hat eine Automatisierung eingebaut. Diese deaktiviert nachts die Benutzerregel (siehe 1.4 und 3.), wenn ein Auto angesteckt ist und der Akkustand des Autos unter 40 kWh liegt.

- alias: 'Wallbox - Überschreiben der Benutzerregel'
trigger:
platform: time
at: '00:15:00'
condition:
condition: and
conditions:
- condition: state
entity_id: sensor.cfos_wallbox_zustand_icon_v2
state: car_plugged
- condition: numeric_state
entity_id: sensor.battery_available_energy
below: 40
action:
- service: switch.turn_on
entity_id:
- switch.cfos_override_benutzer_regel

Ist jemand zu Hause und ein Auto angesteckt, wird automatisch das Solare Überschussladen freigeschaltet.

alias: 'Wallbox - Automatisches Solarladen wenn Auto angesteckt'
trigger:
platform: state
entity_id: sensor.cfos_wallbox_zustand_icon_v2
from: charger_free
to: car_plugged
condition:
condition: and
conditions:
- condition: state
entity_id: group.persdevices
state: 'home'
action:
- delay: 00:00:30
- service: switch.turn_on
data:
entity_id: switch.cfos_solarladen

4.1 Benachrichtigungen

Um stets den aktuellen Zustand der cFos Wallbox im Blick zu haben, können diverse Benachrichtigungen eingerichtet und aktiviert werden.

Die erste Benachrichtigung im Kundenbeispiel teilt abends mit, dass ein Auto angesteckt ist und nachts geladen wird. Die Benachrichtigung wird in einer Telegram-Gruppe geteilt und gepushed über die Home Assistant App.

-
alias: 'Wallbox - Info das Fahrzeug angesteckt ist'
trigger:
platform: time
at: '20:15:00'
condition:
condition: and
conditions:
- condition: state
entity_id: sensor.cfos_wallbox_zustand_icon_v2
state: car_plugged
- condition: numeric_state
entity_id: sensor.battery_available_energy
below: 40

action:
- service: notify.mobile_app_dennis_iphone
data:
title: Wallbox Hinweis!
message: "Ein Fahrzeug ist noch angesteckt. Fahrzeug wird um
00:15 Uhr geladen!"
- service: notify.telegramgruppe
data_template:
message: "'Wallbox Hinweis: Ein Fahrzeug ist noch angesteckt. ZOE Akkustand: {{ states('sensor.battery_available_energy') }} kWh. Fahrzeug wird um 00:15 Uhr geladen!'"

Benachrichtigung zu "Ladevorgang begonnen" mit Uhrzeit und aktueller Ladeleistung:

alias: Wallbox Info - Auto Ladevorgang begonnen
trigger:
platform: state
entity_id: sensor.cfos_wallbox_zustand_icon_v2
from: car_plugged
to: car_loading
action:
- delay: 00:00:15
- service: notify.mobile_app_dennis_iphone
data:
title: Wallbox Info
message: "Ladevorgang um {{ now().strftime('%H:%M') }} Uhr gestartet mit {{states('sensor.cfos_aktuelle_leistung')}} Watt Leistung"