Localización de dispositivos móviles con Life360

Siguiendo con las utilidades de MQTT en Home Assistant, hoy os presentamos la guía Life360, preparada inicialmente por nuestro compañero @rubenzori86.

Se trata de una guía con la cual serás capaz de configurar Home Assistant para conocer la ubicación de dispositivos móviles y el estado de su batería.

Para conocer la ubicación de los móviles nos valdremos de la app Life360 que deberás instalar en los móviles que quieras localizar, siempre con el consentimiento de su propietari@

Una vez instalada y creado el usuario en la app, hay que integralo en HA.

Lo primero que hemos de hacer es crear dentro de /.homeassistant la carpeta /shell_commands

Dentro de esta carpeta hay que guardar el archivo 360_mqtt_broker.sh, que puedes descargar de aquí.

Lo editaremos con nuestros datos actualizando lo que esté en rojo:

username360="email@email.com"
password360="password"
mosquitto_pub="/usr/bin/mosquitto_pub"
mqtt_host="127.0.0.1"
mqtt_port="1883"
mqtt_user="usermqtt"
mqtt_pass="passmqtt"
timeout=150

Ahora le damos permisos de ejecución al script:

sudo chmod +x 360_mqtt_broker.sh

Este archivo lo que hace es conectarse a life360 cada 300 segundos y descargarse la información al mqtt local

Para que el script se inicie cada vez que se encienda tu Raspberry Pi, se configura un autoarranque del mismo:

Creamos el siguiente archivo:

sudo nano /lib/systemd/system/life360.service

Y pegamos dentro lo siguiente:

[Unit]
Description=Life360 service
After=multi-user.target

[Service]
Type=simple
ExecStart=/bin/bash /home/homeassistant/.homeassistant/shell_commands/360_mqtt_broker.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target

OJO CON ExecStart, ahi va la ruta de vuestro script.

Y guardamos el archivo.

Ahora damos permisos al script

sudo systemctl enable life360.service

sudo chmod 644 /lib/systemd/system/life360.service
sudo chmod +x /lib/systemd/system/life360.service
sudo systemctl daemon-reload
sudo systemctl start life360.service
sudo systemctl status life360.service

A continuación debemos instalar lo siguiente:

sudo apt-get install jq

Ahora debemos crear dentro de /.homeassistant la carpeta /device_tracker y dentro de ésta, el archivo device_tracker.yaml.

En este archivo pegamos lo siguiente:

- platform: nmap_tracker
  hosts: 192.168.1.1-255 #tu red y el rango de IP's que quieres escanear 
  home_interval: 15
  interval_seconds: 30
  track_new_devices: yes

- platform: owntracks
  max_gps_accuracy: 100

Esto además nos permitirá escanear nuestra red un busca de nuevos dispositivos

En configuration.yaml, hemos de añadir lo siguiente:

device_tracker: !include_dir_merge_list device_tracker

Para que funcione correctamente hemos de instalar NMAP con los siguientes comandos:

sudo apt-get update

sudo apt-get install nmap

Reiniciamos HA

En la carpeta /.homeassistant encontraremos el archivo known_devices.yaml en el que nos deben aparecer los dispositivos conectados a nuestra red, y los vinculados a life360 aparecerán de la siguiente forma

AAAAAAA_BBBBBBBBBBBBBBBBBBBBBBB:
hide_if_away: false
icon:
mac:
name:
picture:
track: true
vendor:

Para conocer en todo momento el estado de las baterías de los móviles, si no lo has hecho ya, has de crear un archivo sensors.yaml en la carpeta /sensors dentro de /.homeassistant.

En este archivo has de pegar lo siguiente por cada uno de los dispositivos a controlar y sustituyendo los valores AAAA y BBBB por los que hayas obtenido en known_devices.yaml

- platform: template
  sensors:
    battery_AAAAA:
    friendly_name: Batería Móvil nombre
    unit_of_measurement: '%'
    value_template: >
        {%- if states.device_tracker.AAAAA_BBBBBBBBBBBBBBBBBBBBBBB.attributes.battery %}
            {{ states.device_tracker.AAAAA_BBBBBBBBBBBBBBBBBBBBBBB.attributes.battery|round }}
        {% else %}
            {{ states.sensor.battery_AAAAA.state }}
        {%- endif %}
    icon_template: '{%- if is_state("sensor.battery_AAAAAAA", "unknown") %}mdi:battery-unknown{%- elif is_state_attr("device_tracker.AAAAA_BBBBBBBBBBBBBBBBBBBBBBB",
"battery_status", "Charging") %}mdi:battery-charging{%- elif states.device_tracker.AAAAA_BBBBBBBBBBBBBBBBBBBBBBB.attributes.battery <= 5 %}mdi:battery-outline{%- elif
states.device_tracker.AAAAA_BBBBBBBBBBBBBBBBBBBBBBB.attributes.battery >= 95 %}mdi:battery{% else
%}mdi:battery-{{(states.device_tracker.AAAAA_BBBBBBBBBBBBBBBBBBBBBBB.attributes.battery|float / 10)|round*10}}{%- endif %}'

Una vez reinicies tu Home Assistant, te aparecerá la ubicación de  los móviles que hayas configurado (excepto si están en la ubicación Home que no aparecen) y el estado de su batería.

Para situar los móviles sobre un mapa has de añadir a configuration.yaml

map:

Y eso es todo.

En próximas entradas os enseñaremos a señalar en el mapa las distintas ubicaciones de interés para recibir avisos de cuando entra o sale un móvil de esas ubicaciones

Hasta la próxima!

También te podría gustar...

9 Respuestas

  1. zumperio dice:

    Buenas.
    He seguido el tutorial y hay una cosa que no me funciona: el autoarranque al reiniciar la Pi.
    Si hago un status del servicio me saca esto:

    pi@raspberrypi:~ $ sudo systemctl status life360.service
    ● life360.service – Life360 service
    Loaded: loaded (/lib/systemd/system/life360.service; disabled; vendor preset:
    Active: inactive (dead)

    Alguna idea de qué puede estar ocurriendo?
    Si lo arranco manualmente funciona.
    Un saludo y muchas gracias por el trabajazo!!

    • Rubenzori86 dice:

      Prueba a modificar el life360.service cambiando el type a oneshot, asi:

      [Unit]
      Description=Life360 service
      After=multi-user.target

      [Service]
      Type=oneshot
      ExecStart=/bin/bash /home/homeassistant/.homeassistant/shell_commands/360_mqtt_broker.sh
      Restart=on-abort

      [Install]
      WantedBy=multi-user.target

      • zumperio dice:

        Buenas tardes Rubén.
        Muchas gracias por la respuesta.
        Al modificar el Type me saca un error de que el parámetro restart no tenía un argumento válido, con lo cual he probado a quitarlo y a reiniciar a ver si se lanzaba pero nada, sigue igual.
        ¿Alguna otra idea?
        Muchas gracias!

  2. fenikso dice:

    Buenos días,

    Antes que nada, gracias por la guía, lo he podido configurar todo y funcionaba correctamente. El único problema que he tenido ha sido con el autoarranque del servicio de life360.

    Con “sudo systemctl enable life360.service” ya me ha quedado resuelto. No sé si es solo problema mío o a otros también les puede pasar, por si les sirve de ayuda.

  1. 1 febrero, 2018

    […] te explicábamos anteriormente, mediante la app life360 podemos situar en un mapa la localización de los móviles que […]

Deja un comentario