Aide automatisation serrure

Bonjour,

J’ai une fois de plus besoin de vos lumières.
J’ai une serrure NUKI 4.0 qui remonte en mqtt, on la déverrouille soit manuellement, soit via une ios.action_fired soit par un capteur d’empreint digital au chaque user a un ID.

Je cherche a faire une automatisation notification d’ouverture de porte qui me remonte le nom de celui qui la déverrouille, je compte faire faire un ios.action_fired par utilisateur.

Pour la capteur d’empreinte je peut voir le dernier doigt scanné qui correspond a un ID

Comment je peut m’y prendre? dans le fichier journal je vois ce qui a déverrouillé la serrure mais je ne sais pas comment me servir de ces info pour en faire une automatisation.

Capture5

merci

Salut,

L’éat de la serrure, et l’id de l’empreinte sont bien 2 entités ?
Si oui, l’état en tant que trigger de l’automatisation, et l’empreinte à mettre dans le texte de ta notif

d’accord, mais je veux être notifié suivant la manière ou elle a été déverrouillé

soit - manuellement
- ios.action_fired ( 4 au total) pour chaque user
- avec le capteur d’empreintes

l’idée est de savoir qui à déverrouiller la porte, il n’y a que pour le déverrouillage depuis la serrure ou la il n’est pas possible de savoir qui donc se sera une notification porte déverrouiller

ios.fire_action, c’est spécifique ;)… Donc je sais pas trop, pas de machin à pomme à la maison sauf du calvados;)
Pour le reste, je comprends que tu as déjà des automatisations


image
Donc tu as juste à completer leurs contenu pour ajouter une notification dedans, non ?

1 « J'aime »

si je comprends ce que tu dit, je dois rajouter un modèle dans le contenu du message ?
Si c’est ça, que dois-je mettre dans le modèle car je ne sais pas ou récupérer l’information de qu’est-ce qui a déverrouiller la serrure tel que visible dans le journal ( voir photo du haut)

merci

Je ne peux pas vraiment te donner le code, à ajouter, je ne sais pas du tout comment sont nommés tes entités
Mais

  • Le premier cas, ios.action_fired est utilisé dans le trigger, dans l’automatisation tu pourra utiliser la variable "{{ state_attr(trigger.event.data.entity_id, 'friendly_name') }}"
  • Le deuxième c’est l’état de cette entité
    image

actuellement j’utilise ce code qui me notifie lorsque la serrure est déverrouillé, mais quelques soit le moyen utilisé car c’est l’état général de la serrure. Il n’y a que dans le fichier journal que je vois ce qui a déverrouiller la serrure.


alias: "notification nuki déverrouille "
description: ""
trigger:
  - platform: device
    device_id: 5f1bd900ca03f1d61985b83089b10baa
    domain: lock
    entity_id: de2c8d69e1124a8a6853390a786f8ee1
    type: unlocked
condition: []
action:
  - service: notify.mobile_app_sabrina
    metadata: {}
    data:
      message: NUKI DÉVERROUILLÉE ⚠️⚠️
      title: NUKI DÉVERROUILLÉE ⚠️⚠️
  - service: notify.mobile_app_iphone_seba
    metadata: {}
    data:
      message: NUKI DÉVERROUILLÉ ⚠️⚠️
      title: NUKI DÉVERROUILLÉ ⚠️⚠️
mode: single

Du bon ? Si oui, dis-moi quand passer…

2 « J'aime »

j’ai procéder de la sorte mais comme je m’en doutais quand on déverrouille depuis le capteur d’empreinte ou ios.fire_action ( son état passe a déverrouillage) je reçois une double notification , celle pour l’action qui a déverrouillé et celle de l’état de la serrure, dans mon code j’ai mis que " les conditions ne sont pas satisfaite " mais cela ne va pas

alias: test notif nuki
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.empreinte_ld2410_fingerprint_state
    to: doigt autorisé
    id: capteur seba
  - platform: state
    entity_id:
      - lock.nuki
    to: unlocking
    id: nuki
  - platform: event
    event_type: ios.action_fired
    event_data:
      actionName: seba deverrouillé nuki
    id: ios seba
  - platform: event
    event_type: ios.action_fired
    id: ios sabri
    event_data:
      actionName: sabri deverrouillé nuki
  - platform: event
    event_type: ios.action_fired
    id: ios alissia
    event_data:
      actionName: alissia deverrouillé nuki
  - platform: event
    event_type: ios.action_fired
    id: ios anthony
    event_data:
      actionName: anthony deverrouillé nuki
  - platform: state
    entity_id:
      - sensor.empreinte_ld2410_fingerprint_state
    to: doigt autorisé
    id: capteur anthony
  - platform: state
    entity_id:
      - sensor.empreinte_ld2410_fingerprint_state
    to: doigt autorisé
    id: capteur alissia
  - platform: state
    entity_id:
      - sensor.empreinte_ld2410_fingerprint_state
    to: doigt autorisé
    id: capteur sabri
