Ich habe ein Elektroauto auf MEB-Basis in Homeassistant eingebunden. Nun möchte ich automatisch den wöchentlichen Durchschnittsverbrauch je 100 km berechnen und darstellen, wozu ich einen Sensor definieren muss, der den Verbrauch erfasst. Die Fahrzeug-Integration liefert den State of Charge in %, bei dem ich dazu die Summe der fallenden Werte erfassen möchte. Beispiel:
SoC zum Start der Woche: 39%
Mo: 120 km gefahren, 20% SoC verbraucht, 41% SoC nachgeladen, SoC: 60%
Di: 14 km gefahren, 3% SoC verbraucht, SoC: 57%
Mi: 63 km gefahren, 15% SoC verbraucht, SoC: 42%
Do: 0 km gefahren, SoC 42%
Fr: 20 km gefahren, 4% SoC verbraucht, SoC: 38%
Sa: 37 km gefahren: 9 % SoC verbraucht, SoC: 29%
So: 0 km gefahren, 31% SoC nachgeladen, SoC: 60%
SoC zum Ende der Woche: 60%
Der Sensor soll jetzt 51% als Summe des wöchentlichen Verbrauches liefern, also die Summe aller fallenden Werte. Als Workaround würde auch die Summe der nachgeladenen Strommenge helfen (hier 72%), weil ich dann unter Einbeziehung des SoC zum Start und Ende der Woche auch die verbrauchte Strommenge ausrechnen kann (72% - 60% + 39% = 51%). Der Rest der Berechnung (Umrechnung % in kWh und Erfassung der wöchentlichen Fahrleistung) ist kein Problem.
Die nachgeladene Strommenge kann ich nicht anderweitig (z.B. an der Wallbox abgreifen), weil Madame mit dem Auto teils auch auf der Arbeit in einer Tiefgarage lädt. Das Auto hat dort kein Netz und die Ladevorgänge erscheinen teils noch nicht mal in der Ladehistorie der App (VW-Konzern und Software…).
Ich habe schon mit allen Optionen des Utiliy-Meters experimentiert, aber keine Variante liefert den gewünschten Wert. Hat jemand eine Idee?
Moin, benutzt Du noch keine KI um solche Fragestellungen unterstützend zu lösen?
Kannst ja mal schauen ob die ChatGPT Antwort für Dich passt, bzw. funktioniert:
Ja: nimm keinen Utility Meter direkt auf SoC, sondern baue zuerst einen trigger-basierten Template-Sensor, der nur negative SoC-Deltas aufsummiert. Trigger-basierte Template-Sensoren stellen ihren Zustand nach Neustarts wieder her; der Utility Meter kann danach wöchentlich zurücksetzen.
template:
- trigger:
- platform: state
entity_id: sensor.auto_soc
sensor:
- name: "Auto SoC Verbrauch aufsummiert"
unique_id: auto_soc_verbrauch_aufsummiert
unit_of_measurement: "%"
state_class: total_increasing
state: >
{% set old = trigger.from_state.state | float(none) %}
{% set new = trigger.to_state.state | float(none) %}
{% set current = this.state | float(0) %}
{% if old is none or new is none %}
{{ current }}
{% elif new < old %}
{{ current + (old - new) }}
{% else %}
{{ current }}
{% endif %}
template:
- trigger:
- platform: state
entity_id: sensor.auto_soc
sensor:
- name: "Auto SoC Nachladung aufsummiert"
unique_id: auto_soc_nachladung_aufsummiert
unit_of_measurement: "%"
state_class: total_increasing
state: >
{% set old = trigger.from_state.state | float(none) %}
{% set new = trigger.to_state.state | float(none) %}
{% set current = this.state | float(0) %}
{% if old is none or new is none %}
{{ current }}
{% elif new > old %}
{{ current + (new - old) }}
{% else %}
{{ current }}
{% endif %}
Wichtig: sensor.auto_soc durch deine echte SoC-Entity ersetzen.
Da wir morgen in den Urlaub fahren, habe ich selber nochmal was gebaut (bauen lassen) - mal schauen ob die Werte dann nach einigen Tagen/Wochen plausibel sind: