Sensor Status "unavailable" - letzten Status setzen?

Hallo zusammen, ich habe ebenfalls ein Problem mit einem Modbus Sensor.
Bin in dem Thema neu und verstehe es noch nicht so ganz :slight_smile:

Bei meinem sensor.modbus_pv_total_inverter_power wird im 5 Sec takt der Wert ausgelsen und angezeigt. Trotzdem wird immer wieder der Wert unavailable abwechselnd mit der Wert angezeigt.

Mein Sensor wurde in der Modbus Yaml so angelegt:

  sensors:
      - name: Modbus_PV_Total_Inverter_Power
        unit_of_measurement: W
        #input_type: holding
        #device_class: voltage
        state_class: measurement
        #scale: 0.01
        #offset: 0
        precision: 2
        data_type: int16
        slave: 1
        address: 35138 
        scan_interval: 5

was muss ich da jetzt genau hinzufügen, dass immer der letzte Wert dauerhaft angezeigt wird bis ein neuer Wert aktualisiert wird?

Danke für eure Hilfe :slight_smile:

:crayon:by HarryP: Codezeilen formatiert (bitte immer über </> einbinden)

1 „Gefällt mir“

Hallo

Hab das mal eingefügt bekomme aber folgenden Fehler:

Error loading /config/configuration.yaml: invalid key: “{“states (‘sensor.apsystems_balkon_today_production’)”: None}”
in “/config/template.yaml”, line 326, column 0

- trigger:
    - platform: state
      entity_id:
        - sensor.apsystems_balkon_today_production
      not_to:
        - "unknown"
        - "unavailable"
        - "error"

      sensor:
        - name: Balkon Today Production
          unique_id: ez1m_today_production
          state: { { states ('sensor.apsystems_balkon_today_production') } }
          state_class: total_increasing
          device_class: energy
          unit_of_measurement: "kWh"

Kann mir wer weiterhelfen warum das nicht passt?

1 „Gefällt mir“

Nicht

state: {{ states('sensor.apsystems_balkon_today_production') }}

Sonder:

state: "{{ states('sensor.apsystems_balkon_today_production') }}"

Oder

state: |
  {{ states('sensor.apsystems_balkon_today_production') }}

Gruß
Osorkon

1 „Gefällt mir“

