Sensorwerte vergleichen
Wie kann man die Werte zweier Sensoren miteinander vergleichen und damt eine Automation triggern?
Beispiel:
Wenn die Temperatur an Sensor 1 größer ist als die an Sensor 2 dann mache xxxx
Von Smart Home Begeisterten für Smart Home Begeisterte und Alle die es noch werden wollen 😀 - Deutschsprachige Home Assistant Community -
https://community.smarthome-for-dummies.de/
https://community.smarthome-for-dummies.de/viewtopic.php?t=864
Wie kann man die Werte zweier Sensoren miteinander vergleichen und damt eine Automation triggern?
Beispiel:
Wenn die Temperatur an Sensor 1 größer ist als die an Sensor 2 dann mache xxxx
Da gibt es mehrere Möglichkeiten.
Eine wäre, als Auslöser ein Template zur verwenden.
Eine andere über ein Template Sensor.
Der Template Sensor hätte den Vorteil, dass Du Diesen zum einem in weitere Automatisierungen berücksichtigen kannst. Und Du könntest auch den Zeitfaktor berücksichtigen, also größer als für x Minuten.
Für beides kann ich gerne heute Abend ein Bsp. reinstellen.
Wenn Du mir derweilen, die Entitäten der Sensoren und was genau mit was vergleichen werden soll bereitstellen kannst, kann das in den Templates berücksichtigen.
Damit Du Dich solange nicht langweilen tust.
Kannst Du Dich schon mal in das Thema Templating einlesen.
Gruß
Osorkon
Die Automation würde konkret lauten:
Trigger:
wenn die Temperatur sensor.netatmo_garten_temperature für 15 Min höher ist als die Temperatur sensor.netatmo_innen_temperature
Dann:
notify per Whatsapp: "Fenster schließen"
Ist bein Den Temperaturen draußen gerade ganz sinnvoll...
Fangen wir mal mit dem Template an, welches die Differenz zwischen Außen-Temperatur und Innen-Temperatur ermittelt
Code: Alles auswählen
{{ ( states('sensor.netatmo_garten_temperature') | float(0) - states('sensor.netatmo_innen_temperature') | float(0) ) | round(2) }}
mit
Code: Alles auswählen
| float(0)
formatierst Du den Sensorwert in eine Kommazahl. In Klammern gibst Du den default Wert an, falls der Sensor nicht verfügbar ist. Das verhindert, dass das Template einen Fehler ausgibt.
mit
Code: Alles auswählen
| round(2)
Rundest Du das Ergebnis auf 2 Nachkommastellen.
Das Ergebnis ist dann ein Zahl z.B. 4.91
Wenn Du einen Vergleichsoperator ins Spiel bringst.
Code: Alles auswählen
{{ ( states('sensor.netatmo_garten_temperature') | float(0) - states('sensor.netatmo_innen_temperature') | float(0) ) | round(2) > 0 }}
Ist das Ergebnis True oder False
Template's kannst Du im Bereich Entwicklungswerkzeuge -> Template im Template-Editor testen.
Diese Template kannst Du so als Template Trigger bereits verwenden.
Mit Angabe von Für 15Min. Löst der Trigger aus, sobald die Außen-Temperatur über die Innen-Temperatur steigt und 15min über der Innen-Temperatur bleibt.
Du kannst auch mit einem Template Sensor Arbeiten, wenn Du den Zustand Außen > Innen, entweder als Sensor im Dashboard verwenden willst, oder um in Automatisierungen anstatt mit Template Trigger mit einem Zustand Trigger zu arbeiten.
Auszug aus der template.yaml
Code: Alles auswählen
#template.yaml
- binary_sensor:
- name: Temperaturwarnung
state: |
{{ ( states('sensor.netatmo_garten_temperature') | float(0) - states('sensor.netatmo_innen_temperature') | float(0) ) | round(2) > 0 }}
device_class: heat
unique_id: 4600d070-2013-11ee-9d89-15530b5006f6
Wenn Du Deinen Konfiguration nicht aufgeteilt hast (Hier geht es zu Dokumentation)
sieht der code in der configuration.yaml so aus:
Code: Alles auswählen
#configuration.yaml
template:
- binary_sensor:
- name: Temperaturwarnung
state: |
{{ ( states('sensor.netatmo_garten_temperature') | float(0) - states('sensor.netatmo_innen_temperature') | float(0) ) | round(2) > 0 }}
device_class: heat
unique_id: 4600d070-2013-11ee-9d89-15530b5006f6
Du erstellst damit mit Hilfe der Integration Template einen Binary Sensor.
Die Device Class kannst Auch weg lassen, diese definiert das Icon und den Zustand der im Dashboard angezeigt wird.
Mit der Verwendung der Unique ID (Bei mir ist es eine Zeitstempler basierte Unique ID über einen ID Generator erstellt)
Kannst Du den so erstellten Sensor in der GUI Konfigurieren, das Heist den Namen, das Icon und die device class ändern.
Bei jeder Änderung in den yaml Dateien solltest Du immer zuerst die Konfiguration Prüfen
Entwicklungswerkzeuge -> YAML
Danach reicht es aus die Template Entitäten Neu zu laden.
Jetzt kannst Du den so erstellten Template Sensor in Deinen Automatisierungen verwenden.
Auslöser -> Zustand
Gruß
Osorkon
@Osorkon - ich hab noch vor dem Zahnarzttermin die Automation aufgesetzt....
Gerade hat der CallMeBot mich per Whatsapp daran erinnert, die Fenster zu schließen!
Echt super - bin begeistert. es hat funktioniert.
Werd mich doch mal in die Syntax der Templates einarbeiten müssen....
TOP!
Das ganze funktioniert aber nur, wenn Du Dich noch Zuhause befindest. Aus der Ferne kannst Du ja das Fenster nicht schließen, oder?
Da wurde sich vielleicht noch eine Automatisierung anbieten, wie:
Vor dem Verlassen des Hauses eine Benachrichtigung wenn die Tageshöchsttemperatur (Forecast) höher ist als die Innen-Temperatur. Oder wenn Regen vorhergesagt ist.
Oder Du schließt generell alle Fenster, bevor Du das Haus verlassen tust.
Ich habe mir einfach eine Automatisierung erstellt, die beim Öffnen der Haustür eine Lapme rot aufleuchten lässt, wenn mindestens ein Fenster offen steht, sonst grün.
Gruß
Osorkon
Ja, das mit den Fenster schließen ist noch Handarbeit... da muss ich zuhause sein. Auch hab ich noch keine Sensoren an irgendeinem Fenster.
Als erstes wären da die Dachflächenfenster interessant, da es bei starkem Regen und Wind reinregnen kann.
Gibt es gute Neigungssensoren, die schon wenige Grad Neigung registrieren können? (Zigbee oder WIFI)