Action einer Entität sendet nur Zustandswechsel (Taster mit Lampe verbinden und auch über GUI schalten)

Guten Abend zusammen,

seit ca. 2 Wochen bin ich jetzt auch mit Home Assistant aktiv und es macht auch meistens Spaß und funktioniert. :sweat_smile:

Ich habe über eine Automation einen Ikea TRADFRI on/off switch mit einer Ikea Lampe verbunden.
Sowohl schalten als auch dimmen klappt wunderbar.

Allerdings nur solange, bis ich nicht nur über den Taster schalte, sondern auch über das GUI.

Schalte ich z.B. über den Taster ein und über die GUI wieder aus, kann ich nicht am Taster wieder einschalten, sondern muss erst am Taster ausschalten um dann wieder einzuschalten.

Wenn ich das Verhalten im Automationseditor verfolge, meldet Action leider nur den Zustandswechsel und nicht ein mehrfaches Drücken der ON-Taste.

Frage ich statt über Action der Entität direkt das Gerät ab, wird auch mehrmals ON registriert.

Eingebunden sind die Geräte über Z2M.

Vermutlich ist es ein ganz simpler Fehler, ich komme aber nicht drauf…

Hier noch der Code der Automation:

 alias: EG Wohnzimmer Taster Esstisch
description: ""
triggers:
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
    to:
      - "on"
    id: "on"
    attribute: event_type
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
    to:
      - "off"
    id: "off"
    attribute: event_type
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
    to:
      - brightness_move_up
    id: heller
    attribute: event_type
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
    id: dunkler
    attribute: event_type
    to:
      - brightness_move_down
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
    to:
      - brightness_stop
    id: stop
    attribute: event_type
conditions: []
actions:
  - alias: einschalten
    if:
      - condition: trigger
        id:
          - "on"
    then:
      - action: light.turn_on
        metadata: {}
        target:
          entity_id:
            - light.eg_wohnzimmer_leuchte_esstisch
        data:
          brightness_pct: 80
  - alias: ausschalten
    if:
      - condition: trigger
        id:
          - "off"
    then:
      - action: light.turn_off
        metadata: {}
        target:
          entity_id:
            - light.eg_wohnzimmer_leuchte_esstisch
        data: {}
  - alias: heller
    repeat:
      while:
        - condition: not
          conditions:
            - condition: trigger
              id:
                - stop
        - condition: trigger
          id:
            - heller
      sequence:
        - action: light.turn_on
          metadata: {}
          target:
            entity_id:
              - light.eg_wohnzimmer_leuchte_esstisch
          data:
            brightness_step_pct: 2
        - delay:
            hours: 0
            minutes: 0
            seconds: 0
            milliseconds: 200
  - alias: dunkler
    repeat:
      while:
        - condition: not
          conditions:
            - condition: trigger
              id:
                - stop
        - condition: trigger
          id:
            - dunkler
      sequence:
        - action: light.turn_on
          metadata: {}
          target:
            entity_id:
              - light.eg_wohnzimmer_leuchte_esstisch
          data:
            brightness_step_pct: -2
        - delay:
            hours: 0
            minutes: 0
            seconds: 0
            milliseconds: 200
mode: restart

Danke schon mal für eure Hilfe!

Grüße Jonas

Warum bindest Du den Schalter nicht mit der Ikea Lampe?
Sprechen ja beide ZigBee. Du brauchst dann keine Automation und das Ganze funktioniert auch dann, wenn Home Assistant mal down ist.

Gruß Osorkon

Warum benutzt du überhaupt HA, wenn du eh alles direkt miteinander verbindest?

Für alles andere, dass sich nicht direkt mietender verbinden lässt. :wink:

Und warum soll ich Umwege gehen, wenn es einen direkten Weg gibt?

Gruß Osorkon

Weil ich dann ja keinerlei weitere Bedingungen einbinden kann.

Also z.B., dass die Lampe nachts dunkler angeht, als tagsüber.

Ist es denn normal, dass Action nur einen Wechsel meldet und keinen Tastendruck?
Wäre ja ziemlich schade…

Derlei Bedingungen konnte ich Deiner Automation nicht entnehmen. Und wenn es diese Anforderung gäbe. Kannst Du ja auch nur das Cluster Level binden. Und das Ein- und Ausschalten über eine Automation lösen.

Das Problem mit dem Auslöser wird sein, dass dieser sich nur ändert, wenn zuvor eine andere Taste gedrückt wurde. Das kannst Du ja aber einfach herausfinden, in dem Du den Status des Aktion Sensors beobachtest. Springt dieser in den Zustand x zurück, nach dem Du ON gedrückt hast?

Wenn der Zustand sich nur ändert, wenn im Wechsel die Tasten gedrückt werden. Dann darfst Du nur einen Auslöser verwenden. Ohne Angabe von zu


triggers:
  - trigger: state
    entity_id:
      - event.taster_esstisch_action

Und dann den Zustand des Sensors im Aktion Teil abfragen, anstatt die Auslöser ID.

