Rolladensteuerung mit Virtuelle Taster ON/OFF, ist das wirklich so kompliziert?

andi55

Member
Hallo,

ich bin dabei meine Rolladensteuerung von Homematic nach HA umzuziehen und zu erweitern.
Dafür habe ich auch mehrere "virtuelle Buttons" angelegt (Rollo EG auf, Rollo EG ab, Rollo OG auf, Rollo OG auf ...) um einzelne Funktionen auch mal manuell zu steuern bzw. mit der Automatisierung diese Buttons dann auch zu triggern um nicht mehrfach alle Rollos ausflisten zu müssen.

Ich habe also als Trigger:
- 4 virtulle Buttons
- 2 Uhrzeiten

als Bedingungen
- 3 Variablen (Aus, Zeit, Zeit nur abends, morgens Sonne).

das alles
- für >10 Rolläden die je nach Variable, Uhrzeit, komplett hoch/runter oder in eine bestimmte Position fahren

Wenn ein Button betätigt oder eine Uhrzeit getriggert wird soll also eine Automatisierung starten und ich dachte ich mache eine einfache "wenn-dann" Abfrage um zu entscheiden welcher Trigger ausgelöst hat, welche Variable aktiv ist, und welche Aktion nun ausgeführt werden soll.

Es scheitert schon bei den virtuellen Buttons, die haben ja kein eindeutiges ON/OFF und ich kann diese somit nicht für die "Wenn" Auswertung nehmen.
Ansonsten besteht wohl auch die Gefahr das bei einem Reboot von HA der State der Buttons nicht eindeutig ist und dann evtl. verschiedene Aktionen ausgeführt werden.
Die Blueprints hierzu sind mir zu kompliziert, Berechnung über Sonnenstand, Sonnenauf/Untergang will ich alles nicht.
Wie macht ihr das?
 
Hi,
Du kannst den Button sehr wohl als Auslöser nehmen.
YAML:
trigger:
  - platform: state
    entity_id:
      - input_button.testbutton
Einfach als Entität auswählen und alles weiter frei lassen (Attribut, von, zu).

Zu den Rolladen:
Wenn du immer mehrere Rolladen gleichzeitig fahren willst, bilde doch einen Gruppen-Helfer.
Dann musst du nur noch den Helfer in deinen Programmen ansteuern.

Liebe Grüße
Jan
 
Wenn ein Button betätigt oder eine Uhrzeit getriggert wird soll also eine Automatisierung starten und ich dachte ich mache eine einfache "wenn-dann" Abfrage um zu entscheiden welcher Trigger ausgelöst hat, welche Variable aktiv ist, und welche Aktion nun ausgeführt werden soll.
Wenn du mehrere Trigger in einer Automatisierung hast die jeweils andere Dinge auslösen sollen, solltest du jedem Trigger eine eigene ID geben und im Dann-Teil dann jeweils eine Wenn-Abfrage einbauen die nach der Auslöse-ID guckt.
YAML:
alias: ButtonTest
description: ""
trigger:
  - platform: state
    entity_id:
      - input_button.testbutton
    id: Test-ID
condition: []
action:
  - if:
      - condition: trigger
        id:
          - Test-ID
    then: []
mode: single
 
Wenn du mehrere Trigger in einer Automatisierung hast die jeweils andere Dinge auslösen sollen, solltest du jedem Trigger eine eigene ID geben und im Dann-Teil dann jeweils eine Wenn-Abfrage einbauen die nach der Auslöse-ID guckt.
Hmmm, warum ?
Meine Rolladen Entitäten heißen schon "Rollo Büro" oder Rollo Schlafzimmer". Was soll mir da eine ID mehr bieten ?

@andi55
Ich mach es so ähnlich, wie Du, nur das meine Rolladenschalter alle Smart sind, sprich, dafür gibt es schon Button, da muß ich nichts extra anlegen.
Ich habe auch eine Automatisierung, die auf Sonnenuntergang triggert und dann einige Rolläden ganz schließt, andere in vorgegebene Positionen fährt oder, falls ein Magnetkontakt nicht geschlossen ist (Balkontür), dieses Rollo nicht zu fährt. Ist extrem von Vorteil, falls man gerade auf dem Balkon ist. :D
Mit deinen WENN DANN Aktionen bist Du meiner Meinung nach auf dem richtigen Weg. Hier kannst Du ganz klar entscheiden, wenn dies oder jenes der Auslöser war und wenn diese oder jene Bedingung zutrifft, DANN mache dies und das.
 
