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
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders รผberlegen!
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:
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!
Produktempfehlungen
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:-)
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.