Integrar AirTag en Home Assistant 2.0

En esta entrada vamos a integrar AirTag en Home Assistant, para poder rastrear tus objetos desde tu panel de control.

🥑 If you want, you can read this post in english!

Requisitos previos

Antes de empezar repasemos lo que vas a necesitar para integrar AirTag en Home Assistant:

  • Esta “integración” va a servir tanto para los AirTag oficiales como para otros dispositivos compatibles con la red ‘Find my’ de Apple que permiten rastrean otros objetos. De hecho yo voy a utilizar estos clones baratos.

*Algún precio puede haber cambiado desde la última revisión
  • Necesitas un dispositivo de Apple (iPhone / iPad) para configurar y vincular los rastreadores (al menos, en un primer momento). Además este dispositivo debe estar operativo ya que va a ser el que envíe la información de la localización a Home Assistant. Dicho esto, intentaremos que el proceso sea transparente para el usuario y la información podrá ser consultada desde cualquier dispositivo, tanto Android como iOS.
  • Tanto el dispositivo de Apple como los dispositivos de consulta deben tener instalada la aplicación de Home Assistant.
  • También puedes imprimir nuestro ‘aguatracker’ o conseguirlo con nuestros aguacoins 😀🥑. Además este incorpora NFC en su interior para abrir puertas o utilizarlo en tus automatizaciones.

Extraer la localización del dispositivo Apple

Como ya te expliqué en esta entrada, para obtener la localización de los AirTag o dispositivos compatibles necesitas ejecutar la aplicación “Buscar” desde un dispositivo de Apple. Esto es exactamente lo que vamos a hacer para integrar AirTag en Home Assistant, creando un atajo con el objetivo de enviar la información a HA y poder manejarla desde ahí.

  1. En Home Assistant, ve a Ajustes > Dispositivos y servicios > Ayudantes > Crear ayudante > Texto. Dale el nombre “AirTag”, asigna como valor máximo ‘255’ y pulsa en “Crear”. Esto creará la entidad ‘input_text.airtag’, que almacenará la información enviada por el dispositivo iOS.
  2. Desde el dispositivo iOS con el que hayas vinculado tus AirTag, accede a la aplicación “Buscar”. Renombra los dispositivos, colocando un asterisco (*) al principio del nombre de cada objeto de la siguiente forma.
⚠️ Por defecto el mapa ocupa un 60% de la pantalla del iPhone, por lo que si tienes más de 3 AirTag, el resto no van a aparecer en la previsualización capturada por el atajo. Un truco para salvar este obstáculo es deslizar la parte inferior para ampliar la lista de objetos y salir de la aplicación "Buscar". Cuando se ejecute el atajo mostrará la lista ampliada tal y como la dejaste.
  1. Con el mismo dispositivo iOS, pulsa en este enlace para importar el atajo que va a enviar la información a HA y pulsa sobre los tres puntos de la esquina superior para editarlo.
  2. Busca el apartado “Call” con el icono de Home Assistant y pulsa sobre el icono de la flecha para desplegar el detalle. En el apartado “Server” debes seleccionar tu instancia de Home Assistant para poder enviarle los datos.
  1. Cuando ejecutes el atajo comprobarás que lo que hace es abrir la aplicación “Buscar”, realizar una serie de comandos para extraer y aislar la información de los objetos, y por último mandarla a HA como valor del ayudante que acabamos de crear.
⚠️ El atajo ha sido optimizado para utilizarse en iPhone. Si lo quieres utilizar con un iPad debes tener en cuenta que, al tener una pantalla más grande, también van a captar información del mapa que no te interesa (calles, plazas, etc). Para que funcione correctamente añade un paso adicional para "Recortar la imagen", justo después de hacer la captura y antes de que extraiga el texto de la misma.

Procesando la información

Ya tenemos disponible en Home Assistant la información en “bruto” proporcionada por el dispositivo iOS (puedes verificar como ha llegado la información desde Herramientas para desarrolladores > Estados, buscando la entidad “input_text.airtag”). Probablemente verás algo parecido a lo siguiente:

El siguiente paso para integrar AirTag en Home Assistant es trabajar con esta información para crear un sensor independiente para cada objeto, completar la dirección proporcionada por la aplicación y obtener las coordenadas de dicha dirección. Además, debes tener en cuenta que la aplicación “Buscar” puede mostrarte la información de distintas formas:

  • “Casa” – Esta es la leyenda que aparece cuando has informado la dirección de tu casa en la aplicación, y el dispositivo se encuentra en esta dirección (lo mismo sucedería si hubieras identificado otros lugares como “Trabajo”).
  • “Calle…” – Cuando el dispositivo se encuentra en una dirección desconocida, nos va a indicar los datos correspondientes.
  • “Visto por última vez…” – Veremos esta leyenda cuando haya pasado un tiempo sin que el dispositivo envíe una señal sobre su localización.

