Sensor Status "unavailable" - letzten Status setzen?

Hallo zusammen,

ich habe über Sunspec den Wechselrichterdaten in HA integriert.
Sobald der Wechselrichter jedoch Abends (sobald der Ertrag weg ist) in Standby geht, sind alle Sensoren auf “unavailable”. Damit funktionieren meine Werte / Verknüpfungen nicht mehr.

Ich hatte gelesen, dass man irgendwie den letzten Wert vor unavailable setzen kann, sobald der Sensor auf unavailable wechseln will.

Kann mir jemand weiterhelfen, wie Ich das umsetzen kann?

Aktuell geht es mir um den sensor:
sensor.sma_wr_modbus_dermeasureac_total_energy_injected

Vielen Dank schonmal,
Gruß Daniel

Würde mich auch interessieren.

Danke und Gruß
Norman

du meintest das hier?

template:
  - sensor:
      - name: "Transmission Down Speed"
        unit_of_measurement: "kB/s"
        state: "{{ states('sensor.transmission_down_speed')|float * 1024 }}"
        availability: "{{ is_number(states('sensor.transmission_down_speed')) }}"

Also das availablity_template mit dem du sicher stellen kannst das ein template sensor entweder einen numerischen wert hat oder halt keinen und nicht versehentlich unavailable.
Vielleicht gepaart mit einem
| float(default=0)
damit er zumindest mal 0 ist und nicht gar nix zurückliefert?
Du wirst vermutlich eh ein template sensor bauen müssen oder kannst due das availability_template in den jetzigen Sensor einbauen? Sprich kommt der von der Integration oder ist es ein gemplate sensor?

Den letzten Wert bekommst du auch nur dadurch das du den original sensor in einen 2ten kopierst und zwar nur dann wenn er nicht unknown oder unavailable ist und dann mit dem 2ten Wert arbeitest.

EDIT:
Was dich aber auch nicht weiterbringt wenn dein HA mal neu startet denn auch dann ist der 2te Sensor unknown … sprich es ist nicht ganz trivial.

Ich würde einen default=0 benutzen wenn kein Wert geliefert wird, damit sollte man immer noch besser rechnen können als mit unavailable. Und das klappt dann auch nach einem Neustart von HA.

Hallo zusammen,
ich hänge mich mal hier dran.

Ich habe 3 Sensoren meines Solarwechselrichters, die bei Sonnenuntergang auf “unavailable bzw. unknown” gehen. Ich versuche seit Tage das mit den Template Sensoren hinzubekommen, leider erfolglos.

Hat jemand die Zeit, die Muse und die Lust mir das etwas genauer zu erlären bzw. beim Coden zu helfen? Hab da echt nen Knoten im Kopp.

Die Sensoren wären:

sensor.apsystems_apsystems_ez1_m_lifetime_production

sensor.apsystems_apsystems_ez1_m_today_production

sensor.apsystems_apsystems_ez1_m_total_power

Vielen Dank im Vorraus für die Hilfe und Unterstützung!

Gruß
Marco

Was möchtest Du genau haben?
Welchen Wert sollen die Template Sensoren annehmen, wenn der echte Sensor unavailable ist?

0 oder den letzten Wert bevor der Sensor zu unavailable wechselt?

Gruß
Osorkon

Hi Osorkon,

danke für deine Antwort.
Am besten wäre es wenn der letzte Wert eingetragen bleibt, das hatte ich vergessen dazu zu schreiben.

Salü :slight_smile:

Triggerbasierter Template-Sensor wäre da wohl das Zauberwort, so hab ich das bei meinen BLE Tür/Fenster-Sensoren gelöst, die melden ja nur wenn man Tür bzw. Fenster öffnet/schliesst. Und einen Reboot vom HA überleben die Sensoren dann nicht. Ein weiterer Vorteil ist bei Temperatur-Sensoren oder sowas das man die Hardware drunter tauschen kann ohne die Statistik zu verlieren (zumindest wenn man aus welchen Gründen auch immer nicht die selbe Entitäts-ID nehmen kann), dann lässt sich der Quell-Sensor hier einfach ändern.

- trigger:
  - platform: state
    entity_id: binary_sensor.doorsensor_housedoor_2813_opening
    not_to:
      - "unknown"
      - "unavailable"
      - "error"
  binary_sensor:
    - name: "DoorWindowDetection_HouseDoor"
      unique_id: "doorwindowdetection_housedoor"
      state: >
        {% if is_state("binary_sensor.doorsensor_housedoor_2813_opening", "on") %}
          on
        {% elif is_state("binary_sensor.doorsensor_housedoor_2813_opening", "off") %}
          off
        {% endif %}
      icon: >
        {% if is_state("binary_sensor.doorsensor_housedoor_2813_opening", "on") %}
          mdi:door-open
        {% elif is_state("binary_sensor.doorsensor_housedoor_2813_opening", "off") %}
          mdi:door-closed
        {% endif %}
      device_class: door

oder

- trigger:
  - platform: state
    entity_id: sensor.durchschnitt_temp_aussen
    not_from:
      - "unknown"
      - "unavailable"
    not_to:
      - "unknown"
      - "unavailable"
  sensor:
    - name: "Weather Fog Label"
      unique_id: weather_fog_label
      state: >
        {% set fsi = 2 * (states('sensor.durchschnitt_temp_aussen') | float(0) - states('sensor.durchschnitt_thermal_comfort_aussen_dew_point') | float(0)) + 2 * (states('sensor.durchschnitt_temp_aussen') | float(0) - state_attr('sensor.weatherdata850hpa', 'hpa850Data')['zrettts0'] | float(0)) + (state_attr('sensor.weatherdata850hpa', 'hpa850Data')['zklfffs0'] | float(0) * 1.944) %}
        {% if fsi | float(0) < 31 %}
          hohe Wahrscheinlichkeit
        {% elif fsi | float(0) >= 31 and fsi | float(0) <= 55 %}
          moderate Wahrscheinlichkeit
        {% elif fsi | float(0) >= 55 %}
          niedrige Wahrscheinlichkeit
        {% endif %}
      availability: >
        {{ states('sensor.durchschnitt_temp_aussen') | float(none) != none }}
      device_class: enum
      icon: mdi:weather-fog
