Vamos a realizar una instalación básica de Home Assistant en una Raspberry Pi y configuraremos los parámetros más básicos para poder comenzar a hacer cosas más avanzadas luego.
Home Assistant es un proyecto abierto que hace las veces de gestor domótico y controlador de todos los dispositivos IoT de nuestra casa. Nos permite controlar sensores, enchufes, iluminación, alarmas, etc. todo ello dentro del mismo ecosistema sin que ningún dato salga de nuestra casa, siendo nosotros quienes tengamos siempre el control de nuestros dispositivos.
Lista de componentes
- Raspberry Pi 4B (2GB RAM o más) con sus respectivos adaptadores de corriente, disipadores y caja.
- Tarjeta MicroSD (preferiblemente de clase 2) de 32GB o más.
- Un ordenador con acceso a internet.
- ¿Dispositivos domóticos que tengamos?
- Una hora de tiempo libre.
Software que usaremos
- Home Assistant.
- En mi caso Visual Studio Code (pero cualquier editor de texto nos vale).
Nombre | Requisitos | Incluye supervisor | Soporta Add-ons | Soporta Snapshots | Incluye OS | Usa Docker | Método |
---|---|---|---|---|---|---|---|
OS | Mínimos | ✅ | ✅ | ✅ | ✅ | ✅ | ISO |
Supervised | Linux, Docker | ✅ | ✅ | ✅ | ❌ | ✅ | Script |
Container | Linux, Docker | ❌ | ❌ | ❌ | ❌ | ✅ | Docker |
Core | Linux | ❌ | ❌ | ❌ | ❌ | ❌ | Python |
Instalación
Usaremos balenaEtcher para flashear la microSD con la imagen más reciente de Home Assistant que está disponible aquí (según el dispositivo que utilicemos). Una vez hecho esto, nos aseguramos de que nuestra Raspberry Pi esté conectada por cable a internet (es posible usar Wifi pero no recomendable) y tan solo debemos insertar la microSD y conectarla a la corriente. La imagen más reciente de Home Assistant descargará los datos necesarios y se instalará automáticamente. (OJO: No estamos haciendo uso de Raspbian, estamos flasheando otra imagen directamente).
No necesitamos habilitar previamente el acceso por SSH ya que accederemos a HASS desde su dirección local por defecto: http://homeassistant.local:8123
Si no estuviera disponible (puede ocurrir en sistemas antiguos), sustituimos ‘homeassistant.local’ por la IP del dispositivo de la forma: http://192.168.1.2:8123 (Podemos consultar la IP del dispositivo en el área de control del router o usando un programa como Wireless Network Watcher.
La descarga e instalación puede durar entre 10 y 30 minutos dependiendo del sistema y la conexión a internet.
Una vez finalizada, veremos en nuestro navegador:
Una vez rellenados ambos paneles llegamos a la pantalla principal de HASS. Aunque hemos rellenado detalles como la ubicación, zona horaria, etc. veremos que todos estos datos los vamos a poder cambiar más adelante mediante código así que no nos preocupan demasiado.
Es importante diferenciar que Lovelace es solo una interfaz gráfica de Home Assistant desde la que vamos a poder no solo ver nuestro sistema, sino también configurarlo. No obstante, la configuración desde Lovelace (interfaz más gráfica) está limitada. Algunos aspectos solo son configurables desde el ‘core’ de HASS, para eso necesitamos escribir en YAML.
Antes de seguir, vamos a instalar un add-on fundamental desde la interfaz de HASS. Se trata de Samba share necesario para acceder a la estructura de carpetas de HASS desde nuestro ordenador. Aunque es cierto que podemos modificar el código desde la interfaz web usando un editor en linea cómo File editor, hacerlo desde nuestro ordenador es más simple y rápido. Para ello vamos a la esquina inferior izquierda y pinchamos en Supervisor > Add-on store > Samba share > Install. Debemos configurar un nombre de usuario y contraseña en la pestaña de configuración antes de darle a Start.
Una vez iniciado vamos a añadir una unidad de red desde Windows. Vamos a Equipo > Conectar a una unidad de red > Seleccionamos una unidad y nos conectamos a:
(H:) \HOMEASSISTANT\config
Introducimos las credenciales que hemos configurado antes y deberíamos estar viendo algo así:
La carpeta que nos interesa en principio es config. Entramos y, por defecto, tenemos varios archivos/carpetas pero lo que nos interesa es el archivo configuration.yaml
Antes de empezar vamos a desgranar el significado de los archivos. Toda la documentación está disponible AQUÍ.
- configuration.yaml –> Aquí escribimos la configuración básica de HASS y otras vinculaciones.
- ui-lovelace.yaml –> Aquí configuramos la interfaz gráfica de HASS llamada Lovelace (lo que muestra, como lo muestra, etc.)
- customize.yaml –> Aquí configuramos el aspecto (iconos, imágenes, como se muestran en la interfaz, etc.)
- scripts.yaml –> Aquí podemos configurar scripts para ejecutar.
- groups.yaml –> Nos permite crear agrupaciones de cosas (Ej: agrupar sensores que pertenecen a una misma habitación, etc.)
- automations.yaml –> Nos permite establecer automatizaciones (triggers) entre dispositivos.
- secrets.yaml –> ¡OJO! Este archivo es importante porque en el declaramos datos privados. Por ejemplo, claves API, coordenadas, contraseñas, tokens, etc. que necesitamos usar en otros ficheros. Las declaramos aquí de forma que todos los datos sensibles están en un solo sitio y no repartidos por múltiples ficheros.
- config/www –> Directorio necesario si queremos mostrar imágenes en nuestra interfaz. Aquí guardamos archivos multimedia.
- config/integrations –> Interesante para ubicar las integraciones de forma separada (lo veremos más adelante).
- config/custom_components –> Para ubicar add-ons de terceros. Nos servirá también para instalar HACS.
- config/themes –> Aquí ubicamos temas personalizados para la interfaz gráfica.
“PATROCINADO - Prueba los productos de Proton Privacy para proteger tu privacidad y seguridad y estarás contribuyendo al desarrollo de este sitio web sin ningún costo adicional - Proton Mail - Proton Drive - Proton Pass - Proton VPN”
Configuración extra
PD: El contenido por defecto de el directorio config puede ser distinto la primera vez que se inicia. Algunas carpetas/archivos hay que crearlos manualmente.
Editar el campo homeassistant: del archivo configuration.yaml ANULARÁ todos los cambios que hagamos por medio de la interfaz de Lovelace, ya que Home Assistant da prioridad a la configuración declarada en código. Hay ciertas cosas que sin embargo NO podemos configurar de otra manera que no sea mediante código YAML; si quieres configurar solo lo estrictamente necesario para poder seguir tocando cosas desde la interfaz no modifiques el campo homeassistant:.
Si quieres ver la sintaxís básica de YAML puedes aquí. Vamos por partes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Configuración por defecto:
homeassistant:
name: Home
latitude: !secret home_latitude
longitude: !secret home_longitude
elevation: !secret elevation
unit_system: metric
temperature_unit: C
time_zone: Europe/Madrid
packages: !include_dir_named integrations
customize: !include customize.yaml
lovelace:
mode: yaml
frontend:
themes: !include_dir_merge_named themes
javascript_version: latest
person:
- name: Alejandro
id: alejandro
weather:
- platform: openweathermap
api_key: !secret openweathermapkeyforweather
mode: daily
updater:
include_used_components: true
api:
config:
conversation:
history:
logbook:
map:
mobile_app:
ssdp:
sun:
http:
stream:
system_health:
zeroconf:
discovery:
media_extractor:
# Otras ubicaciones:
zone:
- name: Otra ubicacion
latitude: !secret otra_ubicacion_latitude
longitude: !secret otra_ubicacion_longitude
radius: 100
# Text to speech:
tts:
- platform: google_translate
language: es
# Incluir:
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
- homeassistant:
- name: Nombre de la casa
- latitude: Latitud
- longitude: Longitud
- elevation: Elevación metros sobre el mar
- unit_system: Sistema de unidades (métrico, imperial)
- temperature_unit: Unidad de temperatura (C, F, etc)
- time_zone: Zona horaria
- packages: Creamos la carpeta «integrations» para separar las integraciones en un directorio aparte.
- customize: incluimos en la configuración el archivo customize.yaml
- lovelace:
- Indicamos a HASS que vamos a editar la interfaz gráfica mediante código.
- frontend:
- Incluimos el directorio (hay que crearlo) themes para instalar temas personalizados.
- Indicamos que queremos usar siempre la última versión de JavaScript del navegador.
- person: Para crear/editar usuarios
- Indicamos el nombre del usuario
- Indicamos el id que recibirá en HASS
- Podemos indicar más detalles como dispositivos rastreadores para trackear nuestra posición, imágen de perfil personalizada, etc.
- weather: Si se deja en blanco se usa la fuente por defecto de HASS. Yo uso OpenWeatherMap
- platform: plataforma para obtener los datos.
- api_key: Clave API de la plataforma que usemos.
- mode: Información que vamos a mostrar del tiempo.
updater: Comprueba la versión actual de HASS respecto a nuevas versiones.
- zone: Para crear ubicaciones personalizadas.
- name: Nombre de la ubicación.
- latitude: Latitud.
- longitude: Longitud.
- radius: Radio dentro del cual tenemos que encontrarnos para que HASS registre que estamos en esa ubicación.
- icon: Icono personalizado.
- tts: Herramienta para leer texto escrito.
- Por defecto la plataforma es Google Translate.
- Podemos especificar el idioma con language.
- Incluimos otros ficheros que veremos más adelante. Si no los especificamos aquí, no se usará su contenido aunque los editemos.
- group: !include groups.yaml
- automation: !include automations.yaml
- script: !include scripts.yaml
- scene: !include scenes.yaml
Una vez que hemos guardado el contenido editado, volvemos a la interfaz de HASS para reiniciar el sistema. Para ello, antes de nada, hacemos click en nuestro nombre, abajo del todo en la esquina inferior izquierda, lo que nos lleva a un panel de configuración donde debemos activar el modo avanzado. Esto nos permitirá comprobar la validez de cada cambio que hagamos en el código ANTES de reiniciar.
Ahora si, vamos a Configuración > Controles del servidor y pulsamos en Validación de la configuración:
Si todo ha ido bien, en esa misma página, más abajo, pulsamos en Reiniciar y confirmamos la operación. En unos 30~40 segundos se reiniciará. Desde el apartado de configuración podemos entrar al apartado de Zonas y/o Personas y ver los cambios que hemos guardado.
Toda la configuración de mi servidor de Home Assistant está disponible en mi repositorio de Github.
“Los enlaces a productos de Amazon que encuentras en esta página son enlaces de afiliado. Esto significa que si decides realizar una compra a través de estos enlaces, recibiré una pequeña comisión sin ningún costo adicional para ti. Estas comisiones ayudan a mantener y apoyar mi trabajo en este sitio web. ¡Gracias por tu apoyo!”
“PATROCINADO - Prueba los productos de Proton Privacy para proteger tu privacidad y seguridad y estarás contribuyendo al desarrollo de este sitio web sin ningún costo adicional - Proton Mail - Proton Drive - Proton Pass - Proton VPN”