Tabla de Contenidos
Home Assistant
Sistema de automatización del hogar o domótica.
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 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).
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 aplicación móvil de Home Assistant en el móvil de las personas que queramos controlar.
Automatizaciones
La base de toda automatización se compone de 3 elementos:
trigger: disparador; el evento que activa la automatización.condition: condiciónaction: 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 automatizacionesdescription: 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 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 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';
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.
