Template Sensor speichern das er Neustart von HA gespeichert bleibt.

Barry Ricoh

Active member
Hallo Forum,
wie kann ich einen Templatesensorwert zwischenspeichern so das der Wert auch noch nach einem Neustart von HA erhalten bleibt?
 
Ich habe gelesen das man "Input Helper" als Speicher nutzen kann, und eine Automatisierung erstellt welche beim runterfahren von HA einem Input Helper den Wert eines Sensors zuweist.
Wahrscheinlich kann man das irgendwie auch auf einen trigger-based Sensor übertragen.
Muss ich mal ausprobieren ob und wie das geht.
Denn das wäre ja nur die Hälfte der Lösung. Es fehlt ja noch beim Hochfahren das Auslesen des Input Helpers in den Sensor.
Es gibt zwar auch den Trigger "HA Starten" als Auslöser einer Automation, aber finde im Moment keine Möglichkeit der Wertzuweisung des Sensors.
Könnte man das über ein Script machen?

Oder Denke ich wieder zu kompliziert? 🫣
 
Ich hab dir die Lösung doch vorgeschlagen, was schmeckt dir da jetzt nicht dran?

So sieht ein triggered template-sensor aus:
YAML:
#### template.yaml #####
- trigger:
    platform: state
    entity_id:
      - sensor.irgendwas
    not_to:
      - ''
      - 'unavailable'
      - 'unknown'
      - null
      - none
      -
    not_from:
      - 'unavailable'
      - 'unknown'
  sensor:
    name: "Was auch immer "
    state: "{{ irgendein template }}"
    attributes:
      was_weiss_ich: "{{ irgendein anderes template }}"

Sogar mit Schema um Attribute zu definieren, wenn man denn will.

Und wenn du da jetzt ganz genau hinguckst, dann sieht das aus wie eine Automation. Da kannst du dir abgucken, was für Trigger noch möglich sind.
 
Mir schmeckt alles an deiner Lösung, du meinst das ja auch gut,
aber trotzdem muss ich das doch erstmal verstehen und die Doku lesen, und umsetzen um Kopf.
Was könnte den der passende Trigger sein?
Wie finde ich die Formulierungen?
Wie muss die Syntax sein?
Das muss man doch alles erstmal rausfinden.
Ich habe alleine 2 Stunden gebraucht bis ich den "Data" "Value" Wert in der richtigen Form hatte.
Du machst das bestimmt schon lange und hast vielen geholfen, aber für mich ist da noch sehr viel zu lernen,
und vielleicht tue ich mich an der einen oder anderen Ecke auch schwerer als nötig, aber deshalb musst
du doch nicht eingeschnappt sein.

Der Punkt an dem ich zb. hängen geblieben bin, war das ich das so verstehe, das ich einen Trigger Sensor damit einrichte.
Aber mein Sensor existiert ja schon, also verstehe ich nicht wie ich einen bestehenden Sensor "triggern kann"?
Oder ich muss den bestehenden Sensor löschen und einen neuen "Trigger Sensor" definieren.
Kann ich den dann später genauso behandeln und benutzen wie den "normalen" Template Sensor?
 
Ich bin nicht eingeschnappt, ich wundere mich nur schon zum zweiten Mal, warum du komplizierte Wege gehen willst, wenn dir einfache Wege schon aufgezeigt werden.

Ich verstehe voll und ganz, dass du einige Sachen nicht verstehst und dich da rein arbeiten musst. Aber statt das zu tun oder weitere Infos zu liefern, mit denen dir geholfen werden kann, biegst du lieber ab und fährst Umwege. Und das versteh ich eben nicht.

Was du bzgl dieses Sensors nicht verstehst, steht in der Doku.
Ein template-sensor hat als Status das Ergebnis des templates. Da kann auch mal "unknown" oder "unavailable" bei raus kommen, zb nach dem Start von HA. Daher kann der Sensor selbst auch keine Werte über den Start von HA hinaus speichern.

Ein triggered template-sensor ändert seinen Status nur dann, wenn der trigger auslöst. Ähnlich einer Automation. Wenn du dir den Code oben anguckst, ist der Status des Sensors das, was in einer Automation die Aktion ist.
Trigger feuert -> Sensor ändert seinen Zustand.

