werte vom Vortag sichern

gerds61

Member
Hallo,
ich bin neu in dem Thema. Ich habe mir Entitäten für meinen täglichen und monatlichen Stromverbrauch angelegt und möchte mir gerne die Werte des letzten Tages bzw. Monats sichern. Ich habe in diesem Forum zwar schon ähnliche Anfragen gefunden, komme aber damit nicht klar, bzw. sie funktionieren nicht. Kann mir jemand helfen ?
 
Hi :)

Ohne jetzt Ahnung davon zu haben... meinst Du nicht, dass es besser wäre, wenn Du statt einem "geht nicht" vielleicht etwas genauer beschreibst, wie es derzeit bei Dir aussieht und wo es Probleme gibt? 🙃

Poste doch erstmal Deinen bisherigen Code (dabei bitte diesen Thread beachten!) und dazu noch etwagige Fehlermeldungen, so ist es wesentlich einfacher für die Leute auch eine entsprechende Hilfestellung zu leisten 🙂
 
Ich habe noch keinen brauchbaren Code, ich habe mir Schnipsel aus diesem Thread rauskopiert:
https://forum.heimnetz.de/threads/einen-sensorwert-in-einen-anderen-kopieren.1288/
da steht dann sowas drin:

- trigger:
platform: time
at: "23:59:00"
sensor:
name: "Strom gestern"
unit_of_measurement: "kWh"
state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"

damit kann ich nichts anfangen, wenn ich das so in die configuration.yaml eintrage, bekomme ich diverse Syntaxfehler
 
wenn ich das so in die configuration.yaml eintrage, bekomme ich diverse Syntaxfehler
->
Code (dabei bitte diesen Thread beachten!)
Das könnte - nix genaues weiss man nicht - schon allein an der Formatierung des Codes liegen. Wenn Du das so in der Config drin stehen hast, wie Du es grade gepostet hast, dann stimmen schon die ganzen Einrückungen nicht. YAML ist da sehr empfindlich und die Einrückungen "müssen" stimmen, sonst wird das sowieso alles nichts - daher auch der Verweis auf den o.g. Thread, damit - wenn Code hier im Forum gepostet wird - auch die Einrückungen erhalten bleiben :)

Auch wenn ich keine Ahnung habe, aber hier wird Dir sicherlich noch wer weiterhelfen können. Ich habe daher bis jetzt nur grobe Vorarbeit geleistet 😁
 
Code:
- trigger:
    platform: time
    at: "23:59:00"
  sensor:
    name: "Strom gestern"
    unit_of_measurement: "kWh"
    state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"

jetzt aber richtig, das mit iif ist komisch, stand halt so im Thread, ist wohl ein Fehler, aber auch mit normalen if bekomme ich:

'trigger' is an invalid option for 'template'

wenn ich trigger nicht unter template packe kommen noch mehr Fehler
 
Zuletzt bearbeitet:
@gerds61 wirf mal nen Blick hier rein: https://www.home-assistant.io/integ...rs-buttons-images-numbers-selects-and-sensors
Würde sagen, alles um zwei Leerzeichen nach rechts rücken und ein uneingerücktes template: dadrüber setzen:
YAML:
template:
  - trigger:
      platform: time
      at: "23:59:00"
    sensor:
      name: "Strom gestern"
      unit_of_measurement: "kWh"
      state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"
Wenn Du schon ein nicht eingerücktes template: in der configuration.yaml stehen hast, dann dadrunter einordnen.

Bzw., wenn man sich genau an die Doku dort hält wäre es wohl
YAML:
template:
  - trigger:
      - platform: time_pattern
        hours: 23
        minutes: 59
    sensor:
      - name: "Strom gestern"
        unit_of_measurement: "kWh"
        state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"
- wäre also noch ne Alternative wenn das erste es nicht tut :)
 
Zuletzt bearbeitet:
Variante 2 bringt mir:
1712671317370.png
Variante 1 erstellt den Sensor, Zustand: unavailable