Creación de sensores en Home Assistant

Teniendo en cuenta lo anterior, sigue estos pasos para crear los sensores:

  1. Entra en la web de Geoapify y pulsa en “Get started”. A continuación baja hasta el final de la página, pulsa en “Get api key” y regístrate o accede con tu cuenta de Google.
  2. Pulsa en el botón de “Create a project” e introduce el nombre que quieras (por ejemplo, “Aguacatec”)Copia y conserva el código que figura en el campo “Key”.
  3. Copia el siguiente código en tu fichero ‘sensors.yaml’ y haz los siguientes ajustes:
    • Sustituye la palabra “ITEM” por el nombre del objeto que quieres rastrear (por ejemplo, “mochila”).
    • Ajusta el valor del campo ‘scan_interval’ al tiempo en segundos para actualizar las coordenadas del sensor (lo lógico es que la frecuencia sea igual o mayor al periodo en el que ejecutas el atajo del Apple).
    • Sustituye la palabra “ITEM_FINDMY_NAME” por el nombre exacto asignado en la aplicación “Buscar” del dispositivo Apple vinculado (por ejemplo, “Mochila Tito”).
    • Sustituye la palabra “HOME” por la palabra exacta asignada en la aplicación “Buscar” del dispositivo Apple vinculado, cuando el objeto está en casa (por ejemplo, “Casa” o “Home”). Por cierto, observa que podrías hacer lo mismo si tienes otras ubicaciones frecuentes definidas (como el “Trabajo”).
    • Sustituye la palabra “FULLADRESS” por tu dirección completa (por ejemplo, “Calle Alcalá 77, Madrid”). Esta es la dirección considerada para mostrar las coordenadas cuando la aplicación “Buscar” del dispositivo Apple vinculado reporta que el objeto está en casa.
    • Sustituye la palabra “YOURAPYKEY” por el código generado en el paso anterior.
    • Sustituye la palabra “STREETNAME” por el nombre de tu calle, para que el sensor indique que el dispositivo está en casa, aunque haya alguna ligera variación en las coordenadas. Por cierto! puedes indicar una “casa” o base diferente para cada dispositivo (por ejemplo, para una bici en una segunda residencia).
    • Sustituye la palabra “FIXADDRESS” por el nombre de tu ciudad o tu país (por ejemplo, “{% set fix = address + “,Madrid,Spain” %}”) , si quieres limitar la búsqueda para evitar que confunda tu dirección con una localización de nombre parecido en otra ciudad o país. En caso contrario, simplemente déjalo vacío ({% set fix = address + “” %}).
- platform: rest
  name: airtag_ITEM_geo
  value_template: "{{ value_json.results[0].formatted }}"
  json_attributes_path: "$.results[0]"
  json_attributes:
    - lon
    - lat
  verify_ssl: true
  scan_interval: 900 # every 15 min
  force_update: true
  resource_template: >
    {% set address = states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0] %}
    {% if address == "HOME" %}
      {% set home = "FULLADRESS" %}
      {{
        "https://api.geoapify.com/v1/geocode/search?text="
        + home | urlencode
        + "&apiKey=YOURAPYKEY&format=json"
      }}
    {% else %}
      {% set fix = address + "FIXADDRESS" %}
      {{
        "https://api.geoapify.com/v1/geocode/search?text="
        + fix | urlencode
        + "&apiKey=YOURAPYKEY&format=json"
      }}
    {% endif %}

- platform: template
  sensors:
    airtag_ITEM:
      friendly_name: "ITEM"
      value_template: >
        {% set home = "STREETNAME" %} 
        {% if ":" in states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0] %} 
        {{ states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0].split(',')[0] }}
        {% elif home in states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0] %}Home
        {% else %}
        {{ states('sensor.airtag_ITEM_geo') }}
        {% endif %}
      attribute_templates:
        latitude: >
          {% if ":" in states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0] %}null
          {% else %}{{ state_attr('sensor.airtag_ITEM_geo','lat') }}
          {% endif %}
        longitude: >
          {% if ":" in states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0] %}null
          {% else %}{{ state_attr('sensor.airtag_ITEM_geo','lon') }}
          {% endif %}
        status: >
          {% if ":" in states('input_text.airtag').split('ITEM_FINDMY_NAME')[1].split('•')[0] %}unavailable
          {% else %}available
          {% endif %}
        last_update: "{{ as_timestamp(states.input_text.airtag.last_updated)|timestamp_custom ('%d/%m/%Y %H:%Mh') }}"
      icon_template: mdi:bag-personal