Und damit du mir glaubst, dass ich nicht eingeschnappt bin und dir helfen will:
Wenn du gedanklich da nicht weiter kommst, dann schreib mal auf was genau du vorhast und poste am besten noch deinen bestehenden Sensor dazu
 
Vielen Dank für deine Antwort.
Wenn du sagst das du nicht eingeschnappt bist reicht mir doch deine Aussage vollkommen, warum soll ich dir das nicht glauben?
Ich zweifle keine deiner bisherigen Aussagen an.
Danke dir.
.
Ich hatte den "Triggerd Sensor" auch so verstanden wie ich ihn aus der Doku gelesen und du ihn jetzt erklärst hast.
Deshalb war der eigentlich raus für mich, da der den ich brauche im normalen Betrieb seinen Wert immer aus einer Integration liest, und dann ist da nix mit triggern. Dieser Wert soll aber bei einem Neustart auf seinem alten Wert gespeichert bleiben bis über die Integration wieder ein Wert kommt, das kann aber dauern. Solange soll der Sensor eben den letzten alten Wert behalten.

Dafür muss der Wert, der nach dem Neustart leer oder "unavailable" ist, seinen letzten Wert vor dem Runterfahren aus dem "Zwischenspeicher" lesen.
Und das ist der Punkt der mir jetzt noch fehlt.
Ich habe den normalen Betrieb am Laufen, und das Abspeichern beim herunterfahren (über die Automation in einem Input Helper gespeichert), es fehlt nur noch das Rücklesen beim Start von HA.
Und dazu habe ich noch gar keinen Code, deshalb kann ich hier auch nix davon schreiben.
Meine Idee dazu wäre jetzt über eine Automation getriggert durch HA Start dem Template Sensor erstmal mit dem Wert des "Input Helpers" füllt. Er hat dann solange den Wert von vor dem Herunterfahren bis wieder ein Wert von der Integration kommt.

Allerdings finde ich auch kein "Script ausführen" als Automationsaktion.
Aber grade gesehen es gibt den Dienst "script.turn_on".
Denke mal das ist ein Script starten, oder?
 
Zuletzt bearbeitet:
Wenn dein normaler template-sensor den Wert aus der Integration lesen kann, dann auch der triggered template-sensor.
Und ein trigger muss nicht zwangsläufig eine Status-Änderung einer Entität sein.
Aber nun gut, du willst es mit dem Helfer machen.

Ja, Script.turn_on ist richtig.
 
Okay, dann habe ich wieder was falsch verstanden.
Ein triggerd template-sensor, kann auch in der "template.yaml" den Wert aus einer Integration lesen ohne jedes mal einen neuen Trigger aus lösen zu müssen?
 
Da du weder verrätst, was für eine Integration, was für Daten und wie dein bisheriger template-sensor aussieht, lautet die Antwort "wahrscheinlich ja".
 
Wieso nicht verraten willst?
Da es mir ja erst mal um das "Wie" prinzipiell geht, war ich der Meinung das das zur Erklärung keine Rolle spielt.

Es geht mir immer noch um die Integration der Solaranlage. (Solarman)
Wenn die Logger offline sind, sind alle Werte die die Integration liefert nach einem Neustart von HA "unknown" bzw. stehen die Entitäten der Integration nicht zur Verfügung. Unter anderem eben auch die Energie und Leistungswerte.
Und da ich eine Karte habe in der die Werte angezeigt werden, sieht das eben doof aus wenn dort immer steht "Entität ist nicht verfügbar"
Also habe ich mir Template Sensoren für die Werte gemacht die ich in der Karte einsetze, aber die sind nach einem Neustart da, aber haben den Zustand "unknown" oder "unavailable", auch nicht viel besser.
Und zwar sind die das solange bis mal wieder genug Licht auf die Panele kommt, und grade im Winter kann das dauern.

Nehmen wir hier also nur mal einen der Werte als Beispiel, die Energie.

