Mehrere Automationen gruppieren und zusammenfassen

Hallo zusammen,

ich habe mehrere sehr feinteilige Automationen, bei denen zuerst ein oder auch mehrere Helfer eingeschaltet werden und anhand dieser Helfer dann Aktionen ausgelöst werden.

Die Helfer zum Teil durch mehrere Automationen eingeschaltet, da ich, zum Beispiel den Sammelfehler per Leuchte, nur an einer Stelle einschalten muss.

Nun möchte ich mehrere zusammengehörende Automationen zu einer zusammenfassen, um mir die Übersicht zu erleichtern.
Alle Automationen habe ich im visuellen Editor erstellt, weil … YAML halt.

Kann ich den YAML-Code der einzelnen Automationen nun einfach kopieren, in eine zentrale YAML-Datei speichern und dann die einzelnen Automationen löschen?
Wenn ja, wo muss ich die neuen Automationen/Gruppen dann hin speichern? Am liebsten wäre es mir, wenn ich jede Gruppe in eine eigene Datei speichern könnte, aber wie muss ich die dann aufrufen und wo muss die hin?

Edit:
Am Liebsten wäre es mir, wenn ich neu dazukommende Automationen einfach im visuellen Editor erstellen und den daraus erstellten Quelltext dann in die entsprechende YAML-Datei kopieren könnte.
Optimal wäre es natürlich, wenn ich die resultierende Gesamtautomation weiter im visuellen Editor bearbeiten könnte.

Hallo,

zu der gewünschten Vorgehensweise kann ich leider nichts sagen. In meinem Fall habe ich den Automationen verschiedene Kategorien und Labels zugewiesen. Somit habe ich eine sehr übersichtliche und in Gruppen getrennte Liste der Automationen.

Diese Gruppierungen habe ich auch vorgenommen und die einzelnen Automationen sind auch mit selbsterklärenden Namen versehen. Zusätzlich habe ich auch allen Automationen Bereichen zugeordnet, nach denen ich ebenfalls gruppieren kann.

Aber das löst nicht das Problem, daß die reine Anzahl der einzelnen Automationen immer größer wird und die Zusammenhänge zwischen den einzelnen Teilen nicht immer klar erkennbar sind.

da kann ich mir fast nichts drunter vorstellen. Was für ein Sammelfehler?

Wie @rstuck schon geschrieben hat, kannst du deine Automationen kategorisieren. Aber das lese ich nicht als Wunschg aus deinem Text.

Du hast x Automationen, wo zum Beispiel jede nur einen Helfer ein oder ausschaltet. Jetzt willst du nicht mehr so viele Automationen und versuchst die jetzt zusammen zu fassen… so verstehe ich es.

Dann würde ich dir raten dort mit IDs zu arbeiten. Dem Trigger (Sobald) kannst du je eine eindeutige ID mitgeben. In der Action kannst du dann nur auf die ID reagieren. Im Bearbeitungsfeld oben rechts drei Punkte Klicken. “ID bearbeiten” wählen.

Dann damit die verschiedenen Trigger in einer automation zusammenfassen.

Du kannst auch Scripte anlegen, die du dann in einer einzigen Automation aufrufen kannst.

Du kannst aber nicht einfach den YAML Code kopieren und irgendwo ablegen und dann funktioniert das.

Wenn ich da jetzt total neben liege, dann solltest du mal deine kleinteiligen Automationen zeigen und aufführen was du mit den Automationen erreichen möchtest.

Du kannst nicht einfach mehrere Automationen zusammenführen in dem Du den Yaml Code zusammen kopierst.

Du muss diese händisch zusammenführen, soweit es Sinn macht und die Aktionen / Bedingungen /Aktionen aufeinander abstimmen.

Gruß Osorkon

Der Sammelfehler ist die Zusammenfassung mehrerer Fehler, der mir einfach anzeigt, daß irgend etwas nicht in Ordnung ist und mir an meinem Panel per LED angezeigt wird. Um genau zu wissen, was los ist, muss ich dann auf dem Dashboard nachsehen.
Bei mir ist das ein Helfer, der von allen Automationen, welche einen Fehler melden, gesetzt wird.

Nicht ganz. Den Helfer Sammelfehler z.B. schalten mehrere Automationen ein (Störung der Solaranlage, Batteriestand der Zigbeesensoren zu niedrig, Server nicht mehr erreichbar usw.). Der Helfer Sammelfehlerhelfer wird dann von zwei Automationen ausgelesen und die entsprechende LED an meinem Panel ein- bzw. ausgeschaltet.

Zu der Fehler”routine” gehören dann aber auch noch ein Piepser, den ich ausschalten kann, ohne daß der Fehler nicht mehr angezeigt wird.

In der Config.YAML funktioniert das doch auch mit den Aufrufen für Automationen, Scripte und Szenen:

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Nur da bin ich mir eben schon unsicher, weil da auch angegeben sein muss, was da eingebunden wird.


Hier wird der Helfer für zuviel CO2 eingeschaltet:

alias: Alarm ein
description: ""
triggers:
  - trigger: state
    entity_id: []
  - trigger: numeric_state
    entity_id:
      - sensor.esp_sleeptracker_test_co2
    above: 1500
conditions: []
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id:
        - input_boolean.helfer_beeper_alarm_ein
        - input_boolean.helfer_warnung_ein
mode: single

Und hier wieder aus, wenn z.B. gelüftet wurde:

alias: Alarm aus
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.esp_sleeptracker_test_co2
    below: 1000
