Oft kommen neue HA User hierher, weil sie eine Automatisierung erstellt haben und die einfach nicht das macht, was man will.
Ein häufiger Fehler ist, das man denkt, eine Automatisierung startet immer dann, wenn irgendein Wert über einem festgelegten Wert ist.
Beispiel:
Vom Grundgedanken her sollte diese Automatisierung immer dann, wenn die Außentemperatur über 25 Grad ist und es nach 13:00 Uhr ist, bestimmte Rolläden schließen, damit die Sonne nicht in die Zimmer knallt.
Kurz gesagt: Wenn Außentemperatur größer 25 Grad UND es nach 13:00 Uhr ist, dann schließe die Rolläden.
Grober Fehler.
Tatsächlich macht die Routine folgendes.
Wenn die Außentemperatur über 25 Grad geht, also z.B. von 24,6 auf 25,1 Grad, dann wird diese Automatisierung gestartet. UND NUR DANN !!!!
Geht die Temperatur von 25,1 auf 26 Grad, rührt sich die Automatisierung keinen Meter. Und das ist der Denkfehler, den viele machen. Ich übrigens auch immer wieder mal gerne.
Wenn jetzt also um 12:30 Uhr die Temperatur über 25 Grad ansteigt, bleiben die Rolläden oben, weil die Bedingung Uhrzeit nicht erfüllt ist. Ist es dann aber 13:30 Uhr, wird die Automatisierung ja nicht mehr gestartet, weil die Temperatur schon über 25 Grad ist.
Richtiger wäre es, wenn man die Automatisierung wie folgt erstellt.
Die Automatisierung wird also gestartet, wenn die Temperatur über 25 Grad klettert ODER wenn es 13:00:05 Uhr ist.
Merke: Auslöser sind immer ODER Verknüpft, wenn man nichts anderes programmiert. ODER heißt, einer der Auslöser muß zutreffen, dann gehts los.
Läuft die Programmierung, wird geprüft, ob es NACH 13:00:00 Uhr ist (deswegen oben Auslöser 5 Sekunden nach 13:00 Uhr) UND ob die Temperatur über 15 Grad ist.
Merke: Bedingungen sind UND Verknüpft, außer man programmiert was anderes. UND heißt, ALLE Bedingungen müssen zutreffen, damit es weiter geht.
Passt nur eine nicht, wird die Automatisierung abgebrochen.
Unsere Automatisierung wird also immer dann gestartet, wenn die Temperatur über 25 Grad geht oder um 13:00:05 Uhr.
Da einer der Auslöser ausreicht, die Automatisierung zu starten, müssen wir mit den Bedingungen festlegen, das auch beide zutreffen.
Sprich, wird es VOR 13:00 Uhr über 25 Grad, sollen die Rolläden oben bleiben, weil die Sonne noch nicht in die Räume scheinen kann.
Um 13:00 Uhr prüfen wird dann aber nochmal, ob die Temperatur über 25 Grad ist und wenn ja, dann fahren die Rolläden herunter.
Geht die Temperatur nach 13:00 Uhr auf über 25 Grad, sind auch neide Bedingungen erfüllt und die Rolläden fahren herunter.
Wir sehen also, das UND oder ODER Verknüpfen ist extrem wichtig und es macht manchmal durchaus Sinn, sein Vorhaben erst mal grob in einem Ablaufplan zu skizieren und dann in eine Automatisierung umzusetzen.
Ein häufiger Fehler ist, das man denkt, eine Automatisierung startet immer dann, wenn irgendein Wert über einem festgelegten Wert ist.
Beispiel:
Code:
alias: Rollo schließen bei >25 Grad
description: >-
Schließt die vorderen Rollos wenn die Temperatur über 25 Grad ist und es nach
13 Uhr ist
trigger:
- platform: numeric_state
entity_id:
- sensor.opentherm_outdoor_temp
above: 25
condition:
- condition: time
after: "13:00:00"
weekday:
- mon
- tue
- wed
- thu
- fri
- sat
- sun
action:
- service: cover.close_cover
data: {}
target:
entity_id:
- cover.wohnzimmer_rollo_1_curtain
- cover.wohnzimmer_rollo_3_curtain
- cover.buro_rollo_curtain
mode: single
Kurz gesagt: Wenn Außentemperatur größer 25 Grad UND es nach 13:00 Uhr ist, dann schließe die Rolläden.
Grober Fehler.
Tatsächlich macht die Routine folgendes.
Wenn die Außentemperatur über 25 Grad geht, also z.B. von 24,6 auf 25,1 Grad, dann wird diese Automatisierung gestartet. UND NUR DANN !!!!
Geht die Temperatur von 25,1 auf 26 Grad, rührt sich die Automatisierung keinen Meter. Und das ist der Denkfehler, den viele machen. Ich übrigens auch immer wieder mal gerne.
Wenn jetzt also um 12:30 Uhr die Temperatur über 25 Grad ansteigt, bleiben die Rolläden oben, weil die Bedingung Uhrzeit nicht erfüllt ist. Ist es dann aber 13:30 Uhr, wird die Automatisierung ja nicht mehr gestartet, weil die Temperatur schon über 25 Grad ist.
Richtiger wäre es, wenn man die Automatisierung wie folgt erstellt.
Code:
alias: Rollo schließen bei >25 Grad
description: >-
Schließt die vorderen Rollos wenn die Temperatur über 25 Grad ist und es nach
13 Uhr ist
trigger:
- platform: numeric_state
entity_id:
- sensor.opentherm_outdoor_temp
above: 25
- platform: time
at: "13:00:05"
condition:
- condition: time
after: "13:00:00"
weekday:
- mon
- tue
- wed
- thu
- fri
- sat
- sun
- condition: numeric_state
entity_id: sensor.opentherm_outdoor_temp
above: 25
action:
- service: cover.close_cover
data: {}
target:
entity_id:
- cover.wohnzimmer_rollo_1_curtain
- cover.wohnzimmer_rollo_3_curtain
- cover.buro_rollo_curtain
mode: single
Merke: Auslöser sind immer ODER Verknüpft, wenn man nichts anderes programmiert. ODER heißt, einer der Auslöser muß zutreffen, dann gehts los.
Läuft die Programmierung, wird geprüft, ob es NACH 13:00:00 Uhr ist (deswegen oben Auslöser 5 Sekunden nach 13:00 Uhr) UND ob die Temperatur über 15 Grad ist.
Merke: Bedingungen sind UND Verknüpft, außer man programmiert was anderes. UND heißt, ALLE Bedingungen müssen zutreffen, damit es weiter geht.
Passt nur eine nicht, wird die Automatisierung abgebrochen.
Unsere Automatisierung wird also immer dann gestartet, wenn die Temperatur über 25 Grad geht oder um 13:00:05 Uhr.
Da einer der Auslöser ausreicht, die Automatisierung zu starten, müssen wir mit den Bedingungen festlegen, das auch beide zutreffen.
Sprich, wird es VOR 13:00 Uhr über 25 Grad, sollen die Rolläden oben bleiben, weil die Sonne noch nicht in die Räume scheinen kann.
Um 13:00 Uhr prüfen wird dann aber nochmal, ob die Temperatur über 25 Grad ist und wenn ja, dann fahren die Rolläden herunter.
Geht die Temperatur nach 13:00 Uhr auf über 25 Grad, sind auch neide Bedingungen erfüllt und die Rolläden fahren herunter.
Wir sehen also, das UND oder ODER Verknüpfen ist extrem wichtig und es macht manchmal durchaus Sinn, sein Vorhaben erst mal grob in einem Ablaufplan zu skizieren und dann in eine Automatisierung umzusetzen.