Kann man mehr oder weniger clever programmieren/automatisieren

klingt vielleicht wie eine seltsame Frage aber der Grund ist die Automatisierung meiner Rolläden-Beschattung aus diesem Post

So sieht die komplette Automation aus:

Wie man unschwer sieht, ist der erste trigger “Wenn es 12:30 ist” komplett überflüssig da der 2. trigger “Wenn es im Garten > 25°C ist” alles überschreibt.

Weiterhin soll die condition “Sommermonate an” und helper “Rollo_WZ” aus erfüllt sein.

So, was passiert jetzt:
an 365 Tagen wird 24 Std. lang geprüft, ob es draussen >25°C sind. und dann müssen die beiden conditions auch noch erfüllt sein.

Wäre es evtl besser, das umzudrehen und erst zu prüfen, ob es überhaupt gerade Sommer ist bevor der Rest gemacht wird?
Ich könnte mir vorstellen, daß zu viele Automationen, die mehr oder weniger die meiste Zeit gar nicht ausgeführt werden müssen evtl. das System belasten und verlangsamen.

Sorry für die vielleicht harten Worte, aber du hast es (immer) noch nicht verstanden.
So wie du das aktuell hast, ist der Auslöser um 12:30 tatsächlich überflüssig.
Aber es wird nicht andauernd geprüft.

Fangen wir bei deinem zweiten Punkt an.
Diese Automation prüft nichts, sondern sie wird durch ein Ereignis ausgelost.

Also:
Dein HA bekommt mitgeteilt (von einem Temperaturfühler oder einem Wetterdienst, je nachdem, was du als Auslöser definiert hast) dass es über 25 °C warm ist. Dann und nur dann genau einmal wird diese Automation durch den Temperaturauslöser aktiv, prüft dann die Bedingungen und wenn diese alle erfüllt sind, und nur dann, werden die Aktionen ausgeführt.

Wenn ich mich recht erinnere, wolltest du nicht, dass die Rollos vor 12:30 herunterfahren.
Deshalb brauchst du den Auslöser um 12:30 und musst zusätzlich bei den Bedingungen abfragen, ob es schon nach 12:30 ist.

So wie es jetzt ist, würden dir die Rollos auch schon um 9:00 herunterfahren, wenn es über da >25 °C wird bzw. gar nicht herunterfahren, wenn es nachts nicht und 25 °C abkühlt, weil die 25 °C Grenze nicht von kleiner 25 °C nach größer 25 °C durchschritten wird und somit die Automation gar nicht gestartet würde.

demnach wäre eine Umkehr dann eher kontraproduktiv.

Denn der Temperaturfühler meldet ja bestenfalls nur im Sommer, daß es evtl. >25° ist währen der Helper “Sommermonate an” das ja wohl täglich tut …

das sollte aber nicht passieren.
Mit dem 2. Trigger wollte ich erreichen, daß es auch nach 12:30 bei >25° herunterfährt und nicht nur exakt um 12:30 …

So ganz ist mir nicht klar, was du umkehren möchtest, aber wenn du den Helfer als Auslöser nutzen wollen würdest, würde das nur 1x im Jahr vermutlich auslösen. Da sind wir wieder beim Verständnis von Auslösern.
Der Helfer würde die Automation am 1. des ersten von dir definierten Sommermonats um 0:00 auslösen, wenn der Helfer den Zustand wechselt z.B. von “false” auf “true” wechselt.

Das ist auch korrekt.
Du musst dann aber zusätzlich bei
“Aber nur wenn”
noch eintragen, dass es nach 12:30 sein muss.

GANZ WICHTIG NOCHMAL ZU VERSTEHEN
Auslöser ist immer ein Zeitpunkte (es ist genau 12:30, die Temperatur ist in diesem Augenblick auf 25 °C gestiegen usw.)

Bedingungen sind Zeitspannen (es ist nach 12:30, die Temperatur ist größer al 25 °C usw.)

Ich würde es Allgemeiner Formulieren:

  • Auslöser ist ein Ereignis. Irgendwas passiert. Bsp. die Uhr schlägt 12:30 Uhr. Die Temperatur steigt über 25.
  • Bedingung ist ein Zustand. Und kann auf den Wahrheitsgehalt geprüft werden. Bsp. Es ist nach 12:30. Die Temperatur ist > 25.

Gruß
Osorkon

nach den Vorschlägen von @silberfuxx sieht es dann jetzt so aus …

…welches 1x pro Tag geprüft wird, und zwar um 0:00H richtig.

man kann diese Automation in den Wintermonaten einfach deaktivieren und würde sich damit die vorletzte condition hier sparen.

