====== Home Assistant ======
Sistema de automatización del hogar o domótica.
* [[https://www.home-assistant.io/|Web oficial]]
Todas las notas se centran en la imagen de Home Assistant para Raspberry Pi 2 (la que uso actualmente). Home Assitant también puede ser [[https://www.home-assistant.io/installation/alternative#install-home-assistant-container|instalado a través de una imagen de Docker]].
===== Instalación =====
El método recomendado para tener Home Assistant es instalar el **Home Assistant Operating System** en una Raspberry Pi (a partir del modelo 3).
* [[https://www.home-assistant.io/installation/raspberrypi#install-home-assistant-operating-system| Install Home Assistant Operating System]]
===== Configuración =====
La gran mayoría de los cambios en el fichero ''configuration.yaml'' requieren un reinicio de Home Assistant para ver los cambios. Esto se hace desde el botón **Reiniciar** de la sección Configuración -> Controles del servidor -> Administrador del servidor.
Los ficheros de configuración utilizan la sintaxis YAML
https://community.home-assistant.io/t/when-to-use-in-yaml-files/62790/4
===== Usuarios =====
La buena práctica es tener un usuario con permisos de administrador / propietario y otro normal para el uso de Home Assistant día a día.
===== Personas =====
Una persona es un ser vivo de interés para nuestra instalación de Home Assistant. Podemos vincularlo a un usuario existente de Home Assistant o no. Se hace para luego asociarle automatizaciones o sensores, por ejemplo, si tenemos una mascota con un rastreador GPS.
Para añadir personas, vamos al panel lateral y pulsamos en **Ajustes** -> **Personas**.
===== Seguimiento de personas =====
También se puede instalar la [[https://www.home-assistant.io/integrations/mobile_app/|aplicación móvil de Home Assistant]] en el móvil de las personas que queramos controlar.
===== Automatizaciones =====
* [[https://www.home-assistant.io/docs/automation/|Documentación oficial sobre automatizaciones]]
La base de toda automatización se compone de 3 elementos:
* ''trigger'': disparador; el evento que activa la automatización.
* ''condition'': condición
* ''action'': acción a realizar.
Por ejemplo:
* trigger: Cuando Fulanito entre en casa
* condition: y sea de noche
* action: encender las luces del pasillo.
Se pueden crear en el fichero ''configuration.yaml'' dentro del apartado ''automation'':
automation:
- alias: Example with multiple time values in a single time trigger
trigger:
- platform: time
at:
- "05:00:00"
- "06:00:00"
- "10:00:00"
action:
choose: ...
O en un fichero aparte indicando lo siguientes en ''configuration.yaml'':
automation: !include automations.yaml
Donde ''automations.yaml'' sería el fichero en el que almacenaremos las automatizaciones.
Por defecto, cuando se crea una automatización, se activa. Si no queremos este comportamiento, tendremos que añadirle ''initial_state: false''
automation:
- alias: Example with multiple time values in a single time trigger
trigger:
- platform: time
at:
- "05:00:00"
- "06:00:00"
- "10:00:00"
action:
choose: ...
Si queremos poder editarlas desde la interfaz web, la automatización debe tener un identificador único:
automation:
- id: notificacion_puerta_principal
alias: Puerta principal (aviso)
description: Indica si se abre o cierra la puerta principal
trigger:
...
action:
...
* ''alias'': nombre que aparecerá en el listado de automatizaciones
* ''description'': detalle sobre la automatización (opcional)
===== Detector de presencia =====
==== Device Tracker ====
Utilizar el router para rastrear dispositivos y así poder rastrear personas, por ejemplo.
# Ejemplo de configuration.yaml para un router Technicolor
device_tracker:
- platform: thomson # Thomson es lo mismo que Technicolor
host: 192.168.0.1 # La IP que tenga el router
username: usuario_administracion
password: contraseña
new_device_defaults:
track_new_devices: true
Podemos usar [[https://www.home-assistant.io/integrations/ping/|ping]] para hacer la detección:
- platform: ping
hosts:
nombre_host: 192.168.0.10
Al usar esta integración (Device Tracker) se creará el fichero ''known_devices.yaml'' en el mismo directorio que ''configuration.yaml''. Tiene este aspecto:
fulanito:
icon:
mac:
name: Fulanito Pérez
picture:
track: true
menganito:
icon:
mac:
name: Menganito Rodríguez
picture:
track: true
===== Base de datos =====
Home Assistant utiliza una base de datos para mantener un historial de eventos y sus parámetros. Por defecto, Home Assistant utiliza una base de datos SQLite que se almacena en el directorio de configuración (''/ruta/config/home-assistant_v2.db'').
Si se quiere utilizar un servidor de base de datos en su lugar, es necesario utilizar el componente [[https://www.home-assistant.io/integrations/recorder/|recorder]]. Un ejemplo de configuración en el fichero ''configuration.yaml'':
recorder:
purge_keep_days: 7
db_url: mysql://usuario_bd:contraseña@direccion_servidor/nombre_base_datos?charset=utf8
exclude:
domains:
- sun
entities:
- sensor.*_linkquality
==== Tablas ====
* **events**: eventos que ocurren.
* recorder_runs
* schema_changes
* **states**: estados de los elementos.
Las tablas **events** y **states** están relacionadas por el campo ''event_id'' (clave primaria de **events**).
Las fechas en base de datos son almacenadas por Home Assistant en UTC, así que depende del usuario/aplicación hacer la traducción a la zona horaria de interés.
==== Consultas ====
Las 10 entidades más utilizadas/registradas:
SELECT entity_id,
COUNT(*) as count
FROM states
GROUP BY entity_id
ORDER BY count DESC
LIMIT 10
Consultar el tamaño actual de la base de datos:
SELECT table_schema "Nombre base de datos",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "Tamaño (MB)"
FROM information_schema.tables
GROUP BY table_schema
Estados de un sensor en un determinado rango temporal:
SELECT state, last_changed
FROM states
WHERE
entity_id = 'sensor.luz_salon'
AND last_changed BETWEEN
'2020-07-05 00:00:00.000000' AND '2020-07-07 00:00:00.000000';
* https://www.home-assistant.io/blog/2016/07/19/visualizing-your-iot-data/
===== Complementos =====
==== Advanced SSH & Web Terminal ====
Este complemento permite iniciar sesión en nuestra instancia de Home Assistant utilizando SSH o mediante un terminal web.
Antes de iniciarlo, hay que configurarlo con una contraseña para el usuario SSH o estableciendo claves mediante la configuración del complemento.
Podemos utilizarlo para actualizar el núcleo de Home Assistant:
ha core update
===== Zigbee2MQTT =====
Pasarela Zigbee a MQTT para no depender de pasarelas propietarias / de fabricante.
* https://www.zigbee2mqtt.io/
* https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
* https://community.home-assistant.io/t/zigbee2mqtt-add-on-upgrade-instructions-requested/286697/9