condition: []
action:
  - if:
      - condition: and
        conditions:
          - condition: trigger
            id:
              - nuki
      - condition: not
        conditions:
          - condition: trigger
            id:
              - ios sabri
              - ios alissia
              - ios seba
              - ios anthony
              - capteur anthony
              - capteur alissia
              - capteur sabri
              - capteur seba
        enabled: true
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: nuki ouverture locale
  - if:
      - condition: trigger
        id:
          - ios seba
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: seba a déverrouillé porte
  - if:
      - condition: trigger
        id:
          - ios anthony
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: anthony a déverrouillé porte
  - if:
      - condition: trigger
        id:
          - ios alissia
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: alissia a déverrouillé porte
  - if:
      - condition: trigger
        id:
          - ios sabri
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: sabri a déverrouillé porte
  - if:
      - condition: trigger
        id:
          - capteur seba
      - condition: numeric_state
        entity_id: sensor.empreinte_ld2410_fingerprint_last_finger_id
        above: 0
        below: 3
      - condition: numeric_state
        entity_id: sensor.empreinte_ld2410_fingerprint_last_finger_id
        above: 2.9
        below: 6
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: seba empreinte déverrouillé porte
  - if:
      - condition: trigger
        id:
          - capteur anthony
      - condition: numeric_state
        entity_id: sensor.empreinte_ld2410_fingerprint_last_finger_id
        above: 29
        below: 36
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: anthony empreinte déverrouillé porte
  - if:
      - condition: trigger
        id:
          - capteur alissia
      - condition: numeric_state
        entity_id: sensor.empreinte_ld2410_fingerprint_last_finger_id
        above: 19
        below: 26
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: alissia empreinte déverrouillé porte
  - if:
      - condition: trigger
        id:
          - capteur sabri
      - condition: numeric_state
        entity_id: sensor.empreinte_ld2410_fingerprint_last_finger_id
        above: 9
        below: 16
    then:
      - service: notify.mobile_app_iphone_seba
        metadata: {}
        data:
          message: sabri empreinte déverrouillé porte
mode: single

Hello,

C’est un bloc de construction « Choix » qu’il faut utiliser ( avec pour chaque ID de trigger tes actions correspondantes), ce sera plus simple que les If

@+

1 « J'aime »

Salut,

Pour moi l’info des empreintes ça ne sert à rien dans les triggers… (c’est toujours de changement d’état de la serrure qui est le bon déclencheur)
Par contre, tu peux sans doute essayer de voir dans la partie action à mettre un code qui vérifie la dernière date de mise à jour de l’entité empreinte (genre si moins de 5sec) c’est que c’est lié au déverrouillage, si c’est plus vieux c’est un autre mécanisme. Et à ce moment là, tu complètes la notification

résultat identique mais plus simple effectivement :+1:

pas bête je regarde de ce côté :+1:

qu’est ce que je peut mettre dans mon model de condition satisfaite pour que si ces automatisations on été exécutées dans les 5 secondes il ne passe pas
-automation.seba_deverrouille_nuki
automation.ios_sabri_deverrouille_nuki

En dehors d’une entité booléenne que tu testes dans les conditions d’une automatisation : rien !
Par contre, c’est peut-être que les automations sont à revoir/réécrire.

j’essaye ce code dans une action , attendre que le modèle soit évalue à vrai qui doit faire en sorte que si mon automatisation a été exécuté il y a moins de 5 secondes il passe à l’action suivante mais cela ne fonctionne pas


wait_template: "{{state_attr('automation.seba_deverrouille_nuki','last_triggered')}}"
timeout: "5"
enabled: true

Salut
Là ce que tu fais c’est attendre 5s max avant de récupérer la valeur.
Dans tous les cas tu auras une valeur à ce moment là. Même si le déclencheur a eu lieu il y a 3j
Ce que tu dois faire c’est attendre 5s, récupérer la valeur et vérifier que le timestamp obtenue est avec un écart de moins de X secondes par rapport à la date actuelle.
Il y a plusieurs exemples de syntaxe sur le forum
Par ex Last_updated change alors que la valeur ne change pas - #4 par Tochy

merci pour le temps que tu m’a consacré, j’ai lu le lien que tu as mais c’est trop compliqué pour mes maigres connaissances.

C’est pas si compliqué :

{% set lastchgt = states.sensor.espportail_wifi_signal.last_changed %}
{% set delta = as_timestamp(now()) - as_timestamp(lastchgt)|float(0) %}
{{ delta < 5}}

je comprends que tu dises « c’est pas si compliqué « quand on maitrise :ok_hand:

du coup grâce à ta réponse j’ai testé ce code dans l’outil de développement mais il me renvoie false alors que l’automation vient d’être lancé, même si je lui met 60 secondes. Il faut que je mette des milliers de seconde pour qu’il passe en true


{% set lastchgt = states.automation.seba_deverrouille_nuki.last_changed %}
{% set delta = as_timestamp(now()) - as_timestamp(lastchgt)|float(0) %}
{{ delta < 5}}