HmIPW-Tastendruck kurz und lang als Trigger in einer Automation unterscheiden

Hallo, dies ist mein jungfräulicher Post in dieser Community und ich freue mich hier zu sein und später sicherlich auch aktiver unterstüzten zu können. Aktuell habe ich ein komplettes Haus mit über 75 Geräten HmIp-Wired (was davon geht) und ein wenig Funk. Dazu noch diverse Philipps Hue. Nach 1,5 Jahren reiner CCU3-Administration und HUE per Philipps App kam bei mir der ioBroker intensiv zum Einsatz. Nach weiteren 1,5 Jahren ziehe ich nun seit zwei Wochen zum Home Assistant um, den ich auf einem Yellow mit CM4, 8GB und 32GB eMMC betreibe.

Zum Topic:
Ich betreibe mehrere Gira SPS-6fach-Taster an HmIPW-FIO6. In HA sind die über die CCU3 und Homematic(IP) Local eingebunden. Entsprechende Pseudo-Programme auf der CCU3 zum Pushen des Tastendrucks über die Schnittstelle an Homematic(IP) Local habe ich angelegt. Unter “Ereignisse” des Geräts auf dem HA sehe ich auch, ob und in welcher Art ich die Taste physisch gedrückt habe. Nun möchte ich zur Doppelbelegung der selben Taste nach kurzem und nach langem Tastendruck unterscheiden. Und daran scheitere aktuell noch.

Schlechte Lösung

triggers:
  - trigger: state
    entity_id:
      - event.wz_6fachtaster_terrasse_wz6ertasterterrasselo
    attribute: event_type
    id: kurz
    to: press_short
  - trigger: state
    entity_id:
      - event.wz_6fachtaster_terrasse_wz6ertasterterrasselo
    attribute: event_type
    to: press_long_start
    id: lang

Problem
Dadurch, dass ich als Trigger ein state-change vom event verwende, brauche ich auch genau das, einen Wechsel. Drücke ich also mehrmals in Folge die Taste nur kurz, ändert sich nichts (to: press_short), es bleibt aus Sicht des Triggers alles beim Alten und er löst nicht aus. Bei einem langen Tastendruck entsteht das Problem nicht, weil dieser die Status press_long_start > press_long > press_long_release durchläuft und somit beim erneuten Tastendruck press_long_start auf press_long_release folgt und somit ein state-change.

Vermutete Lösung
Ich müsste irgendwie auf das Attribut des event.wz6ertasterterrasselo als Trigger zugreifen können, um zu erkennen, ob kurz oder lang gedrückt wurde; aber wie? Oder doch ganz anders? Sämtliche KIs haben mir bei meiner Art zu fragen nicht weiter gebracht als hier hin. Ich vermute ein event-Trigger, scheitere aber an der Config. Kann mir hier jemand helfen?

Bei mir ist es zwar nur ein 2-fach Taster aber das Vorgehen sollte für deinen 6-fach identisch möglich sein.

Als Trigger nur den State verwenden und dann beim Choose in der action prüfen, auf was die Taste gerade steht:

alias: Schalter Rollladen Wohnzimmer
description: ""
triggers:
  - entity_id:
      - event.schalter_rollladen_wz_ch1
    id: Button down
    for:
      hours: 0
      minutes: 0
      seconds: 2
    trigger: state
  - entity_id:
      - event.schalter_rollladen_wz_ch2
    id: Button up
    for:
      hours: 0
      minutes: 0
      seconds: 2
    trigger: state
conditions:
  - condition: template
    value_template: "{{ ( now() - states('sensor.uptime')|as_datetime ).seconds >= 30 }}"
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Button down
          - condition: state
            entity_id: event.schalter_rollladen_wz_ch1
            state: press_short
            attribute: event_type
        sequence:
          - data: {}
            action: script.rollladen_wohnzimmer_schlitz
        alias: Schlitz
      - conditions:
          - condition: trigger
            id:
              - Button down
          - condition: state
            entity_id: event.schalter_rollladen_wz_ch1
            attribute: event_type
            state: press_long_release
        sequence:
          - data: {}
            action: script.rollladen_wohnzimmer_zu
        alias: zu
      - conditions:
          - condition: trigger
            id:
              - Button up
          - condition: state
            entity_id: event.schalter_rollladen_wz_ch2
            attribute: event_type
            state: press_short
        sequence:
          - data: {}
            action: script.rollladen_wohnzimmer_auf
        alias: Auf
      - conditions:
          - condition: trigger
            id:
              - Button up
          - condition: state
            entity_id: event.schalter_rollladen_wz_ch2
            attribute: event_type
            state: press_long_release
        sequence:
          - data: {}
            action: script.rollladen_wohnzimmer_stop
        alias: stoppen
mode: restart

@bigmirror Großartig, vielen Dank. Auf diese Idee bin ich nicht gekommen. Die Prüfung auf den actions-Part auszulagern hat bestens geklappt. Dass Du gleich noch Deinen Code geteilt hast, hat mir eine einfache Adaption erlaubt. Super!