Tesla Überschussladen mit Home-Assistant

Wir haben seit ein paar Wochen eine Photovoltaikanlage und natürlich möchten wir mit unserem Tesla Überschussladen realisieren. Die verkaufte kWh bringt nicht wirklich viel ein, sodass ich den Strom lieber ins Auto packe. Da Tesla eine gute API anbietet und mit Home-Assistant schon eine Software vorhanden ist, die viele Dinge steuern kann, wollte ich beides zusammenbringen um dieses Vorhaben zu realisieren.

Warum Home-Assistant zum Tesla Überschussladen?

Natürlich fragt sich der geneigte Leser jetzt warum ich nicht einfach eine Wallbox gekauft habe die das schon von sich aus mitbringt? Wir haben damals eine Mennekes Amtron Compact gekauft welche recht günstig war. Erst im letzten Jahr ist die Auswahl an Wallboxen wirklich groß geworden und die Auswahl an intelligenten Wallboxen hat zugenommen. Zudem hatten wir zum damaligen Zeitpunkt noch eine andere Dachkonstruktion die eine PV-Anlage nicht möglich machten. Das „Schicksal“ nötigte uns allerdings zu einer Dachsanierung und somit wurde natürlich auch recht zeitnah (was man bei den derzeitigen Lieferschwierigkeiten nicht sagen kann) eine Solaranlage angeschafft und installiert.

[amazon box=“B07W9DRYNW“]

Voraussetzungen

Um ein Überschussladen überhaupt zu ermöglichen sollten natürlich die Komponenten der PV-Anlage wie Wechselrichter (und Batterie) in Home-Assistant eingebunden werden. Bei unserem Kostal Plenticore mache ich das via Integration. Hierzu muss nur der Modbus im Plenticore aktiviert werden und schon kann Home-Assistant darauf zugreifen. Grundsätzlich wird aber nur die Gesamtleistung sowie ggf. der Batterieladestatus benötigt. Sollte man keine Batterie haben, müssen die Automatisierungen dann nur entsprechend angepasst werden.

Zudem muss die Tesla Integration installiert werden. Home-Assistant bringt diese nicht mehr von Haus aus mit. Via HACS lässt diese sich aber problemlos installieren. Bitte bedenkt das ein Zugriff auf die Tesla API nur noch mittels Tokens und nicht mehr mit Benutzername und Passwort möglich ist. Das ist eine Restriktion seitens Tesla.

Setup in Home-Assistant

Sensor

Die Tesla API erlaubt es die Stromstärke der Ladung feiner zu justieren als das in der App möglich ist. In dieser ist bei 5 A Schluss. Via API kann man das allerdings kleiner definieren. Allerdings dann in Umrechnung auf km/h-Ladeleistung. Entsprechend brauchen wir ein Sensor der die Wattzahl in Tesla-Ladestärke umrechnet

sensor:
  - platform: template
    sensors:
      tesla_max_charge:
        unit_of_measurement: A
        value_template: >-
          {{ (states('sensor.pv_prod_ges') | float(0) - states('sensor.pv_wr_pc_pv_to_battery_power') | float(0) - 500) * 0.0014 }}

Aus diversen Gründen arbeite ich noch mit einem Zwischensensor der sensor.pv_prod_ges errechnet. Dieser symbolisiert nur die aktuell produzierte Leistung in Watt. Davon ziehe ich die derzeitige Ladeleistung zur Batterie ab, subtrahiere noch 500 W Puffer fürs Haus (hier kann man natürlich auch den realen Wert als Sensor verwenden) und Multipliziere das mit 0,0014 um die km/h-Ladestärke zu bekommen.

Automatisierung

Ich verwende mehrere Automatisierungen. Die erste startet den Ladevorgang wenn die Batterie mehr als 90 % SoC über 20 Sekunden hat. Natürlich kann man auch sagen, sobald ins Netz eingespeist wird oder ähnliches. Da ist man natürlich nicht festgelegt. Die Automatisierung startet nur wenn das Auto zuhause und angesteckt ist, aber keine Ladung initiiert wurde (z. B. am Auto oder in der App).

automation:
  - id: 'Tesla001'
    alias: Tesla - Start charging above 2 kW power to grid
    trigger:
    - platform: numeric_state
      entity_id: sensor.pv_wr_pc_battery_soc
      above: '90'
      for: 00:00:20
    condition:
      - condition: and
        conditions:
          - condition: state
            entity_id: device_tracker.tesla_location_tracker
            state: home
          - condition: state
            entity_id: binary_sensor.tesla_charger_sensor
            state: 'on'
          - condition: state
            entity_id: switch.tesla_charger_switch
            state: 'off'
    action:
    - service: switch.turn_on
      target:
        entity_id: switch.tesla_charger_switch
    mode: single

Nun fängt das Auto an zu laden. Allerdings mit maximaler bzw. Vorangestellter Geschwindigkeit. Im Regelfall 16 A bzw. dann 11 kW. Für meine 9,6 kWp Anlage natürlich zu viel. also müssen wir den maximalen Ladestrom drosseln. Das allerdings muss häufig angepasst werden. Dafür gibt es die zweite Automatisierung

  - alias: Adjust charging speed
    trigger:
    - platform: time_pattern
      minutes: '/1'
      seconds: 00
    condition:
      - condition: and
        conditions:
          - condition: state
            entity_id: switch.tesla_charger_switch
            state: 'on'
          - condition: state
            entity_id: device_tracker.tesla_location_tracker
            state: home
          - condition: state
            entity_id: switch.tesla_maxrange_switch
            state: 'off'
    action:
      service: script.adjust_tesla_charging

