Idée de bouton d'urgence

Bonjour à tous,

Voici mon idée du jour :

Quand on appuie sur le bouton d’urgence, voici ce que je voudrais :

  • Que je reçoive un message (facile) pour m’en informer
  • Que je sache qui a appuyé sur le bouton (ça se complique)
  • Que je sache où est celui qui a appuyé sur le bouton (…)
  • Que j’envoie ses coordonnées pour afficher un pointeur sur Google maps (…)

Je travaille là dessus…
Je reviens vous dire où j’en suis.

1 « J'aime »

J’utilise PushOver, assez simple, bien foutu, un simple :

service: notify.alerte
data:
  message:

Un peu de Jinja et je récupère user (que le prénom) qui est caché dans :

<template TemplateState(
		<
		state person.moi=home; 
		editable=True, 
		id=moi, 
		latitude=41.1906764, 
		longitude=2.9988681, 
		gps_accuracy=17,
		source=device_tracker.mobiles21moi, 
		user_id=d3f2eb149ae34d8286d4ca64ace7efc8,
		device_trackers=
			['device_tracker.mobiles21moi'],
			entity_picture=/api/image/serve/66276d4d0856de3b239bedd3848ef71/512x512,
			friendly_name=Moi
			@ 2023-06-22T22:06:42.305276+02:00>
	 )

avec :

  message: |
    {% set user_id = states.script.bouton_urgence.context.user_id %} {% set
      triggered_by = (states.person | selectattr('attributes.user_id','==',
      user_id)) | list %} {% set user = "System" if not triggered_by
      else state_attr((triggered_by | first).entity_id,
      "friendly_name").split()[0] %}
    ALARME déclenchée par le téléphone de {{ user }}

latitude et longitude sont encore plus simple à trouver.

  {% set latitude = triggered_by[0].attributes.latitude %}
  {% set longitude = triggered_by[0].attributes.longitude %}

J’utilise la fonctionnalité url de PushOver :

  data:
    priority: 2
    sound: siren
    expire: 200
    retry: 60
    url: >
      {% set user_id = states.script.bouton_urgence.context.user_id %} {% set
      triggered_by = (states.person | selectattr('attributes.user_id','==',
      user_id)) | list %} {% set latitude = triggered_by[0].attributes.latitude
      %} {% set longitude = triggered_by[0].attributes.longitude %}
      https://www.google.com/maps/search/?api=1&query={{latitude}}%2C{{longitude}}