Ich schaue mir die aus der Wallbox-Integration abgerufenen Daten an
Hier eine kleine Zusammenfassung der Daten, die es mir ermöglichen, die Daten der letzten Ladesitzung in sensor.wallbox_charges zu speichern.
Ich habe bereits alle Entitäten der Wallbox-Integration auf diesem Retex beschrieben:
Der Auslöser
Also werde ich verwenden sensor.wallbox_portal_status_description als Auslöser für die Aufzeichnung der letzten Ladesitzung.
Ich werde daher die Statusänderung von „Charging“ zu etwas anderem verwenden, um die Aufzeichnung auszulösen.
Daten
- Wallbox Portal Added Energy (sensor.wallbox_portal_added_energy) gibt mir die Anzahl der kWh an, die der Autobatterie während des letzten Ladevorgangs hinzugefügt wurden.
- Wallbox Portal Added Range (sensor.wallbox_portal_added_range) wird mir eine Schätzung der Anzahl der zusätzlichen Kilometer geben, die mit der letzten Last erreicht werden können.
- Wallbox Portal Energy Preis (sensor.wallbox_portal_energy_price) wird mir den Preis pro kWh geben, ich werde ihn zur Berechnung der Ladekosten verwenden.
Ich füge die Integration hinzu, in der die Ladedaten gespeichert werden.
Ich habe die Integration gefunden hass-Variablen, absolut genial. Vielen Dank Ankama und Snuffy2 Für diese Arbeit und dieses Follow-up.
Sie ermöglicht es, einen Sensor zu erstellen, der mit nichts verbunden ist (kein Template). Dieser Sensor behält seine Werte auch bei der Wiederbelebung von HA. Genau das, was ich brauchte, ohne einen externen Datensicherungsmodus (json, andere …-Datenbank) zu verwenden.
Der neue Sensor heißt: sensor.wallbox_charges
Ich füge einen Sensor hinzu, der den Beginn der Ladung erkennt
Die Integration gibt mir nämlich nicht die Uhrzeit und das Datum des Beginns der letzten Ladung an. Um die Dauer zu berechnen, finde ich es interessant, diese Informationen zu haben. Also werde ich sie erschaffen.
Ich beziehe mich auf die Entität sensor.wallbox_portal_added_range und hole die Uhrzeit/das Datum des Ladebeginns ab (d. h. den Mindestwert für die letzten 5 Stunden).
In meiner Datei sensors.yaml füge ich diese Entität hinzu:
- platform: statistics name: "Wallbox Portal Added Range Min" entity_id: sensor.wallbox_portal_added_range state_characteristic: datetime_value_min max_age: hours: 5
Dadurch erschaffe ich die Einheit: sensor.wallbox_portal_added_range_min
Ich werde diese Entität verwenden, um den Ladebeginn aufzuzeichnen und die Ladedauer zu berechnen.
Ich füge die Automatisierung hinzu, mit der die Daten gespeichert werden.
Es ist ziemlich komplex, ich nehme an, es ist einfach, ich werde es Schritt für Schritt erklären
Hier ist zunächst der vollständige Code
alias: Speichert eine Ladesitzung Beschreibung: "" Trigger: - platform: state entity_id: - sensor.wallbox_portal_status_description from: Charging to: null alias: Wenn die Last endet Bedingung: [] Maßnahme: - alias: >- Initialisieren Sie den ersten conso, starten Sie ihn nur einmal (indem Sie die anderen Aktionen deaktivieren) und deaktivieren Sie dann den Dienst: variable.update_sensor data: replace_attributes: true value: INIT Attribute: Sitzungsaufladung: null Ziel: entity_id: sensor.wallbox_charges enabled: false - Service: variable.update_sensor data: replace_attributes: true value: >- {{ as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int | timestamp_custom('%d/%m/%Y %H:%M:%S', true)}} Attribute: Sitzungsaufladung: > {% set sessioncharge = {'Verbrauch': 2.14, 'Kosten': 0.43, 'Dauer': '00:27', 'Anfang': '19/09/2023 20:36', 'fin': '21:03', 'km': 17, 'saved_at': 1695150359} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.29, "Kosten": 4.66, 'Dauer': '04:19', 'Anfang': '21/09/2023 21:06', 'fin': '01:25', 'km': 192, 'saved_at': 1695323159} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 7.68, 'Kosten': 1.54, 'Dauer': '01:23', 'Anfang': '22/09/2023 08:45', 'fin': '10:08', 'km': 63, 'saved_at': 1695409559} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.8 "Kosten": 4.76, 'Dauer': '04:26', 'Anfang': '23/09/2023 16:57', 'fin': '21:23', 'km': 196, 'saved_at': 1695495959} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.64, 'Kosten': 4.73, 'Dauer': '04:05', 'Anfang': '26/09/2023 20:59', 'fin': '01:04', 'km': 195, 'saved_at': 1695755159} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 24.04, 'Kosten': 4.81, 'Dauer': '05:17', 'Anfang': '28/09/2023 21:21', 'fin': '02:38', 'km': 198, 'saved_at': 1695927959} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 17.3, 'Kosten': 3.46, 'Dauer': '03:51', 'Anfang': '30/09/2023 21:31', 'fin': '01:22', 'km': 143, 'saved_at': 1696100759} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 22.18, 'Kosten': 4.44, 'Dauer': '04:25', 'Anfang': '03/10/2023 20:43', 'fin': '01:08', 'km': 183, 'saved_at': 1696359959} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.86, 'Kosten': 4.77, 'Dauer': '05:26', 'Anfang': '05/10/2023 21:03', 'fin': '02:29', 'km': 197, 'saved_at': 1696532759} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.43, "Kosten": 4.69, 'Dauer': '05:07', 'Anfang': '07/10/2023 20:34', 'fin': '01:41', 'km': 193, 'saved_at': 1696705559} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.32, "Kosten": 4.66, 'Dauer': '04:40', 'Anfang': '10/10/2023 20:57', 'fin': '04:40', 'km': 192, 'saved_at': 1696964759} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 25.19, 'Kosten': 5.04, 'Dauer': '04:39', 'Anfang': '12/10/2023 19:53', 'fin': '00:32', 'km': 208, 'saved_at': 1697137559} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 8.61, 'Kosten': 1.72, 'Dauer': '01:32', 'Anfang': '13/10/2023 21:05', 'fin': '22:37', 'km': 71, 'saved_at': 1697223959} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 27.76, 'Kosten': 5.55, 'Dauer': '04:46', 'Anfang': '16/10/2023 02:11', 'fin': '06:57', 'km': 231, 'saved_at': 1697474976} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 24.18, 'Kosten': 4.84, 'Dauer': '04:12', 'Anfang': '18/10/2023 02:11', 'fin': '06:23', 'km': 201, 'saved_at': 1697657509} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 20.17, 'Kosten': 4.03, 'Dauer': '03:38', 'Anfang': '19/10/2023 02:11', 'fin': '05:50', 'km': 168, 'saved_at': 1697688628} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 23.08, 'Kosten': 4.62, 'Dauer': '04:13', 'Anfang': '21/10/2023 02:12', 'fin': '06:25', 'km': 192, 'saved_at': 1697867735} %}{{ sessionload }}},{% set sessioncharge = {'Verbrauch': 12.19, 'Kosten': 2.44, 'Dauer': '03:21', 'Anfang': '22/10/2023 02:13', 'fin': '05:34', 'km': 101, 'saved_at': 1697946854} %}{{ sessionload }} target: entity_id: sensor.wallbox_charges enabled: false alias: >- Initialisieren Sie die ersten conso, starten Sie nur einmal (durch Deaktivieren der anderen Aktionen) und deaktivieren Sie dann - Service: variable.update_sensor data: replace_attributes: true value: >- {{ as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int | timestamp_custom('%d/%m/%Y %H:%M:%S', true)}} Attribute: Sitzungsaufladung: >- {% set diff_seconds = now().timestamp() - states.sensor.wallbox_portal_added_range_min.state | as_timestamp %} {% set hours = (diff_seconds / 3600) | int %} {% set minutes = ((diff_seconds % 3600) / 60) | int %} {% set sessioncharge = { 'Verbrauch': states('sensor.wallbox_portal_added_energy') | float | round(2), 'cost': (states('sensor.wallbox_portal_energy_price') | float * states('sensor.wallbox_portal_added_energy') | float | round(2)) | round(2), 'Dauer': 'd:d' | format(hours, minutes) , 'Anfang': as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int | timestamp_custom('%d/%m/%Y %H:%M', true), 'fin': now().strftime(')%H:%M') , 'km': states('sensor.wallbox_portal_added_range') | int, 'saved_at': now().timestamp() | int } %} {% if state_attr('sensor.wallbox_charges', 'sessionscharge') is not none %} {{ state_attr('sensor.wallbox_charges', 'sessionscharge') }}, {{ sessioncharge }} {% else %} {{ sessionload }}, {{ sessionload }} {% endif %} target: entity_id: sensor.wallbox_charges enabled: true alias: Speichert die gerade beendete Ladesitzung Modus: Single
Erläuterung Teil für Teil
- Auslöser: das ist, wenn die Last beendet ist
- Aktion 1 (standardmäßig deaktiviert) muss nur einmal aktiviert werden, wobei daran gedacht wird, die beiden anderen Aktionen zu deaktivieren, um die Entität, die die Daten speichert, auf „null“ zu initialisieren.
- Aktion 2 (standardmäßig deaktiviert) muss nur einmal aktiviert werden, um die beiden anderen Aktionen zu deaktivieren, d. h. um einige frühere Daten zu initialisieren. Tatsächlich wollte ich die Ladedaten seit dem Kauf des Autos nicht verlieren, also habe ich sie dort gespeichert.
- Aktion 3 (standardmäßig zu aktivieren) ist die Aktion, mit der die Lastdaten berechnet und gespeichert werden.
Erläuterung des Auslösercodes
Dieser Auslöser basiert auf der "State"-Plattform von Home Assistant. Es überwacht den Zustand einer bestimmten Einheit, im vorliegenden Fall „sensor.wallbox_portal_status_description“. Insbesondere ist es so konfiguriert, dass es reagiert, wenn sich der Zustand dieses Unternehmens ändert. Die Konfigurationsdetails lauten wie folgt:
– Entity_id: Er gibt das Unternehmen an, dessen Status überwacht wird. In diesem Fall handelt es sich um „sensor.wallbox_portal_status_description“. Mehrere Einrichtungen können beaufsichtigt werden, indem eine Liste von Einrichtungen in Form einer Liste bereitgestellt wird. In diesem Beispiel wird jedoch nur eine Entität überwacht.
– ́from: Charging¿: Dies bedeutet, dass der Auslöser reagiert, wenn der vorherige Status von „sensor.wallbox_portal_status_description“ „Charging“ war. Dies ist eine Voraussetzung für die Automatisierung. Der Auslöser reagiert nur, wenn der vorherige Zustand „Charging“ war.
– ́to: null: Dies bedeutet, dass der Auslöser reagiert, wenn sich der aktuelle Status von „sensor.wallbox_portal_status_description“ von „Charging“ in einen anderen Zustand, einschließlich „null“, geändert hat. Dies ist die neue Voraussetzung für die Automatisierung. Der Auslöser reagiert, wenn sich der Zustand von „Charging“ auf einen anderen Zustand ändert.
– ́alias: Wenn die Ladung endet: Dies ist ein Alias für den Auslöser, ein Name, mit dem Sie ihn leichter erkennen können. In diesem Fall wird lediglich angegeben, dass die Automatisierung ausgelöst wird, wenn die Last endet.
Zusammenfassend lässt sich sagen, dass diese Automatisierung jedes Mal ausgelöst wird, wenn sich der Status von „sensor.wallbox_portal_status_description“ von „Charging“ in einen anderen Zustand ändert, was bedeutet, dass sie so konzipiert ist, dass sie reagiert, wenn die Ladung des Elektroautos endet.
Erläuterung der Maßnahme 1
Diese Aktion zielt darauf ab, den ersten Verbrauch (Last) für einen Sensor namens "sensor.wallbox_charges" mit dem Dienst "variable.update_sensor" des Home Assistant zu initialisieren. Im Folgenden werden die einzelnen Komponenten der Maßnahme ausführlich erläutert:
– Aliasnamen: Es handelt sich lediglich um einen Namen oder eine Beschreibung der Maßnahme, um sie verständlicher zu machen. In diesem Fall weist er darauf hin, dass diese Maßnahme für die Initialisierung des ersten Verbrauchs bestimmt ist und nur einmal durchgeführt werden muss. Er schlägt außerdem vor, nach der Ausführung weitere Aktionen zu deaktivieren.
– ́Dienstleistung: variable.update_sensor¿: In dieser Zeile wird der Dienst angegeben, der für die Durchführung der Maßnahme verwendet werden soll. Der Dienst „variable.update_sensor“ wird verwendet, um Attribute einer Entität zu aktualisieren oder zu initialisieren (in diesem Fall „sensor.wallbox_charges“).
– ́datá: Dieser Abschnitt enthält die Daten, die mit dem Dienst gesendet werden sollen. In diesem Fall
– ́replace_attributes: true¿: Dies bedeutet, dass die Attribute der bestehenden Entität durch die neuen Daten ersetzt werden müssen. Wenn "replace_attributes" auf "true" gesetzt ist, werden die vorhandenen Attribute von "sensor.wallbox_charges" durch die neuen Daten ersetzt.– ́Wert: INIT: Dies gibt den Wert an, der dem Attribut „sessionscharge“ von „sensor.wallbox_charges“ zuzuweisen ist. In diesem Fall wird der Wert "INIT" zugewiesen.
– Attribute: Sitzungsaufladung: null: In dieser Zeile heißt es, dass das Attribut „sessionscharge“ von „sensor.wallbox_charges“ auf „null“ initialisiert werden muss.
– ‚Ziel‘: Es gibt das Zielunternehmen an, d. h. das Unternehmen, dessen Attribute aktualisiert werden. In diesem Fall ist die Zieleinheit „sensor.wallbox_charges“.
– enabled: true¿: Dies zeigt an, dass diese Aktion aktiviert ist und ausgeführt werden kann.
Zusammenfassend dient diese Aktion dazu, das Attribut „sessionscharge“ der Entität „sensor.wallbox_charges“ mit dem Wert „null“ unter Verwendung des Dienstes „variable.update_sensor“ zu initialisieren. Es soll nur einmal ausgeführt werden, um diese Initialisierung durchzuführen, danach wird empfohlen, diese Aktion zu deaktivieren. Dies kann nützlich sein, um mit bestimmten Anfangswerten in Ihren Automatisierungen oder Entitäten zu beginnen.
Erläuterung der Maßnahme 2
Diese Aktion zielt darauf ab, das Attribut „sessionscharge“ einer Entität namens „sensor.wallbox_charges“ mit einer Reihe von Daten aus bereits bestehenden Ladesitzungen zu initialisieren. Nachstehend werden die einzelnen Elemente der Maßnahme ausführlich erläutert:
– ́Dienstleistung: variable.update_sensor¿: Dies ist der Dienst, mit dem die Attribute einer Entität im Home Assistant aktualisiert oder initialisiert werden.
– ́datá: Dieser Abschnitt enthält die Daten, die mit dem Dienst gesendet werden sollen. In diesem Fall
– ́replace_attributes: trué: Dies deutet darauf hin, dass die vorhandenen Attribute der Entität „sensor.wallbox_charges“ durch die neuen Daten ersetzt werden.– ‚Wert‘: Dieser Teil wird verwendet, um den Wert des Attributs „sessionscharge“ der Entität „sensor.wallbox_charges“ zu definieren. Der Wert wird mithilfe von Jinja2-Modellen dynamisch generiert. Es verwendet den Zeitstempel der ersten Ladesitzung (d. h. „sensor.wallbox_portal_added_range_min“), um ein Datum und eine Uhrzeit abzurufen, und formatiert sie dann im Stil „Tag/Monat/Jahr Stunde:Minute:Sekunde“. Dies bedeutet, dass der Wert „sessionscharge“ mit dem Datum und der Uhrzeit der ersten Ladesitzung initialisiert wird.
– Attribute: Hier werden die Daten für jede Ladesitzung definiert. Jede Ladesitzung wird in einem bestimmten Format mit Jinja2-Vorlagen definiert. Diese Ladesitzungen sind durch Kommas getrennt.
– ‚Ziel‘: Es gibt das Zielunternehmen an, d. h. das Unternehmen, dessen Attribute aktualisiert werden. In diesem Fall ist die Zieleinheit „sensor.wallbox_charges“.
– enabled: true¿: Dies zeigt an, dass diese Aktion aktiviert ist und ausgeführt werden kann.
Ziel dieser Aktion ist es, das Attribut „sessionscharge“ von „sensor.wallbox_charges“ mit simulierten Daten von Ladesitzungen zu initialisieren. Dies kann nützlich sein, um mit fiktiven Lastdaten zu testen oder zu starten. Nach der Initialisierung wird empfohlen, diese Aktion wie im Alias angegeben zu deaktivieren, da sie nicht wiederholt werden muss.
Erläuterung der Maßnahme 3 – Hauptmaßnahme
Mit dieser Aktion soll das Attribut „sessionscharge“ der Entität „sensor.wallbox_charges“ mit den Daten der gerade beendeten Ladesitzung aktualisiert werden. Nachstehend werden die einzelnen Elemente der Maßnahme ausführlich erläutert:
– ́Dienstleistung: variable.update_sensor¿: Dies ist der Dienst, mit dem die Attribute einer Entität im Home Assistant aktualisiert oder initialisiert werden.
– ́datá: Dieser Abschnitt enthält die Daten, die mit dem Dienst gesendet werden sollen. In diesem Fall
– ́replace_attributes: true¿: Dies deutet darauf hin, dass die vorhandenen Attribute der Entität „sensor.wallbox_charges“ durch die neuen Daten ersetzt werden.– ‚Wert‘: Dieser Teil wird verwendet, um den Wert des Attributs „sessionscharge“ der Entität „sensor.wallbox_charges“ zu definieren. Der Wert wird mithilfe von Jinja2-Modellen dynamisch generiert. Sie umfasst:
– Die Umwandlung des Zeitstempels von „sensor.wallbox_portal_added_range_min“ in ein bestimmtes Datums- und Zeitformat mithilfe der Funktion ́timestamp_custoḿ.– Attribute: Hier werden die Daten der Ladesitzung definiert. Diese Daten werden aus verschiedenen Entitäten berechnet, u. a. aus „sensor.wallbox_portal_added_energy“, „sensor.wallbox_portal_energy_price“, „sensor.wallbox_portal_added_range_min“, „sensor.wallbox_portal_added_range“ und dem aktuellen Zeitstempel (erhalten über ́now()́). Die Daten umfassen Verbrauch, Kosten, Dauer, Beginn, Ende, Kilometer und Zeitstempel der Ladesitzung.
– Die Dauer wird berechnet, indem der Startzeitstempel der Ladesitzung vom aktuellen Zeitstempel (in Sekunden) abgezogen wird. Dann werden diese Sekunden in Stunden und Minuten umgewandelt.
– In Abschnitt {{% if … %Mit dem Code wird überprüft, ob das Attribut „sessionscharge“ der Entität „sensor.wallbox_charges“ bereits definiert ist. Ist dies der Fall, werden die vorhandenen Daten gespeichert. Andernfalls werden die neuen Ladesitzungsdaten hinzugefügt.
– ‚Ziel‘: Es gibt das Zielunternehmen an, d. h. das Unternehmen, dessen Attribute aktualisiert werden. In diesem Fall ist die Zieleinheit „sensor.wallbox_charges“.
– enabled: true¿: Dies zeigt an, dass diese Aktion aktiviert ist und ausgeführt werden kann.
Ziel dieser Aktion ist es, die Daten jeder gerade abgeschlossenen Ladesitzung im Attribut „sessionscharge“ der Entität „sensor.wallbox_charges“ aufzuzeichnen. Dies ermöglicht es, jede durchgeführte Ladesitzung zu verfolgen.
Ergebnis
So wird bei jedem Ladeschluss der Entität sensor.wallbox _charges ein neuer Datensatz hinzugefügt.
Hier der Inhalt:
Hinzufügen einer Karte, die alle Ladesitzungen anzeigt
<div>Ladesitzungen</div>
Letzte Aktualisierung: {{ state_attr('sensor.sessions_de_charge','updated_at')}} <br><br>
{% set items = state_attr('sensor.wallbox_charges', 'sessionscharge') %}
<table width='100%'>
<tbody>
{% for i in range(0, items | count, 1) %}
<tr>
<td>{{ items[i].Anfang }} bis {{ items[i].fin }} ({{ items[i].Dauer }})</td>
<td>{{ items[i].Verbrauch }} kWh</td>
<td>+{{ items[i].km }} km</td>
<td>{{ items[i].cost }} €</td>
</tr>
{% endfor %}
</tbody>
</table>
Hinzufügen einer Karte, die eine Zusammenfassung nach Jahr, Monat und Woche anzeigt
Typ: Markdown Content: >-
<div><h1>Ladesitzungen</div> {%- set default_language = 'de' %} Letzte Aktualisierung: {{ state_attr('sensor.wallbox_charges','updated_at')}} <br><br>
{% set items = state_attr('sensor.wallbox_charges', 'sessionscharge') %} {% set sieben Tage = now() - timedelta(days=7) %} {% set power_Woche = namespace(value=0) %} {% set cost_woche = namespace(value=0) %} {% set einen Monat = now() - timedelta(days=30) %} {% set power_Monat = namespace(value=0) %} {% set cot_mois = namespace(value=0) %} {% set uneannee = now() - timedelta(days=365) %} {% set power_annee = namespace(value=0) %} {% set cout_annee = namespace(value=0) %} {% for i in range(0, items | count, 1) %} {% if items[i].saved_at | int >= as_timestamp(uneannee) %} {% set power_annee.value = power_annee.value + items[i].Verbrauch %} {% set cot_annee.value = cot_annee.value + items[i].kosten %} {% if items[i].saved_at | int >= as_timestamp(ein Monat) %} {% set power_mois.value = power_mois.value + items[i].Verbrauch %} {% set cot_mois.value = cot_mois.value + items[i].kosten %} {% if items[i].saved_at | int >= as_timestamp(sieben Tage) %} {% set power_woche.value = power_woche.value + items[i].Verbrauch %} {% set cout_swoche.value = cout_swoche.value + items[i].kosten %} {% endif %} {% endif %} {% endif %} {% endfor %}
</ha-alert> <ha-alert alert-type="info" title="Letzter Monat: {{ power_mois.value | int }} kWh - {{ cot_mois.value | float | round(2) }} €"></ha-alert> <ha-alert alert-type="info" title="Letztes Jahr: {{ power_annee.value | int }} kWh - {{ cot_annee.value | float | round(2) }} €"></ha-alert>
<br>
{% set items = state_attr('sensor.wallbox_charges', 'sessionscharge') %} {% set sieben Tage = now() - timedelta(days=7) %}
<table width='100%'> <tbody> {% for i in range(0, items | count, 1) %} {% if items[i].saved_at | int >= as_timestamp(sieben Tage) %} {% set datetime_obj = strptime(items[i].Anfang, '%d/%m/%Y %H:%M') %}
<tr> <td><h5>{{items[i].Anfang }} bis {{ items[i].fin }} ({{ items[i].Dauer }})</td> <td>{{ items[i].Verbrauch }} kWh</td> <td>+{{ items[i].km }} km</td> <td>{{ items[i].cost }} €</td> </tr> {% endif %} {% endfor %} </tbody> </table>
<ha-alert alert-type="success" title="Letzte Woche: {{ power_semaine.value | int}} kWh - {{ cot_semaine.value | float | round(2) }}€">
Stil: .: | ha-card { margin: 0px 0px 0px 0px; Box-Shadow: none; } ha-markdown: $: | h5 { font-size: 15px!wichtig; font-weight: normal! wichtig; Padding: 0px 0px 0px 8px!wichtig; Border-Left: 3px solid #429f46; }
Bonus: Speichern von Daten in einer CSV-Datei
Für die zukünftige Verwendung (und um Daten im Falle eines Problems nicht zu verlieren) habe ich beschlossen, jede Ladesitzung ohne eine CSV-Datei aufzuzeichnen. In jeder Sitzung wird eine Zeile hinzugefügt.
Hier ist, wie ich das erreicht habe.
Ich füge einen Sensor „Datei“ hinzu, der der CSV-Datei entspricht
Ich verwende eine Datei notify.yaml die sich im konfiguration.yaml-Ordner befindet, der in dieser Datei mit dem Befehl notify: !include notify.yaml
Ich erkläre diesen neuen Sensor mit diesem Code:
- name: Sitzungen_de_charge_CSV platform: file filename: /config/www/csv/sessions_de_charge.csv timestamp: false
Wenn ich also in die Datei schreiben möchte, muss ich nur den Dienst ausführen notify.sessions_de_charge_CSV
Ich füge eine Aktion hinzu.
Ich füge eine Aktion in der zuvor vorgestellten Automatisierung hinzu, die bei jeder Aufzeichnung einer Ladesitzung eine Zeile schreibt
Dienststelle: notify.sessions_de_charge_CSV data: Daten: {} Nachricht: >- {% set diff_seconds = now().timestamp() - states.sensor.wallbox_portal_added_range_min.state | as_timestamp %} {% set hours = (diff_seconds / 3600) | int %} {% set minutes = ((diff_seconds % 3600) / 60) | int %} {% set sessioncharge_string = "" + states('sensor.wallbox_portal_added_energy') | round(2) | replace('.', ',')| string + "; " + (states('sensor.wallbox_portal_energy_price') | float * states('sensor.wallbox_portal_added_energy') | float | round(2)) | round(2) | replace('.', ',')| string + "; " + 'd:d' | format(hours, minutes) | string + "; " + as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int | timestamp_custom('%d/%m/%Y', true) | string + "; " + as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int | timestamp_custom('%H:%M', true) | string + "; " + now().strftime(')%H:%M') | string + "; " + states('sensor.wallbox_portal_added_range') | int | string + "; " + now().timestamp() | int| string %} {{ sessioncharge_string }} enabled: true alias: Hinzufügen einer Zeile in der _de_charge.CSV-Sitzungsdatei















