Ankündigung

Einklappen
Keine Ankündigung bisher.

Ableitungssensor > Steigung wird nicht aktualisiert, wenn Eingangssignal unverändert

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Ableitungssensor > Steigung wird nicht aktualisiert, wenn Eingangssignal unverändert

    Da ich auch über den Tellerrand schaue und mich in Homeassistant versuche, zeige ich hier meinen Workaround für das bekannte, anscheinend schon lange bestehende Problem, dass der Wert der Steigung beim Ableitungssensor nicht aktualisiert wird, falls das Eingangssignal keine neuen Werte liefert.

    Ich verwende den Ableitungssensor z.B., um die Veränderung des Zisterneninhalts festzustellen. Auf Basis der Steigung in Liter/Stunde kann ich in einem weiteren Template Sensor berechnen, wie lange es noch dauert, bis bei dieser Steigung die Zisterne voll bzw. leer ist.

    Da der Zisterneninhalt nach Ende des Regens, oder nach Ende der Wasserentnahme hier sehr stabil bleibt, blieb immer die letzte Steigung beim Ableitungssensor stehen.

    Workaround:
    Der Ableitungssensor bekommt nicht den Roh-Messwert der Zisterne sondern den Messwert + Zufallszahl

    Also:
    1. Zufallszahl Helfer erstellen mit MIN=1; MAX=100 Maßeiheit=L

    2. Template Sensor für den "korrigierten" Messwert erstellen:
    Code:
    {{ (states('sensor.zisterne_wasserstand_in_liter') | int()) + (states('sensor.zisterne_helfer_zufallszahl') | float(0) / 10000) }}
    3. Ableitungssensor mit den Daten des minimal rauschenden Messwertes erstellen
    Code:
      - platform: derivative
        source: sensor.zisterne_wasserstand_in_liter_incl_random
        name: Zisterne Wassermenge Veränderung
        round: 2
        unit_time: h
        unit: L/h
        time_window: "00:04:00"​
    4. Mit den Daten hab ich dann einen Template Sensor für die Textausgabe gefüttert
    Code:
    {% set max = states('input_number.zisterne_fassungsvermogen') | float(0) %}
    {% set act = states('sensor.zisterne_wasserstand_in_liter') | float(0) %}
    {% set change = states('sensor.zisterne_wassermenge_veranderung') | float(0) %}
    {% set changeAbs = change | float(0) | abs %}
    {% if act < max %}
     {% set remaining = max - act | float(0) %}
     {% else %}
     {% set remaining = 0 %}
     {% endif %}
    
    {% if change > 150.0 and remaining > 0 %}
    Zisterne voll in {{ (remaining / changeAbs * 60) | round(0) }} Minuten.
    Aktuell: Plus {{ changeAbs | int() }} Liter pro Stunde.
      {% elif change > 150.0 and remaining == 0 %}
    Zisterne bereits übervoll!!
    Aktuell: Plus {{ changeAbs | int() }} Liter pro Stunde.
      {% elif change < -150.0 and remaining > 0%}
    Zisterne leer in {{ (act / changeAbs * 60) | round() }} Minuten.
      Aktuell: Minus {{ changeAbs | int() }} Liter pro Stunde.
      {% elif change < -150.0 and remaining == 0%}
    Zisterne noch übervoll!
      Aktuell: Minus {{ changeAbs | int() }} Liter pro Stunde.
      {% else %}
      Nur minimale Wasserstand Veränderung
      {% endif %}​
Lädt...
X