Bei Z2M hat mein Schalter keine Longpress Action mehr

Moin,
Bei Deconz hatten mein Schalter deutlich mehr Trigger in der automation:


als bei Zigbee2MQTT:

Bei Z2M auf der Seite Stehen dafür auch keine Longpress Actions.
Gibt es da eine Einfache Lösung wie man das Nachrüsten kann?
Ist jetzt auch nicht extrem wichtig da ich nur an einem Schalter ein Longpress verwendet habe.

LG
Tobi

Könntest du dir nicht zwei eigene Sensoren anlegen? Du lässt über einen Timer die Zeit zählen, die zwischen Press und Release liegt. Ist die Zeit kleiner 1s, ist es press, sonst longpress. Das wäre erst mal ein Grundgedanke

Gute Idee aber ich weiß nicht wie ich ein solchen Sensor erstellen soll.
Der Sensor den Z2M mit erstellt gibt auch kein timestamp oder ähnliches aus.


und im Logbuch vom Gerät macht er auch sofort nach jedem Trigger noch ein Eintrag mit Nichts
image

Okay… schwierig. Ich habe gerade keine Idee. Habe aber auch nichts zum Testen.

Edit:
Würde sowas bei dir funktionieren?

1 „Gefällt mir“

Habe jetzt wahrscheinlich alles viel zu kompliziert gemacht aber ich habe erstmal eine Lösung mit NodeRED.
image
Hol mir die Daten direkt von MQTT mit dem switch Filter ich mir press_3 und release_3 raus.
In der function-Node press_3 steht:

var d = new Date();
var press = d.getTime()
flow.set("bad3", press);
return null;

Und in der function-Node release_3 steht:

var d = new Date();
var release = d.getTime()
var press = flow.get("bad3");
msg.payload = release - press
return msg;

Und so gibt er mir die Millisekunden aus zwischen press und release.
Die hau ich mir in einen Sensor und dann kann auf Statechange reagieren und je nach Wert entscheiden ob es ein langes oder kurzes drücken war.

@sirector hab es nicht zum laufen gebracht deswegen diese nicht komplizierte Lösung :sweat_smile:

LG

Von node red habe ich keine Ahnung. Aber wenn es funktioniert, dann ist doch egal wie kompliziert :stuck_out_tongue_winking_eye:

Edit:
Ich habe gerade mal gebastelt. Ich habe zwei datetime-helper angelegt und eine Automation.

Automation
trigger:
  - platform: device
    domain: mqtt
    device_id: 89b5e59c5981dd5c91ef225078cd040a
    type: action
    subtype: press
    discovery_id: 0x0017880108021666 action_press
    id: press
    enabled: true
  - platform: device
    domain: mqtt
    device_id: 89b5e59c5981dd5c91ef225078cd040a
    type: action
    subtype: release
    discovery_id: 0x0017880108021666 action_release
    id: release
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - press
        sequence:
          - service: input_datetime.set_datetime
            data:
              datetime: "{{ now() }}"
            target:
              entity_id: input_datetime.a_pressed
      - conditions:
          - condition: trigger
            id:
              - release
        sequence:
          - service: input_datetime.set_datetime
            data:
              datetime: "{{ now() }}"
            target:
              entity_id: input_datetime.a_released
mode: single

Durch die 2 Helfer und die Automation wird die Zeit von Press und Release getrackt und man kann sie so als timestamp abfragen.

{{ state_attr('input_datetime.a_pressed', 'timestamp') }}
{{ state_attr('input_datetime.a_released', 'timestamp') }}

Jetzt könnte man sich damit einen Sensor oder ähnliches basteln.

{% if (state_attr('input_datetime.a_released', 'timestamp') - state_attr('input_datetime.a_pressed', 'timestamp')) < 1 %}
press
{% else %}
longpress
{% endif %}

Ist vermutlich auch viel zu kompliziert, aber für Leute ohne NodeRED vielleicht hilfreich.

1 „Gefällt mir“

Habe noch eine besser Lösung gefunden.

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.
Ich sollte echt mal anfangen bei Problemen nach Blueprint’s zu suchen :sweat_smile:

LG

2 „Gefällt mir“