Hmmm, warum ?
Meine Rolladen Entitäten heißen schon "Rollo Büro" oder Rollo Schlafzimmer". Was soll mir da eine ID mehr bieten ?
Weil man dann alle vier Buttons und die Uhrzeiten in einem einzigen Programm verarbeiten kann.
Sprich alle vier Button-Pushs und die Uhrzeiten bekommen eigene IDs, diese gelten nur in diesem einen Programm.
Wird nun ein Trigger ausgeführt fragen wir im Programm ab welcher Trigger das war und führen dann die zugehörige Aktion aus.
So hat man ein ganzes Thema komplett in einem Programm zusammengefasst.
Ich habe zum Beispiel nur ein Programm um im Kinderzimmer die Hauptbeleuchtung sowie das Nachtlicht jeweils an/aus-zuschalten und zu dimmen.
Macht es irgendwie übersichtlicher.
Hier mal der Code:
YAML:
alias: LS Kinderzimmer Licht
description: ""
trigger:
  - alias: Linker Taster kurz
    platform: event
    event_type: esphome.button_pressed
    event_data:
      device_id: 5a48704eca9a80ee41b22d3debc973dd
      title: button 1 short click
    id: links kurz
  - alias: Rechter Taster kurz
    platform: event
    event_type: esphome.button_pressed
    event_data:
      device_id: 5a48704eca9a80ee41b22d3debc973dd
      title: button 2 short click
    id: rechts kurz
  - alias: Linker Taster lang
    platform: event
    event_type: esphome.button_pressed
    event_data:
      device_id: 5a48704eca9a80ee41b22d3debc973dd
      title: button 1 long click
    id: links lang
  - alias: Rechter Taster lang
    platform: event
    event_type: esphome.button_pressed
    event_data:
      device_id: 5a48704eca9a80ee41b22d3debc973dd
      title: button 2 long click
    id: rechts lang
condition: []
action:
  - alias: Kinderzimmer An/Aus
    if:
      - condition: trigger
        id:
          - links kurz
    then:
      - if:
          - condition: state
            entity_id: light.zigbee_dongle_kinderzimmer
            state: "on"
        then:
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: light.zigbee_dongle_kinderzimmer
        else:
          - action: light.turn_on
            metadata: {}
            data:
              brightness_step_pct: 100
            target:
              entity_id: light.zigbee_dongle_kinderzimmer
  - alias: Nachtlicht An/Aus
    if:
      - condition: trigger
        id:
          - rechts kurz
    then:
      - if:
          - condition: state
            entity_id: light.zigbee_dongle_nachtlicht
            state: "on"
        then:
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              entity_id:
                - light.zigbee_dongle_nachtlicht
        else:
          - action: light.turn_on
            metadata: {}
            data:
              brightness_step_pct: 100
              kelvin: 2700
            target:
              entity_id:
                - light.zigbee_dongle_nachtlicht
  - alias: Kinderzimmer Dimmen
    if:
      - condition: trigger
        id:
          - links lang
    then:
      - repeat:
          sequence:
            - metadata: {}
              data:
                brightness_step_pct: -12
              target:
                entity_id:
                  - light.zigbee_dongle_kinderzimmer
              action: light.turn_on
            - delay:
                hours: 0
                minutes: 0
                seconds: 0
                milliseconds: 500
          until:
            - condition: or
              conditions:
                - condition: state
                  entity_id: >-
                    binary_sensor.kinderzimmer_taster_i4_kinderzimmer_taster_eingang_1
                  state: "off"
                - condition: numeric_state
                  entity_id: light.zigbee_dongle_kinderzimmer
                  attribute: brightness
                  below: 33
  - alias: Nachtlicht Dimmen
    if:
      - condition: trigger
        id:
          - rechts lang
    then:
      - repeat:
          sequence:
            - metadata: {}
              data:
                brightness_step_pct: -12
              target:
                entity_id:
                  - light.zigbee_dongle_nachtlicht
              action: light.turn_on
            - delay:
                hours: 0
                minutes: 0
                seconds: 0
                milliseconds: 500
          until:
            - condition: or
              conditions:
                - condition: state
                  entity_id: >-
                    binary_sensor.kinderzimmer_taster_i4_kinderzimmer_taster_eingang_2
                  state: "off"
                - condition: numeric_state
                  entity_id: light.zigbee_dongle_nachtlicht
                  attribute: brightness
                  below: 33
mode: parallel
max: 2

Liebe Grüße
Jan
 
Weil man dann alle vier Buttons und die Uhrzeiten in einem einzigen Programm verarbeiten kann.
Öhm, das kann man grundsätzlich. Ich kann doch jede x-beliebige Entität als Trigger nehmen. Da muß ich nicht extra eine ID für vergeben.

