Home Assistant Anleitung how to… Entwicklung von Entity-Werten mittels Ableitung interpretieren

Ich hatte ja bereits ausgeführt, dass ich mittels Home Assistant die Temperatur unserer Sauna „überwache“. Hierfür habe ich mittels ESPHome ein günstiges Thermometer für entsprechend hohe Temperaturen eingebunden und weiß so jederzeit, wie warm es in der Sauna ist.

Wie auch auch bereits geschrieben habe, möchte ich immer dann eine todoist-Aufgabe „Keller wischen“ erstellt bekommen, wenn ich mit dem Saunieren fertig bin.

Aber woran erkenne ich und, ob ich mit dem Saunieren wirklich fertig bin?

Klar, das naheliegendste ist eine simple Prüfung ob die Temperatur unterhalb eines bestimmten Schwellwertes liegt. Denn wenn es beispielsweise kälter als 25 Grad in der Sauna ist, ist diese wohl nicht eingeschaltet.

Wenn nun aber der ESPHome-Sensor (warum auch immer!) zwischenzeitlich nicht verfügbar (also unavailable) ist und dann wieder verfügbar ist, wird die Prüfung „Temperatur < 25 Grad“ triggern!

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 359 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Home Assistant: How to... Kurzanleitungen und Nützliches für Home Assistant!

Natürlich kann man diesen Umstand ignorieren, oder man ist ein Freak wie ich, und sucht nach einer besseren Lösung! 🙂

Die Lösung des Problems lautet Ableitung – also auf Englisch Derivative (Home Assistant Derivative)!

Mittels einer Ableitung einer Funktion erhält man die Info, ob die Funktion steigt oder sinkt. Also benötige ich eine Ableitung der Temperatur der Sauna. Denn nur wenn die Temperatur tatsächlich sinkt, möchte ich meine Automation ja auslösen lassen.

In Home Asistant definiert man hierfür einfach einen neuen Sensor, welche ich „sauna_derivative“ nenne. Hierbei legen wir fest, auf welchen Wert (also welche „Funktion“) sich die Ableitung beziehen soll und welcher Zeitraum hierbei betrachtet werden soll.

sensor:
- platform: derivative 
  source: sensor.temperatur_sauna
  name: sauna_derivative
  time_window: "01:00:00"

In meinem Fall habe ich eine Stunde (time_window: „01:00:00“) für die betrachtete Zeit gewählt.

Als Ergebnis erhalte ich nun einen neuen Sensor: sensor.sauna_derivative, welcher den Wert der Ableitung der Temperatur enthält.

Der Wertverlauf des neuen Sensors sieht dann konkret wie folgt aus:

Home Assistant Anleitung how to... Entwicklung von Entity-Werten mittels Ableitung interpretieren

Wenn die Sauna nicht in Betrieb ist, ist der Derivative-Sensor um den Wert Null (Bereich vor 18:45). Dann schalte ich die Sauna ein und die Kurve steigt deutlich an. Gegen 19:30 habe ich die Temperatur weiter hochgeschaltet, was den Sprung erklärt.

Gegen 21:30 war ich mit dem Saunieren fertig und der Sensor fällt deutlich ins Negative.

Aus „Versuchen“ weiß ich, dass es bis ca. -50 runtergeht. Also habe ich meine Automation wie folgt angepasst:

- alias: "Wischen nach Sauna"
  trigger:
    platform: numeric_state
    entity_id: sensor.sauna_derivative
    below: -40
    for:
      minutes: 1
  condition:
    condition: template
    #6*60*60=21600
    value_template: '{{ as_timestamp(now()) - (as_timestamp(state_attr("automation.wischen_nach_sauna", "last_triggered")) or 0) > 21600 }}'
  action:
  - service: todoist.new_task 
    data:
      content: Keller wischen!
      project: F5c
      due_date_string: Tomorrow

Sobald der Derivative-Sensor für mindestens eine Minute kleiner als -40 ist, wird die Automation getriggert.

Bislang hatte ich mit dieser Lösung noch keine falsche Auslösung der Automation, was mathematisch für mich auch absolut Sinn macht.

Die Lösung finde ich persönlich deswegen absolut genial, da fail-proven und dennoch einfach!

Weitere sinnvolle Anwendungsfälle habe ich für den Derivative-Sensor noch nicht!

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

Foto des Autors
Autor
Olli
Ca. Ende 30, seit Windows 3.1 Fan von Computern, Gadgets, Handys und allem, was sich irgendwie programmieren lässt. Ich mag es gerne individuell und möglichst einfach, probiere aber auch gerne neue Dinge sofort aus. :) Konnte ich dir helfen? Dann würde ich mich über ein Bier freuen ;) Bier-Spende

2 Gedanken zu „Home Assistant Anleitung how to… Entwicklung von Entity-Werten mittels Ableitung interpretieren“

  1. Schöner Anwendungsfall hierfür wäre doch der Luftdrucktrend und dann mittelbar als Anzeige „Steigt“ oder „Fällt“. Hab den Sensor grade aufgebaut, mal sehen was bei rauskommt.

    Antworten
  2. Hi, sehr gute Idee! Gleiche Idee hatte ich auch, um zu erkennen, wann mein Warmwasserboiler über die Gastherme aufgeheizt wird. Ich habe einen separaten Gaszähler, welcher geloggt wird und so könnte ich tatsächlich den Gasverbrauch für die WW Bereitung rausrechnen. Bin noch nicht so firm in der „Yaml“ Programmierung, aber bin zumindest mal auf die Idee mit dem Ableitungssensor selber gekommen. Ich werde mich bei dir an den „Programmierbeispielen“ mal etwas bedienen:-)

    Antworten

Schreibe einen Kommentar