Detección de presencia para Home Assistant


Buscando de como integrar detección de presencia para Home Assistant y viendo que algunas de las soluciones no son demasiadas simples o bien muy rebuscadas para su total implementación.

Aprovechando la cuarantena me he puesto a diseñar una solución simple y universal, que solo requiere de dos cosas:

  1. Un Smartphone/Tablet Android, puede ser el mismo que se usa como centro de control, importante debe estar siempre en casa o en la dependencia de detección.
  2. Todos los usuarios que queremos detectar su presencia deben llevar su dispositivo bluetooth encendido, puede ser su mismo smarphone personal, una banda deportiva (algunas funcionan mejor que otras), una usb key bluetooth etc…

Para los que tienen desactivado el bluetooth desde que se implemento el bluetooth LTE (Bajo consumo) se puede tener siempre encedido

Instalando la app MQTT Home Presence

La APP MQTT Home Presence de cosecha propia, la podeís econtrar en la tienda de Google Play, esa app será la encargada de monitorizar de forma recurrente si ecuentra undispositivo bluetooth en su radio de detección, si el dispositivos se encuentra dentro de la lista de dispositivos permitidos lo comunicará con MQTT para que luego en Home Assistant crear las automatizaciones de presencia.

Setup de la APP

1 Instalar y abrir la App MQTT Home Presence
2 Menu Wizard configuration
3 Room settings: Aquí se debe rellenar los campos associados a la estancia (No olvide hacer clic en Guardar para guardar los cambios)

4 Agregar dispositivos permitidos, agregue los dispositivos de cada miembro de su familia o amigos.

5 Configure MQTT client, rellene los campos con los datos del broker MQTT previamente configurado en Home Assistant, luego pulse testear conexión (No olvide hacer clic en Guardar para guardar los cambios)

6 Click Finalizar
7 Ahora puede presionar play y se ejecutará un servicio en segundo plano, cada minuto hará un descubrimiento de los dispositivos bluetooth que lo rodean, si coincide los que están en la lista de permitidos los notificara por MQTT.

Al pulsar el botón REFRESH se obtiene el log donde podremos ver que dispositivos se han detectado, si tienen el corazon quiere decir que el dispositivo está en la lista de permitidos y el mqttPublishMsg, se puede ver el payload que se envia.

Otro detalle que se puede observar es el topic, la base que se ha definido en el apartado de configuración, se le añade la dirección mac del dispositivo bluetooth detectado, quedando así

andrews_home/first_floor/17:70:E5:CF:OF:CA

El payload que se envia automaticamente es similar a

{
    "address": "17:70:E5:CF:OF:CA",
    "confidence": 1,
    "name": "realme 5 Pro",
    "scanDuration": 0,
    "timestamp": "Apr 10, 2020 15:21:33"
}

Integración en Home Assistant

En Home Assistant debemos tener algun broket MQTT instalado, yo recomiendo usar el mismo que se encuentra en addons, es fácil de integrar.

Una vez activado y que funcione bien, podemos crear los sensores mqtt, en archivo configuration.yaml

sensor:
  - platform: mqtt
    state_topic: 'andrews_home/first_floor/FF:00:11:22:36:11'
    value_template: '{{ value_json.confidence }}'
    unit_of_measurement: '%'
    name: 'Andrew First Floor'

En el campo value_template se obtiene el valor confidence (confianza) del json recibido como payload de MQTT

¿Cómo se calcula el valor de confianza (confidence)?
El valor de confianza varía de 0 a 1.0
Si se encuentra un dispositivo, aumenta en 0.5
Si un dispositivo permitido no es visible en el rango de detección de bluetooth se reduce en 0,33

En resumen que si el usuario a detectar tiene el valor 1.0 hay la certeza que está en la zona, si es menor a 0.5 puede haber cambiado de planta , salido de casa o bien el dispositivo no ha notificado su visibilidad (muy frecuente en bandas deportivas economicas).

Otro punto a tener en cuenta, algunos fabricantes de smarphones en el apartado bluetooth añaden opción de visibilidad y permite ocultar la identificación de bluetooth tras un periodo de tiempo, mejor desactivar esa opción.

Integrar multiples detectores

Si tenemos una casa con diferentes plantas, se puede tener un detector en cada una de ellas, en el topic de configuración de la app se puede especificar que planta se encuentra el detector

andrews_home/garage => para el garaje
andrews_home/first_floor => para la primer planta
andrews_home/second_floor => para la segunda planta
...

Al associar los dispositivos permitidos, en todos los detectores, en este caso pongamos que tiene la dirección mac FF:FFF:FF:00:00:A1 en home assitant se deberá añadir todos los sensores mqtt correspondientes

sensor:
  - platform: mqtt
    state_topic: 'andrews_home/garage/FF:FFF:FF:00:00:A1'
    value_template: '{{ value_json.confidence }}'
    unit_of_measurement: '%'
    name: 'Andrew Garage'
  - platform: mqtt
    state_topic: 'andrews_home/first_floor /FF:FFF:FF:00:00:A1'
    value_template: '{{ value_json.confidence }}'
    unit_of_measurement: '%'
    name: 'Andrew First Floor'
  - platform: mqtt
    state_topic: 'andrews_home/second_floor /FF:FFF:FF:00:00:A1'
    value_template: '{{ value_json.confidence }}'
    unit_of_measurement: '%'
    name: 'Andrew Second Floor'

Recursos

Publicado por Codelaby

Mobile DevDesigner

2 comentarios sobre “Detección de presencia para Home Assistant

  1. Se podría implementar en un esp32 lo que hace el móvil o tablet con la aplicación Android. Es decir que en lugar de identificar las habitaciones con las macs de los distintos dispositivos Android que están en esas habitaciones para geolocalizar, usar esp32 como dispositivo que geolocaliza?

    Me gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: