Formation PUB420 : Système domotique DIY, 2020 Home Assistant

6.65 Simuler la position GPS d'une personne avec device_tracker.see


Lorsque vous désirez que Home Assistant puisse réagir selon la position d'une personne en utilisant l'application Home Assistant, il devient difficile de tester les automatisations sans devoir vous déplacer physiquement dans la ville.

Par chance, la position géographique d'une personne peut être simulée grâce au service device_tracker.see.

Ce service peut modifier la position d'un système de suivi GPS réel ou virtuel. 

Créer un device_tracker

Le fonctionnement d'une entité de type device_tracker est passablement différent de celui des autres types de virtuels, par exemple input_boolean ou encore input_text.

D'abord, pour créer une entité de type device_tracker, il suffit d'appeler le service device_tracker.see.

Ensuite, la valeur de l'entité ainsi créée sera perdue au redémarrage de Home Assistant.

Voici donc comment créer un device_tracker :

Entrez ceci dans Outils de développementActions :

  • Action : Voir (device_tracker.see).

    device_tracker.see

    Notez que selon les configurations de votre système, il pourrait arriver que le service ne soit pas reconnu. Si c'est votre cas, ajoutez cette ligne dans le fichier configuration.yaml :

    Fichier configuration.yaml

    device_tracker:

    Vous devrez ensuite redémarrer Home Assistant (un rechargement des configurations n'est pas suffisant).

  • ID de l'appareil : entrez l'identifiant de l'objet à modifier. Si aucune entité ne correspond à cet identifiant, une entité virtuelle sera créée.

    Attention : lorsqu'on fait appel au service device_tracker.see, il faut préciser l'identifiant de l'objet et non l'identifiant de l'entité. Donc, il ne faut pas entrer le domaine device_tracker, seulement l'identifiant de l'objet.

    Par exemple, ceci ne fonctionnera pas : device_tracker.position_virtuelle_annie.

    il faut plutôt entrer position_virtuelle_annie.

  • Emplacement : si vous désirez travailler avec les zones, entrez le nom d'une zone définie dans votre système Home Assistant ou home pour simuler que la personne est à la maison.

    Notez que le travail avec des zones offre moins de possibilités que le travail avec une position GPS.

    Service device_tracker.see

  • Pour tirer tout le potentiel du positionnement, if faut travailler avec des coordonnées GPS. Deux syntaxes sont disponibles :
    • sur une ligne, le tout entre crochets carrés :
      [46.058476616659746, -71.94362640380861]
    • sur deux lignes, chaque valeur précédée d'un trait d'union puis d'un espace :
      - 46.058476616659746
      - -71.94362640380861

    Service device_tracker.see

Une fois le service appelé, si l'entité n'existait pas, elle est créée. Sinon, sa position est simplement mise à jour.

Retrouver l'identifiant d'un device_tracker

Vous pouvez confirmer que l'entité existe et retrouver son nom à partir du menu Paramètres / Appareils et services / Onglet Entités.

Suggestion : utilisez la case Filtre pour retrouver les entités plus rapidement.

Entité device_tracker

Les informations sur le device_tracker sont enregistrées dans le fichier /mnt/data/supervisor/homeassistant/known_devices.yaml.

Ce fichier peut être visualisé à l'aide du module complémentaire File editor.

Fichier known_devices.yaml

position_virtuelle_annie:
  name: position_virtuelle_annie
  mac:
  icon:
  picture:
  track: true

device_tracker dans une automatisation qui travaille avec une zone

Voici un problème qui peut survenir ou non selon votre version de Home Assistant.

Lorsqu'une automatisation doit réagir quand une personne virtuelle entre ou sort d'une zone donnée, elle doit être en mesure de retrouver les coordonnées GPS du device_tracker.

Si vous avez utilisé un nom de zone pour spécifier la position d'un device_tracker, vous pourriez obtenir un message du genre « Message malformed: Entity is neither a valid entity ID nor a valid UUID for dictionary value » lorsque vous enregistrez l'automatisation.

Message malformed: Entity is neither a valid entity ID nor a valid UUID for dictionary value

Et même si vous n'obtenez pas ce message, le changement de position à l'aide d'un nom de zone pourrait ne pas être pris en compte par l'automatisation.

Si vous rencontrez ce problème, vous pouvez le contourner en utilisant des coordonnées GPS pour spécifier la position du device_tracker.

Voir la position d'un device_tracker sur une carte

Vous pouvez voir la position virtuelle dans le tableau de bord sur une carte de type Carte ou encore directement dans l'option de menu Map.

Pour que la position du virtuel apparaisse il faut donner à l'entité une position GPS et non une position à partir d'une zone.

Par défaut, la carte affichera la première lettre de l'identifiant de l'objet.

device_tracker sur une carte

Changer l'image d'un device_tracker

Le fichier customize.yaml permet d'apporter des personnalisations à différentes entités, notamment l'image utilisée pour représenter un device_tracker.

Si le fichier n'existe pas encore, créez-le dans le même dossier que configuration.yaml, c'est-à-dire /mnt/data/supervisor/homeassistant.

Ceci peut être réalisé dans le terminal HassOS ou encore à l'aide de le module complémentaire File editor.

Dans configuration.yaml, vous devez avoir une référence à ce fichier.

Fichier configuration.yaml

homeassistant:
  customize: !include customize.yaml

Dans le fichier customize.yaml, vous pouvez désormais préciser l'image à utiliser pour le device_tracker.

Pour utiliser vos propres images, vous devez les téléverser sur le Pi dans un dossier précis.

L'image à utliiser peut ensuite être configurée comme suit :

Fichier customize.yaml

device_tracker.position_virtuelle_annie:
  entity_picture: /local/annie.png

Redémarrez Home Assistant pour que les configurations soient actives.

Désormais, l'image apparaît sur la carte plutôt que la première lettre de l'identifiant de l'entité.

device_tracker avec images

Source des images : http://clipart-library.com/clip-art/kid-transparent-background-22.htm

Retrouver la latitude et la longitude d'un device_tracker

Grâce aux modèles, il est possible de retrouver spécifiquement la latitude et la longitude d'un device_tracker.

D'abord, comme avec n'importe quelle entité, il est possible de connaître les attributs disponibles à partir du menu Outils de développement / Modèle.

Entrez dans la zone de gauche une chaîne au format {{ states.id_de_l_entite }}.

Modèle

{{ states.device_tracker.position_virtuelle_annie }}

Voici le résultat à l'écran lorsque la position a été définie à l'aide de coordonnées GPS.

J'ai ajouté des sauts de ligne pour que les attributs soient plus visibles.

Résultat à l'écran

<template TemplateState(<
    state device_tracker.position_virtuelle_annie=Travail;
    source_type=gps,
    latitude=46.05123588418276,
    longitude=-72.00332701206209,
    gps_accuracy=0,
    friendly_name=position_virtuelle_annie
    @ 2025-11-03T11:04:01.874055-05:00>
)>

Si la position a été définie à l'aide du nom d'une zone, il y aura moins d'attributs disponibles.

Résultat à l'écran

<template TemplateState(<
    state device_tracker.position_virtuelle_annie=Travail;
    source_type=gps,
    friendly_name=position_virtuelle_annie
    @ 2025-11-03T11:15:01.874055-05:00>
)>

Voici un autre exemple où la position de l'entité n'a pas été redéfinie après un redémarrage de Home Assistant.

Résultat à l'écran

<template TemplateState(<
    state device_tracker.position_virtuelle_annie=not_home;
    source_type=None,
    friendly_name=position_virtuelle_annie
    @ 2025-11-03T11:04:55.752248-05:00>
)>

Une fois que vous connaissez les attributs disponibles, vous pouvez retrouver spécifiquement la latitude et la longitude si elles sont disponibles.

Modèle

{{ state_attr('device_tracker.position_virtuelle_annie', 'latitude') }}

Modèle

{{ state_attr('device_tracker.position_virtuelle_annie', 'longitude') }}

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre