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.
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
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)
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') }}"
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.
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
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
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
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
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
je comprends que tu dises « c’est pas si compliqué « quand on maitrise
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}}