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!

16 comentarios sobre “Localización de dispositivos móviles con Life360

  • el 1 febrero, 2018 a las 16:33
    Permalink

    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!!

    • el 1 febrero, 2018 a las 21:42
      Permalink

      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

      • el 6 febrero, 2018 a las 17:25
        Permalink

        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!

        • el 6 febrero, 2018 a las 18:38
          Permalink

          Buenas tardes.
          En estos casos, aunque a los más puritanos no les guste esta solución, puedes programar el reinicio en el crontab
          Añade lo siguiente:

          @reboot sudo systemctl start life360.service

          Prueba y a ver si funciona.
          Muchas gracias por tu interés!!!

          • el 11 febrero, 2018 a las 17:38
            Permalink

            Perfecto! Muchas gracias y disculpa, no he podido contestarte antes ^^!

          • el 12 febrero, 2018 a las 12:47
            Permalink

            Gracias a ti!!

  • Pingback:Localización de dispositivos y configuración de notificaciones | Domology 2.0

  • el 8 marzo, 2018 a las 11:42
    Permalink

    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.

  • el 29 agosto, 2018 a las 12:57
    Permalink

    Hola a todos.

    Os felicito por los tutoriales, estan muy bien.

    Tengo un problema y es que no se que tengo que poner en estos campos:

    mqtt_user=»usermqtt»
    mqtt_pass=»passmqtt»

    Tras reiniciar HA me da el siguiente error:

    https://imgur.com/yO9v5Gz

    Gracias y un saludo.

    • el 29 agosto, 2018 a las 13:44
      Permalink

      Esto ya esta solucionado, era error mio.

      Lo que no entiendo es lo del AAAAA-BBBBBBBBBB para el chequeo de la bateria, este es mi movil detectado en el fichero known_devices.yaml:

      00ec0ac94c79:
      hide_if_away: false
      icon:
      mac: 00:EC:0A:C9:4C:79
      name: 00ec0ac94c79
      picture:
      track: true

      No tengo un campo separado por un «_», que devo poner como AAAA y BBBBBB.

    • el 29 agosto, 2018 a las 13:55
      Permalink

      Lo anterior ya esta resuelto, era error mío.

      Lo que no entiendo es lo del chequeo de la batería, en el fichero known_devices.yaml he localizado mi móvil por la MAC, pero no encuentro ningún valor que contenta el símbolo “_” y no se que debo poner como AAAAA yBBBBBBBBBB

      00ec0ac94c79:
      hide_if_away: false
      icon:
      mac: 00:EC:0A:C9:4C:79
      name: 00ec0ac94c79
      picture:
      track: true

      Gracias, un saludo.

  • Pingback:Tracker usando Xiaomi Miband o Amazfit Bip | Domology 2.0

Deja un comentario

Síguenos

Siguenos en facebook