Was die Sommermonate betrifft habe ich mir geirrt, es ist kein helper sondern ein Sensor, den ich mal in der config definiert hatte…

  - sensor:
    - name: "Sommermonate"
      unique_id: jsdhfh3-29kdjd-38490jdjs
      icon: mdi:calendar
      state: >
        {% if now().month >= 5 and now().month < 10 %}
          on
        {% else %}
          off
        {% endif %}
``

den benutze ich zB um im dashboard zwischen Kacheln für Heizung (im Winter) und AC und Ventilatoren (im Sommer) umzuschalten.

Nein! Falsch!

Auslöser werden NIE von HA GEPRÜFT !!!
Sie treten ein, unabhängig einer vorhandenen Automation.
Es passiert einfach!!!
Es ist 12:30.
Da kannst du nichts ändern, da kann HA nichts ändern. Es ist so.
Wenn es dann so ist, löst dieses Ereignis (es ist gerade 12:30 geworden) die Automationen aus, bei denen als Auslöser 12:30 definiert ist und dann werden die Prüfungen (aber nur wenn) durchgeführt usw.

Und wenn du um 12:30 bei >25 °C möchtest, dass die Rollos runder fahren braust du nur dafür

  1. den Auslöser: 12:30
    und die
  2. Bedingung: >25 °C

So ist es mMn falsch. @silberfuxx hatte vorgeschlagen zusätzlich zu den Auslösern auch die Bedingung “nach 12:30 Uhr” zu setzen. Der Trigger 12:30 muss bleiben. Sonst steigt die Temp um 10 Uhr schon auf über 25 Grad, die Automatisierung bricht aber ab, da es noch nicht nach 12:30 Uhr ist.

Könnte man, aber dann muss man das händisch tun! Und da du den Sensor sowieso schon hast, tut der doch nicht weh in der Automation und man muss nicht daran denken. Dafür hat man doch das Smart Home, dass sowas “automatisch” geschieht.

Muss man nicht unbedingt händisch tun. Da der Sensor für die Sommermonate sowieso schon da ist, könnte man eine Automatisierung anlegen, die prüft ob der Sensor Off ist und dann über den Dienst automation.turn_off die entsprechende Autonatisierung deaktivieren. Das gleiche natürlich umgekehrt.

@sirector ja genau das war meine Idee…

ja hab ich doch jetzt, ich hab mal die deaktivierten Zeilen gelöscht, damit man nur das aktuelle noch sieht …

trigger ist >25° (das kann irgendwann im Laufe des Tages zutreffen)
condition ist später als 12:30
condition ist sensor.sommermonate ist an (was von Mai-Sep der Fall ist)
condition ist helper Rollo-WZ ist aus
dieser helper wird beim 1. Ausführen gesetzt und um 19:00 wenn alle Rollos wieder hochfahren zurückgesetzt

Nein, hast du nicht.

Trigger ist nur noch >25 Grad. Was passiert nun, wenn es um 10 Uhr schon >25 Grad ist? Überleg mal…

Die Automatisierung bricht ab, weil die Bedingungen nicht zutreffen.

Also
Trigger: 12:30 oder >25 Grad
Bedingungen: nach 12:29 und über 25 Grad und Sommermonate und Helper aus

ja, so soll es sein.
vor 12:30 soll keine Beschattung durchgeführt werden …

Also wenn es um 10 Uhr schon 25 Grad sind, soll den ganzen Tag keine Beschattung stattfinden? Denn die Automatisierung ist um 10 Uhr zu Ende. Mehr Trigger gibt es nicht.

(das kann irgendwann im Laufe des Tages zutreffen) das stimmt nicht. Es ist ein Schwellenwert-Auslöser, der nur auslöst, wenn es von unter 25 auf über 25 steigt. Danach nicht mehr.

ah jetzt ja, jetzt habe ich das Problem erkannt.

ich möchte das vor 12:30 nichts passiert und danach nur, wenn es über 25° ist.

Dann bleibt es dabei

ok, dann jetzt so …

wenn man das so unbedarft liest würde man sagen: ist doch alles doppelt, aber jetzt wissen wir ja, warum das so sein muß :grinning: :+1:

So würde ich es machen. Doppelt ist es nicht, da Trigger ODER sind aber immer alle Bedingungen zutreffen sollen und die sind UND.

Danke @sirector :wink:
Ich wusste nicht mehr, wie ich es noch erklären soll.

1 „Gefällt mir“

Die Bedingung kann hier ruhig nach 12:30 lauten.
Diese ist bei den Auslöser um 12:30 immer erfüllt, da zuerst Der Trigger kommt und danach erst die Bedingung geprüft wird. Also ist es definitiv nach 12:30 auch wenn es nur 1ms ist.

Gruß
Osorkon