Alternativ, verwende nicht den Actioni Sensor, sondern das Aktion Event (Einstellung ZigBee2MQTT) Da sollte auch bei mehrmaligen Drücken der selben Taste ein neues Event ankommen, welches Du als Auslöser verwenden kannst.

Edit:

Bzw. Anders herum. Du verwendest ja bereits das Event. Also umstellen Auf Aktion Sensor,
Wäre die Alternative.

Gruß Osorkon

Moin Osorkon,
danke für deine Antwort!

Derlei Bedingungen konnte ich Deiner Automation nicht entnehmen.

Das stimmt, ist noch nicht drin, bin ja auch erst am Anfang. :wink:
Und erstmal sollen die Grundlagen funktionieren, bevor ich es komplexer mache.

Und wenn es diese Anforderung gäbe. Kannst Du ja auch nur das Cluster Level binden. Und das Ein- und Ausschalten über eine Automation lösen.

Was meinst du mit Cluster Level?

Das Problem mit dem Auslöser wird sein, dass dieser sich nur ändert, wenn zuvor eine andere Taste gedrückt wurde. Das kannst Du ja aber einfach herausfinden, in dem Du den Status des Aktion Sensors beobachtest. Springt dieser in den Zustand x zurück, nach dem Du ON gedrückt hast?

Genau, das ist das Problem. Er sendet nicht mehrmals den ON-Befehl hintereinander.
Zumindest nicht über die Entität. Wenn ich das Gerät direkt abfrage, geht es:

domain: mqtt
device_id: b5e41ea57da5938264169e350860ee8e
type: action
subtype: "on"
trigger: device 

Aber ich möchte lieber die Entität, als das Gerät nehmen.

Und dann den Zustand des Sensors im Aktion Teil abfragen, anstatt die Auslöser ID.

Habe ich gerade probiert, funktioniert aber auch nicht.

Du verwendest ja bereits das Event. Also umstellen Auf Aktion Sensor,
Wäre die Alternative.

Ich hatte gelesen, dass Events die Zukunft sind und man Aktionen nicht mehr verwenden soll, deshalb wollte ich es über Events lösen. :thinking:

Wenn Du Bindungen erstellen tust, kannst auswählen, welche Cluster gebunden werden sollen. Das ist zwar ein Screenshot aus ZHA, bei ZigBee2MQTT, hast Du aber die gleichen Möglichkeiten. Kannst nur ein oder beider Cluster binden.

Doch das tut es, da ich in den letzten Tagen von ZigBee2MQTT mir die Aktion Events angeschaut habe und dementsprechend auch Automationen umbauen musste.
Wenn ich heute Abend wieder am Rechner bin, kann ich Dir gern ein Bsp. Zur Verfügung stellen.

EDIT:
So habe ich das gemeint, den Event Typ als Bedingung verwenden.

alias: EG Wohnzimmer Taster Esstisch
description: ""
triggers:
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
conditions: []
actions:
  - choose:
      - conditions:
          - condition: state
            entity_id: event.dimmschalter_action
            state:
              - "on"
            attribute: event_type
        sequence:
          - action: light.turn_on
            metadata: {}
            target:
              entity_id:
                - light.eg_wohnzimmer_leuchte_esstisch
            data:
              brightness_pct: 80
      - conditions:
          - condition: state
            entity_id: event.dimmschalter_action
            state:
              - "off"
            attribute: event_type
        sequence:
          - action: light.turn_off
            metadata: {}
            target:
              entity_id:
                - light.eg_wohnzimmer_leuchte_esstisch
            data: {}
      - conditions:
          - condition: state
            entity_id: event.dimmschalter_action
            state:
              - brightness_move_up
            attribute: event_type
        sequence:
          - repeat:
              until:
                - condition: state
                  entity_id: event.dimmschalter_action
                  state:
                    - brightness_stop
                  attribute: event_type
              sequence:
                - action: light.turn_on
                  metadata: {}
                  target:
                    entity_id:
                      - light.eg_wohnzimmer_leuchte_esstisch
                  data:
                    brightness_step_pct: 2
                - delay:
                    hours: 0
                    minutes: 0
                    seconds: 0
                    milliseconds: 200
      - conditions:
          - condition: state
            entity_id: event.dimmschalter_action
            state:
              - brightness_move_down
            attribute: event_type
        sequence:
          - repeat:
              until:
                - condition: state
                  entity_id: event.dimmschalter_action
                  state:
                    - brightness_stop
                  attribute: event_type
              sequence:
                - action: light.turn_on
                  metadata: {}
                  target:
                    entity_id:
                      - light.eg_wohnzimmer_leuchte_esstisch
                  data:
                    brightness_step_pct: -2
                - delay:
                    hours: 0
                    minutes: 0
                    seconds: 0
                    milliseconds: 200
mode: restart

Gruß Osorkon

Wenn Du Bindungen erstellen tust, kannst auswählen, welche Cluster gebunden werden sollen. Das ist zwar ein Screenshot aus ZHA, bei ZigBee2MQTT, hast Du aber die gleichen Möglichkeiten. Kannst nur ein oder beider Cluster binden.