YAML:
  - name: "Gesamtleistung Solarman1"
    unit_of_measurement: "kWh"
    unique_id: "Gesamtleistung Solarman1"
    state_class: total_increasing
    device_class: energy
    icon: mdi:solar-power
    state: >-
     {% if states('sensor.solarman1_status_connection') %}
       {% if is_state('sensor.solarman1_status_connection', 'Connected') %}
         {% if states('sensor.solarman1_total_production')|float > 0.0 %}
         {{ states('sensor.solarman1_total_production') }}
         {% endif %}
       {% elif is_state('sensor.solarman1_status_connection', 'Disconnected') %}
         {{ states('sensor.gesamtleistung_solarman1') }}
       {% endif %}
     {% endif %}

Dann gibt es den Input Helfer:

YAML:
initial: null
editable: true
min: 0
max: 10000000
step: 1
mode: box
friendly_name: Zwischenspeicher Solarpanel 1

Und das Automationsscript welches den Wert beim Beenden von HA zwischenspeichert:

YAML:
 -id: xxxxxxxxxxxxxxxxxxxxxx
  alias: Sensor Gesamtleistung Solar 1 zwischenspeichern
  description: ''
  trigger:
  - platform: homeassistant
    event: shutdown
  condition: []
  action:
  - service: input_number.set_value
    data:
      value: "{{ states('sensor.gesamtleistung_solarman1') | float }}"
    target:
      entity_id: input_number.zwischenspeicher_solarpanel_1
  mode: single

Was ich jetzt brauche ist ein Rücklesen des "sensor.gesamtleistung_solarman1" aus dem "input_number.zwischenspeicher_solarpanel1"
beim starten von HA.


Sorry aber bis ich das hier alles zusammen kopiert habe dauert es was.
 
YAML:
- trigger:
    platform: state
    entity_id:
      - sensor.solarman1_total_production
    not_to:
      - ''
      - 'unavailable'
      - 'unknown'
      - null
      - none
  sensor:
    name: "Gesamtleistung Solarman1"
    unit_of_measurement: "kWh"
    state_class: total_increasing
    device_class: energy
    icon: mdi:solar-power
    state: "{{ states('sensor.solarman1_total_production') }}"


Und mehr brauchst du nicht. Bei jeder Änderung an sensor.solarman1_total_production wird der template-sensor aktualisiert. Ausnahme ist, wenn der Solarman-Sensor zu "unavailable" oder "unknown" oder gänzlich seinen Status verliert. Bei diesen Umständen bleibt der letzte Wert im Status. Sogar beim Neustart von HA
 
Yep.
Und dazu in der configuration.yaml:
YAML:
template: !include template.yaml

Und da gehören alle template Sensoren rein. Die kannst du auch über die Entwicklerwerkzeuge neu laden, ohne HA neu starten zu müssen
 
Ja das habe ich schon so drin.
Und nutze auch den „Teilstart“ von zB Templates.
Die Configuration.yaml ist fast leer.
 
Irgendwas passt nicht

Logger: homeassistant.config
Source: config.py:974
First occurred: 19:14:31 (1 occurrences)
Last logged: 19:14:31
Invalid config for [template]: [trigger] is an invalid option for [template]. Check: template->sensor->2->trigger. (See /config/configuration.yaml, line 23).
 
Einrückung etc so wie im Screenshot?
Vielleicht den Bindestrich vor trigger vergessen?
 

Anhänge

  • Screenshot_20221223_193424_Home Assistant.jpg
    Screenshot_20221223_193424_Home Assistant.jpg
    665,2 KB · Aufrufe: 7
Hatte die erste Zeile mit Trigger wohl zuweit eingerückt.
Den Teil nimmt er jetzt, aber jetzt wird es ganz merkwürdig.
Der ganze Teil darunter ist ja unverändert und funktionierte einwandfrei.
Jetzt aber kommt ein Fehler in Zeile 598 !!!!!!!!!!!!

Dort stehen 11 gleiche Sensoren untereinander, und jetzt wird die letzte Zeile des 9. von 11 Sensoren angmeckert.