Kombi aus V1 und V2 ergibt dann:
Code:
  - trigger:
      - platform: time_pattern
        hours: 15
        minutes: 51
    sensor:
      name: "Strom gestern"
      unit_of_measurement: "kWh"
      state: "{{ if (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"

Der Sensor sieht dann so aus:

1712671212545.png


Also er hat was getan und auch aktualisiert, aber noch nicht das was ich will :-(
 
Variante 2 bringt mir:
Das ist laut der Fehlermeldung das, was ich hiermit meinte:
Wenn Du schon ein nicht eingerücktes template: in der configuration.yaml stehen hast, dann dadrunter einordnen.
Dieses nicht eingerückte template: darf nur einmal bestehen, ggf. also bei weiteren Sensoren das weglöschen und unter dem ersten hinzufügen.

Also so:
YAML:
template:
  - trigger:
      platform: time
      at: "23:59:00"
    sensor:
      name: "Strom gestern v1"
      unit_of_measurement: "kWh"
      state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"
  - trigger:
      - platform: time_pattern
        hours: 23
        minutes: 59
    sensor:
      - name: "Strom gestern v2"
        unit_of_measurement: "kWh"
        state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"

Kombi aus V1 und V2 ergibt dann:
Kombinieren solltest Du das ansich nicht, nur eins von beidem (oder beide untereinander) verwenden.

Wenn Du unter Entwicklerwerkzeuge => Template diese Zeile einträgst:
YAML:
{{ states('sensor.tagesverbrauch_strom') }}
- wird Dir dann rechts der erwartete Wert angezeigt?
 
ja, das funktioniert
Prima, dann kopier mal den YAML-Code mit den beiden Sensoren aus dem vorherigen Beitrag und schau, was das ergibt.

Den kompletten Neustart von HA nachdem Du Sensoren angelegt hast hast Du auf dem Schirm, ja?

Btw., es kann auch sein, dass er aktuell "unknown" ist, weil der Trigger bislang nicht ausgelöst wurde. Stell ihn doch versuchsweise mal auf "in 5 Minuten".
 
ok, ich habe jetzt die Reihenfolge geändert, also unter template erst die Trigger definiert, dann die Sensoren, damit hat's funktioniert

ich Danke Euch, es haben beide Varianten funktioniert v1 und v2
 
Eine Frage hätte ich doch noch:
mit Platform time oder time_pattern 23:59 kann ich das ja gut für den aktuellen Tag lösen, habt ihr auch eine Idee, wie ich den letzten Tag im Monat erwische, wird nicht nur gern die Vortageswerte speichern, sondern auch die Vormonatswerte
 
wie ich den letzten Tag des Monats ermittle, habe ich gefunden, aber an der Syntax für die Kombination mit der Zeit haperts noch

Code:
- binary_sensor:
    - name: Letzer Tag des Monats
      state: |
        {{ (now() + timedelta(days=1)).day == 1 }}
      unique_id: letzer_tag_des_monats
      icon: mdi:calendar
 
super hat funktioniert, hier nochmal füe alle Interessierten:

der Sensor:
Code:
###########################################
# letzter Tag des Monats 23:59
############################################

    - name: Letzer Tag des Monats
      state: |
        {{ (now() + timedelta(days=1)).day == 1 and now().hour == 23 and now().minute == 59 }}
      unique_id: letzer_tag_des_monats
      icon: mdi:calendar

und die Trigger:

Code:
# Strom gestern
####################
  - trigger:
      platform: time
      at: "23:59:59"
    sensor:
      name: "Strom gestern"
      unit_of_measurement: "kWh"
      state: "{{ iif (states('sensor.tagesverbrauch_strom'), states('sensor.tagesverbrauch_strom'), 0) }}"

####################
# Strom letzter Monat
####################
  - trigger:
      platform: state
      entity_id: binary_sensor.letzer_tag_des_monats
      from: "off"
      to: "on"
    sensor:
      name: "Strom letzter Monat"
      unit_of_measurement: "kWh"
      state: "{{ iif (states('sensor.monatsverbrauch_strom'), states('sensor.monatsverbrauch_strom'), 0) }}"
 
Zurück
Oben