1 „Gefällt mir“

Ein einfacher Template Sensor ist nur bedingt brauchbar. Da dieser leider den Wert nach einem Home Assistant Neustart nicht beibehalten tut, sollte der Original Sensor in dieser Zeit als unavailable geführt werden.

Das Thema Trigger Based Sensor ist schon mal gefallen und wäre das richtige an der Stelle.

Das Prinzip ist:

  • Wenn der Original Sensor sich ändert und dieser Zustand ist “unavailable” oder “unknown” , soll der Template Sensor den Wert von sich selbst übernehmen.
  • Sonst soll der Template Sensor den Wert vom Original Sensor übernehmen
template:
  - trigger:
        - platform: state
          entity_id:
            - sensor.apsystems_apsystems_ez1_m_lifetime_production
    sensor:
      - name: Lifetime Production
        unique_id: 2f2d23d0-d5ad-11ee-a824-ffb871ba3045
        state: |
          {% set sensor = states('sensor.apsystems_apsystems_ez1_m_lifetime_production') %}
          {% if sensor == 'unavailable' or sensor == 'unknown' %}
          {{ this.state }}
          {% else %}
          {{ sensor }}
          {% endif %}
        state_class: total_increasing
        device_class: energy
        unit_of_measurement: "kWh"

Gruß
Osorkon

1 „Gefällt mir“

Dann wäre das aber um einiges einfacher

not_from:
   - "unknown"
   - "unavailable"
not_to:
   - "unknown"
   - "unavailable"

Dann aber bitte nur mit

not_to:
   - "unknown"
   - "unavailable"

Von “unknown” und “unavailable” zu neuen Wert, möchtest Du die Änderung ja mit nehmen und nicht erst wem ein zweiter neuer Wert ankommt, oder?

Auf zwei Beinen steht es sich bekanntlich bequemer :wink:

Lieber eine Lösungsmöglichkeit zu viel als eine zu wenig.

Deinen Tür Sensor kannst Du auch schlanker gestalten.

  - trigger:
     - platform: state
       entity_id: binary_sensor.doorsensor_housedoor_2813_opening
       to:
         - "on"
         - "off"
     binary_sensor:
       - name: "DoorWindowDetection_HouseDoor"
         unique_id: "doorwindowdetection_housedoor"
         state: |
           {{ is_state('binary_sensor.doorsensor_housedoor_2813_opening', 'on')}}
         device_class: door

Das Icon “door” brauchst Du ja nicht angeben, wenn Du schon die Device Class Door definiert hast.

Gruß
Osorkon

Jetzt hast du mich aber verunsichert :smiley:
Aber beim Tür sensor hab ich kein “from” drin, beim Nebelwahrscheinlichkeitssensor, wäre es egal weil der jedes Mal misst wenn sich die Temperatur ändert, aber ich nehme das mal mit und mach die Sensoren mal schlanker :wink:

[quote=“Osorkon, post:8, topic:9813”

Nur für mein Verständniss, den Code packe ich dann in die template.yaml, ist das richtig ? Die ist richtig inkludiert.

Wenn du eine template.yaml hast, musst du

weg lassen.

1 „Gefällt mir“
  - trigger:
        - platform: state
          entity_id:
            - sensor.apsystems_apsystems_ez1_m_today_production
    sensor:
      - name: EZ1-M Today Production
        unique_id: 2f2d23d0-d5ad-11ee-a824-ffb871ba3045
        state: |
          {% set sensor = states('sensor.apsystems_apsystems_ez1_m_today_production') %}
          {% if sensor == 'unavailable' or sensor == 'unknown' %}
          {{ this.state }}
          {% else %}
          {{ sensor }}
          {% endif %}
        state_class: total_increasing
        device_class: energy
        unit_of_measurement: "kWh"

Funktioniert leider nicht, seoren sind wieder weg :frowning:

Welcher Sensor ist weg?

sensor.apsystems_apsystems_ez1_m_today_production

Oder der neue Template Sensor

sensor.ez1_m_today_production

Gruß
Osorkon

Ich versteh es nicht, hinterlegt in der template.yaml …

Du hast den Template Sensor wie oben aufgeführt angelegt. Die Konfiguration geprüft und die Template Konfiguration neu geladen.

Taucht der neue Sensor sensor.ez1_m_today_production nun als neue Entität auf?

Gruß
Osorkon

Nein :frowning:
Habe den Code in die Template.yaml, ohne das “template:” vorne, überprüft, keine Fehler, Neustart, keine Entität sensor.ez1_m_today_production vorhanden.

Probier mal so

 - trigger:
        - platform: state
          entity_id:
            - sensor.apsystems_apsystems_ez1_m_today_production
		  not_to:
			- "unknown"
			- "unavailable"
			- "error"
    sensor:
      - name: EZ1-M Today Production
        unique_id: ez1m_today_production
        state: {{ states('sensor.apsystems_apsystems_ez1_m_today_production') }}
        state_class: total_increasing
        device_class: energy
        unit_of_measurement: "kWh"
1 „Gefällt mir“

- platform
und der Teil darunter sind zu weit eingerückt. Evtl. liegt es daran.

1 „Gefällt mir“