Diese schaut jede Minute (du kannst das natürlich auch feiner justieren) ob das Auto daheim ist, das Auto lädt und nicht der Max Range Switch aktiviert wurde. Sollten die Bedingungen passen, wird ein Script ausgeführt.

Als nächste Automatisierung brauchen wir noch etwas das die Ladung stoppt. Sonst würde ja weiter geladen werden obwohl die Sonne schon längst weg ist, oder die Batterie unter einen gewünschten State of Charge fällt. Je nach Wunsch…

  - id: 'Tesla002'
    alias: Tesla - Stop charging if solar generation is below 1 kW
    description: ''
    trigger:
    - platform: numeric_state
      entity_id: sensor.pv_prod_ges
      below: '1000'
      for: 00:01:00
    condition:
      - condition: and
        conditions:
          - condition: state
            entity_id: device_tracker.tesla_location_tracker
            state: home
          - condition: numeric_state
            entity_id: sensor.tesla_charging_rate_sensor
            above: '2'
          - condition: not
            conditions:
            - condition: state
              entity_id: switch.tesla_maxrange_switch
              state: 'on'
    action:
    - service: switch.turn_off
      target:
        entity_id: switch.tesla_charger_switch
    mode: single

In meiner dritten Automatisierung schauen wir ob die produzierte Strommenge unter 1 kW fällt. Den Wert habe ich mir einfach so ausgesucht. Zumal es dann noch reicht um meine Batterie noch weiter zu füllen bzw. das der Hausverbrauch nicht an die Batterie muss. Natürlich wird diese Automatisierung auch nur dann getriggert wenn wir zuhause laden.

Die letzte Automatisierung zielt auf den SoC der Batterie der PV-Anlage ab

  - id: 'Tesla003'
    alias: Tesla - Stop charging if solar battery is under 90 %
    description: ''
    trigger:
    - platform: numeric_state
      entity_id: sensor.pv_wr_pc_battery_soc
      below: '90'
    condition:
      - condition: and
        conditions:
          - condition: state
            entity_id: device_tracker.tesla_location_tracker
            state: home
          - condition: not
            conditions:
            - condition: state
              entity_id: switch.tesla_maxrange_switch
              state: 'on'
    action:
    - service: switch.turn_off
      target:
        entity_id: switch.tesla_charger_switch
    mode: single

Wir stoppen also die Ladung wenn der State of Charge der PV-Battarie unter 90 % fällt.

Script

Du hast dich sicherlich schon gefragt was für ein Script in der zweiten Automatisierung benutzt wird. Dazu kommen wir jetzt. Dieses Script habe ich durch das Home-Assistant Forum gefunden und ist eigentlich die ganze Intelligenz. Dieses regelt die eigentliche Ladeleistung des Teslas.

script:
  'adjust_tesla_charging':
    alias: Charge tesla
    sequence:
    - service: tesla_custom.api
      data:
        command: CHARGING_AMPS
        parameters:
          path_vars:
            vehicle_id: '{{ state_attr("binary_sensor.tesla_online_sensor", "id") }}'
          charging_amps: '{{ (states("sensor.tesla_max_charge"))| int }}'
    mode: single

Das alles im Zusammenspiel lässt das Auto sauber mit dem überschüssigen Strom laden sobald die Batterie voll ist. Ohne Batterie kann man das natürlich viel früher starten lassen. Ich habe dieses Script und die Automatisierungen jetzt seit knapp vier Wochen aktiv und es funktioniert wirklich gut. Auch wenn die Sonne noch nicht die Kraft hat viel Leistung zu erbringen reicht es jetzt im Winter schon um 30 – 40 % der Autobattarie mit dem Tesla Überschussladen zu betanken. Mit größerer Anlage oder später im Jahr wird sicherlich mehr möglich sein.

Tesla Überschussladen in Home-Assistant
Hier sieht man an den zwei gelben Balken schön, dass viel Strom direkt für das Tesla Überschussladen verbraucht wurde.

3 comments On Tesla Überschussladen mit Home-Assistant

  • Hallo Christian,
    ich habe eine Frage zum API-Call von „charging_amps“: Du übergibst hier deinen errechneten Wert als Integer an die selbe Stelle, die auch Einfach Ampere entgegennimmt – woher weiss die API, dass du hier den Wert in km/h übergibst? Bzw. tust du das überhaupt? Klär mich mal auf 🙂

    • Ich denke nicht dass hier km/h übergeben werden, sondern ganz normal Ampere.
      Die Berechnung von „tesla_max_charge“ ist wie folgt:
      Stromstärke zum Laden [in A] = (PV ertrag [in W] – Ladeleistung Home-Batterie [in W] – 500 W fürs Haus) * 0.0014 [in 1/V]

      Wobei 0.0014 [1/V] der Umrechnungsfaktor von Watt in Ampere bei 3-phasigem laden ist: 1/(230V * 3 Phasen)

  • Servus und Danke für die Anleitung. Ich fände es sehr interessant diese PV Überschuss Lösung ohne Haus-Akku nachzubauen. Im HA Forum gibt es einen Ansatz, aber dieser ist ziemlich komplex.
    Also Strom-Sensor verwende ich den Powerfox Poweropti der mir meinen aktuellen Verbrauch/Überschuss in Watt ausgibt.

    Ich werde mich mal an der Umsetzung versuchen, aber wenn Sie mal Zeit haben eine modifizierte Variante ohne Akku zu posten dann wäre dies als „Template“ sehr hilfreich!

Leave a reply:

Your email address will not be published.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.