Danke für die Info!
Bei mir ist “genLevelCtrl”, “genOnOff”, “genPollCtrl” und “genPowerCfg” verbunden.

So habe ich das gemeint, den Event Typ als Bedingung verwenden.

Ah, verstehe, sehr saubere Lösung!
Jetzt wird auch bei Auslöser ein mehrfacher Druck auf ON erkannt.
Nur leider passiert dann nichts, die einzelnen Aktionen werden nicht angesteuert.

Habe ich noch nen Konfigurationsfehler in Z2M?
Ich habe die “experimental_event_entities” aktiviert, den “legacy_action_sensor” nicht.

Vielen Dank für deine Hilfe! :+1:

Moin,
ich habe nochmal ein bisschen rumprobiert und bin jetzt bei folgender Variante gelandet, die auch funktioniert:

alias: EG Wohnzimmer Taster Esstisch
description: ""
triggers:
  - trigger: state
    entity_id:
      - event.taster_esstisch_action
conditions: []
actions:
  - choose:
      - conditions:
          - condition: state
            state:
              - "on"
            entity_id: event.taster_esstisch_action
            attribute: event_type
        sequence:
          - choose:
              - conditions:
                  - condition: sun
                    before: sunrise
                    before_offset: "+00:30:00"
                sequence:
                  - action: light.turn_on
                    metadata: {}
                    target:
                      entity_id:
                        - light.eg_wohnzimmer_leuchte_esstisch
                    data:
                      brightness_pct: 30
              - conditions:
                  - condition: sun
                    after: sunrise
                    after_offset: "+00:30:00"
                sequence:
                  - action: light.turn_on
                    metadata: {}
                    target:
                      entity_id:
                        - light.eg_wohnzimmer_leuchte_esstisch
                    data:
                      brightness_pct: 80
      - conditions:
          - condition: state
            state:
              - "off"
            entity_id: event.taster_esstisch_action
            attribute: event_type
        sequence:
          - action: light.turn_off
            metadata: {}
            target:
              entity_id:
                - light.eg_wohnzimmer_leuchte_esstisch
            data: {}
      - conditions:
          - condition: state
            entity_id: event.taster_esstisch_action
            state:
              - brightness_move_up
            attribute: event_type
        sequence:
          - repeat:
              until:
                - condition: state
                  entity_id: event.taster_esstisch_action
                  state:
                    - brightness_stop
                  attribute: event_type
              sequence:
                - action: light.turn_on
                  metadata: {}
                  target:
                    entity_id:
                      - light.eg_wohnzimmer_leuchte_esstisch
                  data:
                    brightness_step_pct: 2
                - delay:
                    hours: 0
                    minutes: 0
                    seconds: 0
                    milliseconds: 200
      - conditions:
          - condition: state
            state:
              - brightness_move_down
            entity_id: event.taster_esstisch_action
            attribute: event_type
        sequence:
          - repeat:
              until:
                - condition: state
                  entity_id: event.taster_esstisch_action
                  state:
                    - brightness_stop
                  attribute: event_type
              sequence:
                - action: light.turn_on
                  metadata: {}
                  target:
                    entity_id:
                      - light.eg_wohnzimmer_leuchte_esstisch
                  data:
                    brightness_step_pct: -2
                - delay:
                    hours: 0
                    minutes: 0
                    seconds: 0
                    milliseconds: 200
mode: restart

Da habe ich jetzt auch integriert, dass das Licht vor Sonnenaufgang nur mit 30% an geht.

Wie bekomme ich es jetzt noch hin, dass auch das GUI über diese Automation schaltet und nicht die Lampe direkt?
Helfer kann ich ja nur als Schalter anlegen und nicht auch als Dimmer, oder?

Danke und Grüße
Jonas

Helfer —> Template —> Leuchte.

Ich würde dann aber nicht eine Automation verwenden, sondern ein Script.

Gruß Osorkon

Danke dir, manchmal ist es so einfach… :sweat_smile:

Das klingt kompliziert. :wink:
Was hat das für Vorteile?

Scripte sind nicht komplizierter als Automationen.
Es sind ja auch eigentlich Automationen ohne Auslöser.

D.h. zum Bsp. Su erstellst Dir ein Script.
Wenn Uhrzeit vor x, dann mischt an mit Helligkeit x
Wenn Uhrzeit nach x, dann Helligkeit y

In Verbindung mit der Template Leuchte, führst Du dann das Script aus, beim einschalten.

Das gleiche Script kannst Du dann in Deiner Automation, anstatt die einzelne Aktionen aufzuführen, ausführen.

Vorteil: Du brauchst die Uhrzeiten und die Helligkeit nur an einer Stelle pflegen, nämlich nur im Script.

Gruß Osorkon

OK, das klingt gut.
Werde ich mich über die Feiertage mal mit beschäftigen.

Vielen Dank dir für die Hilfe und Erklärungen!

LG Jonas