conditions: []
actions:
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id:
        - input_boolean.helfer_beeper_alarm_ein
        - input_boolean.helfer_warnung_ein
mode: single

Hier wird der Beeper eingeschaltet:

alias: Buzzer Warnung ein
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.helfer_beeper_alarm_ein
    to: "on"
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.esp_md_az_az3_buzzer_hinweis
mode: single

Und hier wieder aus, wenn die Fehlerbedingung wegfällt:

alias: Buzzer Warnung aus
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.helfer_beeper_alarm_ein
    to: "off"
conditions: []
actions:
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: switch.esp_md_az_az3_buzzer_hinweis
mode: single

Hier wird der Beeper per Tastendruck stummgeschaltet:

alias: Alarm stumm
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.esp_md_az_az3_taste_8
    to: "on"
conditions:
  - condition: state
    entity_id: input_boolean.helfer_warnung_ein
    state: "on"
actions:
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.helfer_beeper_alarm_ein
mode: single

Und hier wird der Beeper nach einer Zeit wieder eingeschaltet, wenn nichts passiert ist:

alias: Buzzer Warnung wieder ein
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.helfer_beeper_alarm_ein
    to: "off"
    for:
      hours: 0
      minutes: 5
      seconds: 0
conditions:
  - condition: state
    entity_id: input_boolean.helfer_warnung_ein
    state: "on"
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.helfer_beeper_alarm_ein
mode: single

Für die LED, welche den Fehler anzeigt, gibt es auch drei Automationen. Eine, die die LED gelb schaltet, wenn ein Fehler auftritt, eine schaltet die LED orange, wenn ich den Beeper stumm schalte und eine schaltet die LED aus, wenn der Fehler wieder weg ist.

In Zukunft will ich die Fehlerbearbeitung noch abändern und aufräumen. Da ich letztens erst gesehen habe, daß auch mehrere Fehler, die ein Eingreifen erfordern, auch gleichzeitig auftreten können (die Wahrscheinlichkeit dafür habe ich wohl zu gering eingeschätzt), will ich mit einem Zähler arbeiten, der bei jedem Fehler hoch und wenn der wieder behoben ist, wieder herunter zählt.
Und bevor ich das mache wollte ich halt wissen, ob ich das Ganze nicht übersichtlicher gestalten kann.

Die Trigger-IDs werde ich mir mal ansehen und hoffen, daß ich damit zurecht komme :wink:

Wie schon erwähnt… du kannst nicht einfach Automationen oder Teile davon zusammen kopieren und das einbinden.

Jo. Das ist systemstandard. In der automations.yaml werden alle Automationen gesammelt. Das ist im System so hinterlegt. Ich glaube keiner hätte Spaß drann, wenn das alles in der configuration.yaml stände.

Also mal ein Beispiel wie du die beiden Automationen für den CO2 zusammenfassen kannst in einer:

alias: Alarm ein und aus
description: ""
triggers:
  - trigger: state
    entity_id: []
  - trigger: numeric_state
    entity_id:
      - sensor.esp_sleeptracker_test_co2
    above: 1500
    id: Helfer ein
  - trigger: numeric_state
    entity_id:
      - sensor.esp_sleeptracker_test_co2
    below: 1000
    id: Helfer aus
conditions: []
actions:
  - if:
      - condition: trigger
        id:
          - Helfer ein
    then:
      - action: input_boolean.turn_on
        metadata: {}
        data: {}
        target:
          entity_id:
            - input_boolean.helfer_beeper_alarm_ein
            - input_boolean.helfer_warnung_ein
  - if:
      - condition: trigger
        id:
          - Helfer aus
    then:
      - action: input_boolean.turn_off
        metadata: {}
        data: {}
        target:
          entity_id:
            - input_boolean.helfer_beeper_alarm_ein
            - input_boolean.helfer_warnung_ein
mode: single

Analog dazu kannst du so viel zusammen fassen wie du willst, oder wie es Sinn ergibt.

btw. verstehe nicht was der oberste trigger soll… der macht einfach gar nichts, weil keine Entität eingetragen ist.

Servus
Warum überlegts dir nicht die komplizierteren Sachen in Python zu schreiben ? Da hast dann gut lesbaren Code und, eine schöne Ordnung. Dieses YAML Zeugs taugt doch nur für 3-Zeiler. Ich weiß jetzt nicht was deine Helfer genau machen, aber bis auf Info die du persistent speichern kriegst die doch auch alle weg.

Hab hier mehrere recht komplexe Funktionen (Aquarium Wasserwechsel, komplette Steuerung der Heizungsanlage - mit allem, Rasenbewässerung, Betriebstundenzähler de-luxe ect. ect.) in Python Scripten gemacht. Das alles in YAML bzw. Automatisationseditor rumgeklicke wäre ein absolut undurchdringlicher Saustall geworden, so ist es durchaus OK wie ich finde.

greez
bb

Naja, das Zusammenfassen hast du unten ja bereits getan. Dann geht’s nur noch ums Einbinden.
So wie ich das verstehe, müsste die zusammengefasste Automation dann wieder in die automations.yaml.

Das sehe ich bei der automations.yaml genau genauso.
Die Frage ist, ob das mit einzelnen Automationen nicht genauso geht.
sowas wie:

fehlermeldungen: !include fehler.yaml

Der ist mir im visuellen Editor mit rein gerutscht. Da hab ich anscheinend einmal zu oft auf “Auslöser hinzufügen” geklickt.