Und kein Leerzeichen zwischen { und {

1 „Gefällt mir“

Hallo. Eine wichtige Lektion habe ich jetzt gelernt… Lies den Thread von oben und kopiere nicht einfach des letzten Eintrag. Erstmal Danke für Ihre tolle Vorarbeit. Jetzt bekam ich gestern Abend (nach Standby des Wechselrichter) die Anzeige “0”. Ist schonmal kein “unavailable” aber für den Tagesertrag trotzdem unschön. Gibt es eine Möglichkeit den letzten Wert > 0 oder den Tageshöchststand anzeigen zu lassen?

Danke im Voraus. Gruß Thomas

template:
# 8/1 Template Sensor APSYSTEM WR: letzten verfügbaren Wert für Tagesertrag anzeigen, bevor WR in Standby geht und alle seine Sensoren auf “unavailable” wechseln.
  - trigger:
     - platform: state
       entity_id:
         - sensor.apsystems_e07000039877_today_production
    sensor:
      - name: 8/1 Bkw Tagesertrag
        unique_id: "8/1_Bkw_Apsystem_RM_Tagesertrag"
        state: |
          {% set sensor = states('sensor.apsystems_e07000039877_today_production') %}
          {% if sensor == 'unavailable' or sensor == 'unknown' %}
          {{ this.state }}
          {% else %}
          {{ sensor }}
          {% endif %}
        state_class: total_increasing
        device_class: energy
        unit_of_measurement: "kWh"

Hallo zusammen,

warum erstellt ihr nicht einfach einen neuen Verbrauchszähler auf Basis des Zählers welcher “unavailable” wird und legt dort fest, dass dieser immer verfügbar ist?

Danach nur noch über Dienste >> “Verbrauchszähler: Kalibrieren” den aktuellen Wert des Quellsensors setzen.

Oder spricht da was dagegen?

VG
Alex

@DjLex danke für deinen Hinweis. Ich bin deiner Beschreibung gefolgt aber hänge an 2 Punkten bzw. haben ein Verständnisproblem.

  1. Bei der Erstellung des Verbrauchssensor den Unterpunkt “Regelmäßig zurücksetzen” aktivieren oder deaktivieren?

  2. Was meinst du mit “den aktuellen Wert des Quellsensors”?


    Leider ist der Wechselrichter heute schon in den Standby gegangen, sonst hätte ich vorm Fragen erstmal per Versuch/Fehlversuch probiert.

Gruß Thomas

Hi @Thomas2024

regelmäßig zurücksetzen habe ich bei mir nur beim Tageszähler aktiv.
Dort habe ich auch einen Reset-Zyklus von “täglich” gesetzt.

Beim Gesamt-Sensor habe ich keinen Zyklus eingestellt.

Mit aktuellem Wert meine ich den Wert in kWh den der Original-Gesamtsensor bereits hat.

Wenn es dir nur um den Tagesertrag in Wh geht, kannst du dir das aber sparen, da es ja ab dem nächsten Tag dann passt.

VG
Alex

Nachtrag - Hier nochmals die Zähler zum besseren Verständnis:

Hoymiles Gesamtzähler (welchen du über Dienste einen Startwert zuweisen kannst damit er mit dem Original-Zähler identisch ist, da dein neu angelegter Zähler ja sonst bei 0 anfängt)

Hoymiles Tageszähler

@DjLex
Hallo, mir reicht der Tageszähler aus.

Dank deines Posting konnte ich erfolgreich den eingesparten Betrag des Balkonkraftwerk korrigieren (1.Zeile). Hatte mich schon damit abgefunden.
2. Zeile ist der Sensor den Wechselrichter
3. Zeile ist der erstelle Templetsensor
4. Zeile ist der Verbrauchsensor, den ich mit deiner Hilfe stellt habe.
image

Schön, dass du den Thread wieder hochgeholt und deine Idee gepostet hast.

1 „Gefällt mir“

Hi @Thomas2024
freut mich, dass ich dir helfen konnte :wink:

Hallo,

ich muss das Thema leider noch einmal hochholen. In meinem Fall durch einen Solax-Wechselrichter.
Der Wert für die gesamte erzeugte elektrische Arbeit (kWh) verschwindet auch in meinem Fall, sobald der WR sich schlafen legt. Problem dabei ist, dass er am nächsten Tag in den ersten Minuten nach dem Starten des WR 0 ist, und erst später den intern gespeicherten Wert übernimmt und an HA bereit stellt.
Dieses Verhalten schmeißt täglich mein Energiedashboard über den Haufen in dem er z.B. 1660 kWh für heute zwischen 7 und 8 Uhr meldet. Klingt traumhaft, ist es aber leider nicht.
Ich hatte mir schon versucht per Helfer “Verbrauchszähler” ein speichernden Zählwerk zu basteln, habe dazu auch beim Erstellen die Option “Regelmäßige Rückstellung” verwendet, bringt aber leider nichts, da die grundlegende Entität beim Start scheinbar einige Male verschwindet, somit mehrfach addiert wird. Der Verbrauchzähler hat dann manchmal ein vielfaches des eigentlichen Wertes.
Dann habe ich diesen Thread gefunden und den oben erwähnten Template-Sensor übernommen und versucht anzupassen. Die Idee wäre, dass der Template-Sensor neben den Zuständen “unavailable” und “unkown” auch nicht 0 sein darf, erst wenn wieder ein Wert größer 0 kommt, soll dieser übernommen werden. Klappt aber leider auch nicht, bei “unavailable” und “unkown” behält er den alten Wert, bei 0 ist der Ausgangswert auch 0 :roll_eyes:

Das Code-Schnipsel aus meiner configuration.yaml sieht momentan so aus:

template:
-sensor 
 - name: "Solax Energy Total"
    unit_of_measurement: "kWh"
    state: "{{ state_attr('sensor.solax_rest_local', 'Data')[11] | float / 10  }}"
    device_class: energy
    state_class: total_increasing
    icon: mdi:chart-line

  # Zwischenspeicherung Solax Energy Total
  - name: "Solax Energy Total cached"
    unit_of_measurement: "kWh"
    state: |
          {% set sensor = states('sensor.solax_energy_total') %}
          {% if sensor == 'unavailable' or sensor == 'unknown' % or sensor == 0}
          {{ this.state }}
          {% else %}
          {{ sensor }}
          {% endif %}
    device_class: energy
    state_class: total_increasing
    icon: mdi:chart-line

Das erste Template, ist der Sensor, welcher nachts verschwindet, der wird aus einem Sensor extrahiert, der per Modbus-Port 506 den WLAN-Stick am WR abfragt.
Der Zweite soll den zwischengespeicherten Sensor darstellen, ich denke mir, man könnte das sicher auch beides ineinander schachteln, aber erstmal Step-by-Step für die Fehlersuche.

Das Ganze sieht dann beim Start des WR so aus:

Blau ist der direkt am WR ausgelesene Wert, gelb(versteckt sich viel hinter dem blau) ist der zwischengepeicherte Wert, rot ist ein Verbrauchszähler-Helfer mit der aktivierten Option “Regelmäßige Rückstellung”, als Eingangs-Entität hatte beides “Solax Energy” testweise verwendet, zeigt immer das gleich Verhalten.
Wie bekomme ich es nun hin, das er die 0 nicht nimmt, sondern bei dem Wert beibehält?
Einen Neustart von HA, wenn der WR bereits down ist, überlebt dieses gebastelte leider auch nicht.

weiter oben steht auch etwas von “trigger:” das funktioniert bei mir scheinbar nicht, da stürzt die ganze configuration.yaml zusammen, dass heißt, nichts aus dieser, auch andere Template-Sensoren funktioniert mehr.

Ich komm nicht mit :slight_smile:
Ist genau mein Problem, ich brauche meine Window Sensor Daten nach einem Reboot intakt. Das sollte Dein code ja machen, oder?
Wo genau muss das hin? Ist das eine Automation? Ein Template? Geht das so in die config-yaml? Brauche ich einen ‘key level’ davor und wenn ja: welchen? Und das ist ja schon ‘indented’, muss ich die Leerzeichen löschen?

Help, please :slight_smile:
Christoph