⚠️ Ten en cuenta que, aunque he identificado en MAYÚSCULAS las partes del código que debes modificar, la ID de los sensores (por ejemplo, "airtag_ITEM") y las entidades ("sensor.airtag_ITEM_geo) siempre debe indicarse en minúsculas.
  1. Reinicia totalmente Home Assistant (no es suficiente con recargar la configuración).
  2. Ve a Herramientas para desarrolladores > Estados y comprueba que ya tienes como entidad disponible ‘sensor.airtag_ITEM’ cuyo estado es la ubicación del AirTag, además de tener otros atributos relativos a su localización. En su lugar, si ha pasado tiempo desde la última localización enviada, también lo indicará. Toda esta información está disponible para que la utilices en tus tarjetas o tus automatizaciones.

Creación de un device tracker

Opcionalmente, al integrar AirTag en Home Assistant puedes crear un device tracker a partir de los sensores anteriores. Esto te va a permitir generar automatizaciones cuando el dispositivo entre o salga de una zona geográfica. Para hacerlo sigue estos pasos:

  1. Si aún no lo tienes, crea un fichero llamado ‘known_devices.yaml’ dentro de tu carpeta “config”.
  2. Copia el siguiente código y reemplaza lo siguiente:
    • Sustituye la palabra ‘DEVICE_ID’ por el texto exacto que figure en el atributo ‘friendly_name’ del sensor que has consultado en el último paso del apartado anterior, en minúsculas y cambiando los espacios por guiones bajos (‘_’). Por ejemplo, si el ‘friendly_name’ es “AirTag Mochila” debes indicar ‘airtag_mochila’.
    • Sustituye la palabra ‘DEVICE_NAME’ por el nombre con el que quieras identificar tu dispositivo (por ejemplo, “AirTag Mochila”).
    • Sustituye el icono y la imagen del device tracker a tu gusto.
    • Cuando termines de editar el código, reinicia Home Assistant.
DEVICE_ID:
  name: DEVICE_NAME
  mac:
  icon: mdi:bag-personal-tag ## Reemplaza este icono por el que represente a tu objeto
  picture: local/images/mochila.png ## Reemplaza esta ruta por la de la imagen que represente a tu objeto
  track: true
  1. Ahora pulsa en el siguiente botón para importar el blueprint que he preparado, verás que la configuración es muy sencilla. Sólo tienes que seleccionar el sensor que has consultado en el último paso del apartado anterior (por ejemplo, ‘sensor.airtag_mochila’), guardar y reiniciar Home Assistant. El blueprint va a actualizar las coordenadas del ‘device tracker’ cada vez que se actualice el sensor del AirTag.
Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.
💡 Puedes utilizar el blueprint para configurar tantos AirTag como quieras!
  1. Ahora también tendrás disponible la entidad ‘device_tracker.ITEM’, que puedes utilizar en tus mapas y en tus automatizaciones. Por ejemplo, para recibir una notificación cuando un AirTag sale de la zona “Casa”.
mapa

Métodos de actualización de la información

Una vez que has conseguido integrar AirTag en Home Assistant, debemos garantizar que podemos actualizar la información cuando la necesitemos. Aunque la mejor forma de hacerlo va a depender de tus necesidades y tus circunstancias, a continuación vamos a ver algunos casos de uso y cómo implementarlos. En todo caso debes considerar lo siguiente:

  • La actualización necesita de la ejecución del atajo en el dispositivo (iPhone/iPad) en el que se han vinculado los AirTag. Para ello el dispositivo debe estar encendido y desbloqueado.
  • El atajo se ejecuta en primer plano, lo que significa que si el usuario del dispositivo lo está utilizando en ese momento, su actividad se verá interrumpida unos segundos.
  • Los atajos pueden ejecutarse manualmente o mediante automatizaciones programadas desde la propia aplicación “Atajos” (por ejemplo, a cierta hora del día). Además, dependiendo de la versión iOS del dispositivo, para ciertos desencadenantes puedes definir que se ejecute sin necesidad de confirmación por parte del usuario (siempre que el dispositivo esté desbloqueado).
Desde iOS 14 puedes ejecutar automatizaciones sin necesidad de confirmación en función de la hora del día, una alarma, estado de reposo, conexión con carPlay, modo entrenamiento del Apple Watch, contacto con NFC, abrir una app, activación del modo de vuelo, no molestar o ahorrar batería, el nivel de batería o la conexión con el cargador. Puedes consultar que otro tipo de automatizaciones (como al recibir un correo o escuchar un sonido) se han incorporado en versiones superiores en este enlace.

Teniendo en cuenta lo anterior, considero que el método de actualización ideal depende del uso que vayas a dar a los AirTag.

Si los utilizas “por si acaso”

En un gran porcentaje de los casos no necesitamos realizar una monitorización continua, pero viene bien tener un AirTag por si perdemos un objeto (por ejemplo, en nuestro llavero). Con suerte nunca llegues a utilizarlo, pero si alguna vez necesitases consultar su posición bastaría con solicitar la actualización de la localización al dispositivo de Apple.

Cualquier usuario con acceso a Home Assistant puede hacerlo a través del envío de una notificación del siguiente tipo, que puedes personalizar e incluir en un script o en tu panel de control.

service: notify.mobile_app_DISPOSITIVO_APPLE
data:
  message: ¿Dónde están los AirTag?
  data:
    shortcut:
      name: AirTag to HA

Cuando el usuario del dispositivo reciba la notificación sólo tendrá que pulsar sobre ella y esperar unos segundos para enviarte la información.

🏠 El dispositivo Apple debe tener instalada la app de Home Assistant para recibir la notificación, por lo que va a ser una opción adecuada cuando se trate de una persona de confianza de tu entorno, como algún familiar.

Si los utilizas en tu día a día

Se me ocurren muchos casos en los que los AirTag pueden ser de ayuda en el día a día, integrándose en nuestras rutinas para que funcionen de forma transparente. En este necesario es deseable que tú seas el usuario de Apple para poder automatizar tus rutinas. De esta forma puedes aprovechar momentos en los que el dispositivo está desbloqueado, pero la ejecución del atajo no es una molestia. Por ejemplo:

  • Si coges el coche cada mañana y conectas tu iPhone con CarPlay, puedes ejecutar el atajo mientras conduces. Por otro lado, con Home Assistant puedes establecer automatizaciones para que te avise si te has olvidado la mochila con el ordenador en casa, o si ya es cierta hora y tus hijos aún no han salido para el colegio. También puedes ejecutarlo en el camino de vuelta, para saber si han llegado a casa, o tienes que irlos a buscar.
  • Si te gusta comprobar de vez en cuando que todo está en su sitio (tu furgoneta, tu bicicleta, tu tabla de surf…) puedes ejecutar el atajo cada vez que conectes el cargador a tu dispositivo. Despreocúpate sabiendo que si alguno de tus preciados objetos se ha movido, Home Assistant te lo hará saber.
  • Si eres de esas personas que necesita una alarma para despertarse o para acordarse de sacar al perro, puedes aprovechar para ejecutar el atajo justo cuando desbloquees el teléfono para apagar la alarma.

Si necesitas un seguimiento permanente

Hay veces que no es suficiente con actualizar de vez en cuando, sino que necesitamos monitorizar la posición de forma continua y proactiva para que el seguimiento tenga sentido. Por ejemplo, si estás de viaje y te preocupa perder tu equipaje o que te roben el coche. En este caso vas a querer saber si alguno de ellos se ha movido lo antes posible para tener la oportunidad de reaccionar.

De lo contrario puede ser demasiado tarde para recuperarlos ya que estos podrían perder la señal en algún momento o ser neutralizados por quien se los haya llevado. Además, ten en cuenta que una vez que la localización llegue, por ejemplo, a un edificio de viviendas, las autoridades no van a poder entrar sin una orden judicial a buscar a cada una de ellas.

En estos casos te recomiendo que utilices un viejo iPhone o iPad y lo dejes en casa durante tu viaje. Sólo tienes que asegurarte de dejarlo conectado a la corriente, con la pantalla activa y desbloqueada de forma permanente, y programar una automatización para que ejecute el atajo en intervalos cortos de tiempo (por ejemplo, utilizando la hora del día). Por otro lado crea una automatización en Home Assistant para que te envíe una notificación, por ejemplo, cuando cambie su posición siempre que no coincida con la tuya (porque seas tú quien lo está moviendo).


¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Send this to a friend