Wird nun ein Trigger ausgeführt fragen wir im Programm ab welcher Trigger das war und führen dann die zugehörige Aktion aus.
Immer noch kein Unterschied zu einfachen Entitäten.
So hat man ein ganzes Thema komplett in einem Programm zusammengefasst.
Ich habe zum Beispiel nur ein Programm um im Kinderzimmer die Hauptbeleuchtung sowie das Nachtlicht jeweils an/aus-zuschalten und zu dimmen.
Macht es irgendwie übersichtlicher.
Alles in einer Automation findest Du übersichtlich ?
Nein, ich habe lieber alles einzeln. Eine Automatisierung für die Rolläden, ein paar für die Heizungssteuerung usw.
Sorry, ich kann immer noch keinen Vorteil von den ID's sehen.

Ich sehe da eher ein Problem bei Dir, das Du Geräte anstelle von Entitäten verwendest, was es definitiv unübersichtlich macht.
Code:
  - alias: Linker Taster kurz
    platform: event
    event_type: esphome.button_pressed
    event_data:
      device_id: 5a48704eca9a80ee41b22d3debc973dd
      title: button 1 short click
    id: links kurz

Deine device_id sagt ja quasi gar nichts aus.
Aber, wenn man mit Entitäten arbeitet, steht da halt kein kryptischer Code, sondern von vornherein "linker Taster" oder sowas. Warum ich dem dann nochmal das selbe als ID zuweisen sollte entzieht sich meinem Verständnis.
 
Öhm, das kann man grundsätzlich. Ich kann doch jede x-beliebige Entität als Trigger nehmen. Da muß ich nicht extra eine ID für vergeben.


Immer noch kein Unterschied zu einfachen Entitäten.
Du verstehst das irgendwie falsch.
Egal ob Entität, Gerät, Zeit oder Event: Ich kann einem Trigger OPTIONAL eine ID zuweisen um in einer Automatisierung genau und ausschließlich auf diesen Trigger zu reagieren. Das ist dann praktisch und erspart viel arbeit wenn man zum selben Thema verschiedene Abläufe durchzuführen hat.

Zur Geräte / Entitäten-Thematik:
Ist mir natürlich bewusst und wird auch gelebt. Hier handelt es sich jedoch um esphome-events die meines Wissens nach nicht anders abgefangen werden können (zumindest wenn man der Dokumentation folgt).

Zum Thema Übersichtlichkeit:
Man kann jeden Schritt in einem Programm Umbenennen.
Das macht sogar UND/ODER/WENN total transparent.
Hier ein Beispiel.
1000015521.png1000015522.png
 
Zuletzt bearbeitet:
Geräte / Entitäten-Thematik:
Ist mir natürlich bewusst und wird auch gelebt. Hier handelt es sich jedoch um esphome-events die meines Wissens nach nicht andees abgefangen werden können (zumindest wenn man der Dokumentation folgt).
Hat mich doch noch beschäftigt das Thema.
Et voila: Die Device-ID kann weg gelassen werden solange das Event einen einzigartigen Inhalt hat.
Danke für das "mit der Nase reindrücken"! 😅
 
Du verstehst das irgendwie falsch.
Möglich.
Egal ob Entität, Gerät, Zeit oder Event: Ich kann einem Trigger OPTIONAL eine ID zuweisen um in einer Automatisierung genau und ausschließlich auf diesen Trigger zu reagieren. Das ist dann praktisch und erspart viel arbeit wenn man zum selben Thema verschiedene Abläufe durchzuführen hat.
Genau das ist es, was ich eben nicht nachvollziehen kann. Eine Automatisierung reagiert immer genau auf den Trigger, den ich angebe, egal ob mit oder ohne ID. Arbeit ersparen kann ich da auch nicht sehen.
Was ich mir halbwegs Vorstellen kann, wenn ich als Trigger z.B. die Zeit 10:00 Uhr nehme und dem dann die ID Uhrzeit zuweise.
Dann kann ich in einer WEN DANN Aktion nochmal Bezug auf die Uhrzeit oben nehmen. Das macht dann Sinn, weil wenn ich die Uhrzeit ändern will, muß ich nur diese eine Zeit ändern.
Aber bei Entitäten macht das vergeben einer ID nicht wirklich Sinn, meine ich.
 
@RudiP
Kommt halt drauf wie komplex das Programm ist. Bei was simplem wo nur eine Aktion hinter steht verzichte ich auch darauf.
Aber bei komplexeren Programmen mit mehreren Triggern und jeweils unterschiedlichen Aktionen ist das Gold wert um nicht versehentlich den falschen Programmpfad auszulösen.

Meine Rolladensteuerung z. b. reagiert auf diverse Trigger wie Azimuth-Bereich betreten und verlassen, Automatikbetrieb an/aus, Beschattungsbedarf ja/nein, Hitzeschutz ja/nein, Klimageräte an/aus, Fernseher läuft ja/nein.
Da wird es ohne IDs schnell sehr unübersichtlich.
Klar könnte ich diverse Mini-Programme anlegen, aber bei meiner Anzahl Rolladen komme ich da schnell auf ein paar dutzend Programme.
So wie es ist läuft es zuverlässig, stabil und alle Änderungen können an einem Ort durchgeführt werden.

Aber letztendlich muss es jeder so machen wie es für ihn am besten passt.
Wie heißt es doch so schön: Alle Wege führen nach Rom. 😉
 
@RudiP
Kommt halt drauf wie komplex das Programm ist. Bei was simplem wo nur eine Aktion hinter steht verzichte ich auch darauf.
Aber bei komplexeren Programmen mit mehreren Triggern und jeweils unterschiedlichen Aktionen ist das Gold wert um nicht versehentlich den falschen Programmpfad auszulösen.
Ganz ehrlich ? Nö. Die Entitäten sind bei mir Eindeutig und da ist es vollkommen egal, wie viele Auslöser ich habe
Meine Rolladensteuerung z. b. reagiert auf diverse Trigger wie Azimuth-Bereich betreten und verlassen, Automatikbetrieb an/aus, Beschattungsbedarf ja/nein, Hitzeschutz ja/nein, Klimageräte an/aus, Fernseher läuft ja/nein.
Da wird es ohne IDs schnell sehr unübersichtlich.
Weil ?
WENN
Wenn OpenTherm Gateway Outdoor temperatur ist über 25
Wenn die Zeit gleich 13:00:05 ist

Daran ist nichts unübersichtlich. Nein, auch nicht, wenn ich noch 5 Auslöser hinzufüge.

Klar könnte ich diverse Mini-Programme anlegen, aber bei meiner Anzahl Rolladen komme ich da schnell auf ein paar dutzend Programme.
So wie es ist läuft es zuverlässig, stabil und alle Änderungen können an einem Ort durchgeführt werden.
Ja, stimme ich Dir zu. Lieber eine Automatisierung, anstatt 5.
Aber ich habe in der Schule gelernt, alles schön nacheinander machen. Ob da nun 2, 5 oder 20 Auslöser sind, immer von iben nach unten ansehen, dann ist da nicht unübersichtliches.
Aber letztendlich muss es jeder so machen wie es für ihn am besten passt.
Wie heißt es doch so schön: Alle Wege führen nach Rom. 😉
Definitiv.
Ich habe sogar eine Automatisierung, die deine Aussage untermauern würde.
Auslöser wie oben.
Da beide Auslöser ODER Verknüpft sind, die Aktion aber nur ausgeführt werden soll, wenn beide zutreffen, muß ich also Bedingungen setzen.
Da frage ich dann also nochmal ab, ob die Zeit 13:00:00 ist.
Hier könnte man dann wirklich oben dem Auslöser Zeit eine ID geben und bei Bedingung abfragen. Will ich dann die Zeit ändern, muß ich nur den Auslöser ändern.
Aber so oft ändere ich diese Zeit nicht, als das es irgendwie Sinn machen würde, deswegen eine ID anzugeben.
Wie gesagt. Meine Auslöser sind immer Aussagekräftig.
 
Rudi, Entitäten sind immer eindeutig sonst funktioniert der ganze Spaß ja nicht.
Home Assistant bietet viele Möglichkeiten Dinge ordentlich darzustellen und zu sortieren.
Welche man nutzen möchte und welche man (kategorisch?) ausschließt ist jedem selbst überlassen.
Ich wollte dem TE nur eine Möglichkeit aufzeigen sein Problem auf eine schlanke Art und Weise zu lösen.
Ob er sie nutzt muss er entscheiden.

Du hast deinen Standpunkt klar gemacht, aber versuche doch auch mal andere Standpunkte oder Lösungswege zu akzeptieren.

@andi55
Ich hoffe du kommst bei deinem Problem weiter und findest eine Lösung! 😉

Liebe Grüße
Jan
 
Hallo,
und schonmal Danke für die vielen Tipps
bei
Code:
trigger:
  - platform: state
    entity_id:
      - input_button.testbutton
bin ich nicht 100% sicher ob dieser unsaubere "input_button state" mir nicht doch irgendwie bei Reboot oder Stromausfall dazwischen funkt und dann evtl. Programme triggert ohne das der Button gedrückt wurde.
Will erstmal testen wie es sich nach einem Reboot und/oder mit einem "input_boolean" verhält der nach 0,5 sek automatisch wieder zurückfällt, quasi als ausschaltverzögerter Button aber dafür mit eindeutigem ON/OFF state.
 
Man kann in der Buttonkarte im Dashboard einstellen, was bei Klick passieren soll. Z.B. starte Automation xyz.
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.283
Beiträge
52.555
Mitglieder
5.037
Neuestes Mitglied
galaxyaner
Zurück
Oben