YAML:
  - name: "Hauswirtschaft Aktive BA"
    state: >-
      {% if states('sensor.hauswirtschaft_betriebsart_aktuell') %}
        {% if is_state('sensor.hauswirtschaft_betriebsart_aktuell', '1') %}
          {{ 'Komfort' }}
        {% elif is_state('sensor.hauswirtschaft_betriebsart_aktuell', '2') %}
          {{ 'Prekomfort' }}
        {% elif is_state('sensor.hauswirtschaft_betriebsart_aktuell', '3') %}
          {{ 'Eco' }}
        {% else %}
          {{ 'Schutzbetrieb' }}
        {% endif %}
      {% endif %}                       <------ das ist Zeile 598!!!!!!!!!!!!!!!!!!
  - name: "Buero Aktive BA"
    state: >-
      {% if states('sensor.buero_betriebsart_aktuell') %}
        {% if is_state('sensor.buero_betriebsart_aktuell', '1') %}
          {{ 'Komfort' }}
        {% elif is_state('sensor.buero_betriebsart_aktuell', '2') %}
          {{ 'Prekomfort' }}
        {% elif is_state('sensor.buero_betriebsart_aktuell', '3') %}
          {{ 'Eco' }}
        {% else %}
          {{ 'Schutzbetrieb' }}
        {% endif %}
      {% endif %}
  - name: "Bad Aktive BA"
    state: >-
      {% if states('sensor.bad_betriebsart_aktuell') %}
        {% if is_state('sensor.bad_betriebsart_aktuell', '1') %}
          {{ 'Komfort' }}
        {% elif is_state('sensor.bad_betriebsart_aktuell', '2') %}
          {{ 'Prekomfort' }}
        {% elif is_state('sensor.bad_betriebsart_aktuell', '3') %}
          {{ 'Eco' }}
        {% else %}
          {{ 'Schutzbetrieb' }}
        {% endif %}
      {% endif %}
 
Kommen noch mehr Fehler

Logger: homeassistant.config
Source: config.py:974
First occurred: 19:30:10 (114 occurrences)
Last logged: 19:50:21

  • Invalid config for [template]: [name] is an invalid option for [template]. Check: template->name. (See /config/include/template.yaml, line 598).
  • Invalid config for [template]: [name] is an invalid option for [template]. Check: template->name. (See /config/include/template.yaml, line 611).
  • Invalid config for [template]: [trigger] is an invalid option for [template]. Check: template->sensor->2->trigger. (See /config/configuration.yaml, line 23).
  • Invalid config for [template]: [platform] is an invalid option for [template]. Check: template->platform. (See /config/include/template.yaml, line 0).
  • Invalid config for [template]: [platform] is an invalid option for [template]. Check: template->platform. (See /config/include/template.yaml, line 18).

Zeile 0 ist ja ganz merkwürdig.
Aber wie gesagt, lösche ich die beiden Trigger Sensoren und lasse alles andere unverändet - keine Fehler
 
Also der Fehler kommt definitiv vom Trigger Eintrag.
Wenn ich alles anderen mal aus der "template.yaml" lösche kommt trotzdem ein Fehler

Logger: homeassistant.config
Source: config.py:974
First occurred: 20:12:59 (2 occurrences)
Last logged: 20:12:59

  • Invalid config for [template]: [platform] is an invalid option for [template]. Check: template->platform. (See /config/include/template.yaml, line 0).
  • Invalid config for [template]: [platform] is an invalid option for [template]. Check: template->platform. (See /config/include/template.yaml, line 17).
Sonst nichts mehr in der Datei.

YAML:
- trigger:
  platform: state
  entity_id:
    - sensor.solarman1_total_production
  not_to:
    - ''
    - 'unavailable'
    - 'unknown'
    - null
    - none
  sensor:
    name: "Gesamtleistung Solarman1"
    unit_of_measurement: "kWh"
    state_class: total_increasing
    device_class: energy
    icon: mdi:solar-power
    state: "{{ states('sensor.solarman1_total_production') }}"
- trigger:
  platform: state
  entity_id:
    - sensor.solarman1_total_production
  not_to:
    - ''
    - 'unavailable'
    - 'unknown'
    - null
    - none
  sensor:
    name: "Gesamtleistung Solarman2"
    unit_of_measurement: "kWh"
    state_class: total_increasing
    device_class: energy
    icon: mdi:solar-power
    state: "{{ states('sensor.solarman2_total_production') }}"
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
5.021
Beiträge
50.325
Mitglieder
4.712
Neuestes Mitglied
ChristianH
Zurück
Oben