Trabajo Sobre Homeassistant
Trabajo Sobre Homeassistant
Trabajo Sobre Homeassistant
2
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Universidad de Jaén
Escuela Politécnica Superior de Jaén
Departamento de Informática
Don ANTONIO ABARCA ÁLVAREZ , tutor del Proyecto Fin de Carrera titulado:
Sistema de Domótica IoT Multiplataforma, que presenta NICOLÁS MORAL DE
AGUILAR, autoriza su presentación para defensa y evaluación en la Escuela
Politécnica Superior de Jaén.
MORAL DE Firmado
digitalmente por ABARCA
Firmado digitalmente por
ABARCA ALVAREZ ANTONIO -
AGUILAR MORAL DE
AGUILAR NICOLAS - ALVAREZ
23786769P
Nombre de reconocimiento
(DN): c=ES,
NICOLAS - 53596327W
serialNumber=23786769P,
ANTONIO -
sn=ABARCA ALVAREZ,
givenName=ANTONIO,
3
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
A mis padres, por hacerme ser quien soy. Por permitirme crear mi
futuro, incluso en momentos en los que ni siquiera era capaz de ver
el presente.
5
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
6
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Índice
1. Introducción...................................................................................................................11
1.1. Motivación..................................................................................................................11
1.2. Propuesta ..................................................................................................................11
1.3. Objetivos ....................................................................................................................12
1.3.1. Bajo Coste ......................................................................................................12
1.3.2. Procesamiento local ........................................................................................12
1.3.3. Seguridad y tolerancia a fallos ........................................................................12
1.3.4. Curva de aprendizaje mínima..........................................................................13
1.4. Estimación de costes .................................................................................................14
1.4.1. Temporal .........................................................................................................14
1.4.2. Técnica (GitHub) .............................................................................................16
1.4.3. Presupuesto ....................................................................................................17
2. Tecnologías usadas. Estado del arte.............................................................................19
2.1. Contraposición con redes 5G .....................................................................................19
2.2. Protocolos de domótica actuales ...............................................................................20
2.2.1. MQTT..............................................................................................................20
2.2.2. Zigbee .............................................................................................................21
2.2.3. Z-Wave ...........................................................................................................21
2.3. Frameworks de domótica actuales .............................................................................22
2.3.1. Home Assistant ...............................................................................................22
2.3.2. OpenHAB ........................................................................................................22
2.3.3. Domoticz .........................................................................................................22
2.4. ¿Por qué Home Assistant y MQTT?...........................................................................23
2.5. Mosquitto Client/Server ..............................................................................................23
3. Hardware ......................................................................................................................25
3.1. ESP-8266 ..................................................................................................................25
3.1.1. Características ................................................................................................25
3.1.2. Pin-Out y diagrama electrónico .......................................................................27
3.1.3. Interfaz de conexión UART a USB ..................................................................28
3.1.4. Proceso de flasheo .........................................................................................29
3.1.5. Dispositivos utilizados tras flasheo ..................................................................31
3.2. Comparativa tecnológica............................................................................................40
4. Firmware y programación ..............................................................................................41
4.1. Tasmota .....................................................................................................................41
7
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
8
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
9
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
10
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
1. Introducción
1.1. Motivación
1.2. Propuesta
11
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
1.3. Objetivos
1.3.1. Bajo Coste
Con el chip ESP-8266 es posible conseguir que este sistema tenga un precio
muy económico y que sea fácilmente implementable en nuevas viviendas e incluso en
antiguas. Prácticamente la totalidad de dispositivos domóticos comerciales a nivel
usuario hacen uso de este chip, así que debo recalcar que no concibo la
implementación de este TFG sin él.
El procesamiento local es una de las cosas que más echo en falta en las
aplicaciones de domótica actuales. Los sensores y actuadores de un sistema
domótico de este tipo transmiten mucha información personal entre ellos y sobre todo
hacia un “sistema de procesamiento central”. En caso de usar marcas comerciales,
estos sistemas son servidores que disponen de nuestra información personal. En
cambio, implementando el intercambio de información de todos nuestros dispositivos
a través de un servidor propio y local, aumentamos bastante la privacidad del sistema.
12
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
13
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
14
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
También he considerado conveniente incluir una tabla con los costes asociados
al tiempo asignado para la realización de cada etapa. Está en este caso separado del
presupuesto ya que es necesario diferenciar el coste de inversión en investigación del
coste de implementación.
15
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
16
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
1.4.3. Presupuesto
17
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
18
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
19
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
20
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
2.2.2. Zigbee
• Zigbee Coordinator
• Zigbee Router
2.2.3. Z-Wave
21
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
de enlace, sin embargo está limitado a cuatro saltos. El alcance, es mayor que el de
Zigbee al usar radiofrecuencia, de 10-20 metros que soporta Zigbee hasta 100 metros
que es capaz de soportar Z-Wave.
2.3.2. OpenHAB
2.3.3. Domoticz
22
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
23
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
publicar mensajes en el bróker. Los argumentos son -h para la IP del bróker, -t para
el topic y -m para el mensaje (payload).
24
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
3. Hardware
3.1. ESP-8266
3.1.1. Características
Hardware:
Conectividad:
Modos de operación:
25
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Módulos ESP-XX:
ESP-01 ESP-05 ESP-12 NodeMCU
Existen más módulos aparte de estos, fabricados por otras empresas, por
ejemplo, son muy utilizados todos los de Wemos. Por lo general, en los productos que
se utilizan en este proyecto, se incluye el módulo PSF-B85 que es una variante
encapsulada del ESP-12. También se incluyen en los módulos más modernos el ESP-
8285, que es un 8286 con el módulo de memoria ya incluido en el interior.
26
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
27
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
28
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
3,3V. En esta parte del proceso es muy importante seleccionar bien la tensión ya que
si alimentamos un ESP-8266 a 5V puede quedar inutilizable. A continuación se
muestra un diagrama de conexión con un ESP-01.
29
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
• Puerto COM
• Imagen del firmware que queremos subir a la placa descargada
directamente desde el apartado de “releases” de Tasmota en GitHub
• Velocidad en baudios (por defecto 115200)
• Modo de flasheo, que debe ser siempre Dual Output (DOUT)
• Si queremos o no borrar la memoria interna. (No es necesario si
simplemente queremos actualizar vía USB)
30
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sonoff Basic
31
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
• Placa 1 (RIEGO):
o 1 relé para cada una de las electroválvulas de riego
• Placa 2 (CONTROL GARAJE):
o 1 Relé para activar la depuradora
o 1 Relé para activar la luz de la piscina
o 1 Relé para activar la puerta del garaje
o 1 Relé queda libre actualmente
Ilustración 15: Sonoff 4CH DIY (Vista superior y lateral del chip)
32
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Es una placa similar a la DIY de cuatro canales. Es más cara, permite montaje
en railes DIN, y dispone de botones en la parte izquierda para activar de forma
individual cada uno de los 4 relés disponibles en ella. Además, aunque en el proyecto
se hace vía software directamente en el firmware, esta placa dispone de
microinterruptores para seleccionar varios modos de operación con los que podemos
configurar si pueden o no activarse varios relés, si solo pueden activarse de forma
individual…
33
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sonoff TH10
Es una placa que dispone de solo un relé como Sonoff Basic, aunque de aspecto
se parece bastante más al Dual. Dicho esto, su diferencia más interesante es un
conector minijack lateral donde podemos conectar un sensor de temperatura y/o
humedad. Se ha utilizado para disponer de información sobre ambas medidas en el
sótano, además de como interruptor de emergencia. Es uno de los interruptores más
interesantes del proyecto, diseñado para funcionar a prueba de fallos. Este Sonoff
está instalado de tal forma que alimenta la Raspberry Pi 3B que aloja a Home Assistant
y el router del sótano. Es un relé aislado al que no tenemos acceso desde la interfaz
de Home Assistant, su configuración por defecto en caso de fallo en la red eléctrica
es de cerrarse al encenderse para volver a activar el sistema. Tiene conectado un
sensor AM2301. Es el último Sonoff que se ha añadido al proyecto, para evitar caídas
del sistema. Puede accederse a su interfaz directamente a través de internet, pero no
a través del sistema. En teoría debe de permanecer siempre encendido a no ser que
haya algún problema mayor. Su proceso de flasheo es bastante sencillo ya que
tenemos los pines directamente disponibles en la placa, y el GPIO-0 se puentea con
tierra al pulsar el botón del interruptor.
34
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sonoff Dual R2
Esta placa dispone de 2 relés, básicamente es igual que un Basic pero con un
relé más disponible para conectar. En el proyecto se han utilizado para la
electroválvula de entrada de agua general, y para las persianas individuales, pues son
ideales para este uso, ya que el motor necesita dos salidas, una para bajar y otra para
subir.
El aspecto exterior del dual es similar al del TH10, sin embargo, carece de
entrada de minijack y tiene un relé más, pero el flasheo es idéntico. Una vez instalado
hay que tener cuidado de activar el interbloqueo, ya que ambos relés no deben nunca
de estar instalados a la vez. En la imagen se muestra el diagrama de conexión. Las
flechas indican la conexión de los interruptores. Como ya existían interruptores
enclavados mecánicamente, se han utilizado para ser lo menos intrusivo posible.
35
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
36
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sonoff S26
Es un módulo de Sonoff con una entrada de conector schuko macho, y una salida
hembra. Así, utiliza el relé para unir entrada y salida permitiéndonos conectar y
desconectar de forma remota o incluso automática lo que hay conectado en el
enchufe. En el proyecto se ha utilizado para controlar de forma remota la alimentación
de los monitores y el estudio de música. No hay problema en darle este uso, pero
siempre teniendo en cuenta el amperaje de los equipos que conectemos, ya que el
relé soporta hasta 10A.
El flasheo de este dispositivo es algo más engorroso porque hay muy poco
espacio en la placa, además es bastante difícil sujetarla. Así que, a pesar de que los
pines están bastante expuestos, es uno de los más difíciles de conectar al puerto serie
para cargar el nuevo firmware. Pero una vez conectados los pines necesarios, al igual
que los anteriores no hay más que conectarlo al USB y cargar el firmware Tasmota.
Una vez hecho esto tendremos todo lo necesario para conectarlo a Home Assistant.
Cabe decir que a la hora de adquirir esta placa hay que tener bastante cuidado
ya que existen varias ediciones dependiendo del tipo de enchufe del territorio en el
que nos encontremos. Debemos comprar la versión EU.
37
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sonoff iFan02
Una vez que se ha abierto la placa, la conexión es sencilla. Los pines están expuestos
totalmente y el GPIO-0 accesible para conectarlo a tierra y activar el modo de flasheo.
38
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Wemos D1 Mini
De todos los dispositivos sobre los que hemos hablado en este punto, el D1 mini
es el más sencillo de programar puesto que la interfaz USB está disponible
directamente en placa, y además tiene el botón reset puenteando GPIO-0 a tierra de
tal forma que simplemente conectando el USB con el botón de reset pulsado, Wemos
D1 mini pasará al modo de flasheo. También es compatible con Tasmota, y aunque
en algunas de las placas mencionadas anteriormente haya disponibles algunos GPIO
del ESP-8266/85, si va a trabajarse con sensores, es recomendable utilizar Wemos,
por las siguientes razones:
39
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
40
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4. Firmware y programación
4.1. Tasmota
4.1.1. Configuración inicial
41
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
El resto de opciones son para ajustar si queremos una hora y unos días de la
semana, o queremos que se active en la salida o la puesta de sol.
En Tasmota también existen lo que en la Wiki llaman “Rules”, o sea reglas. Nos
permite una programación básica del dispositivo incluso con condicionales y
variables. Actualmente no tiene interfaz, igual que no la tenían anteriormente
42
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
43
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.1.2. OTA
44
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2. HomeAssistant
4.2.1. Arquitectura
• Bus de eventos
• Máquina de estados
• Registro de servicios
• Temporizador
45
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2.2. YAML
46
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
- martin:
name: “Martin D'vloper”
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: “Tabitha Bitumen”
job: Developer
skills:
- lisp
- fortran
- erlang
Un bloque doblado, se guarda como una sola línea literal, pero cambia saltos de línea
por espacios. Se usarán para combinar YAML con Jinja2 que conoceremos en el
apartado siguiente.
fold_newlines: >
this is really a
single line of text
despite appearances
Las variables nos serán útiles para los “templates” en Jinja2. Se manejan de la
siguiente forma.
Estos son los conceptos básicos para poder configurar y utilizar YAML en Home
Assistant. En el caso de necesitar más información sobre el mismo, se recomienda
acudir a la web de referencia de YAML1, actualmente se utiliza la versión 1.1 porque
Home Assistant incluye el soporte al lenguaje a través de la librería PyYAML, que se
encuentra en esta versión.
1 https://yaml.org/
47
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2.3. JINJA2
Comprobar estados
{{ states('device_tracker.paulus') }}
Condicionales
{% if is_state('device_tracker.paulus', 'home') %}
{% else %}
{% endif %}
Bucles
{% endfor %}
2 https://www.home-assistant.io/docs/configuration/templating/
48
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2.4. Componentes
49
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2.5. Entidad
Cada uno de los dispositivos que forman parte de nuestro sistema domótico está
representado en Home Assistant como una entidad. Se encargan de abstraer el
funcionamiento interno del sistema, así no tenemos que preocuparnos de conocer
como usa los servicios o la máquina de estados para funcionar. Nos permiten extender
un tipo de entidad implementando solamente las propiedades y métodos necesarios
para funcionar. Cuando configuramos un nuevo dispositivo, se genera una entidad
nueva que podemos personalizar desde YAML, requiriendo ésta unos atributos
mínimos para funcionar, y dejando otros como opcionales.
4.2.6. Automatizaciones
Disparador
Condición
Acción
3 https://www.home-assistant.io/docs/automation/
50
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2.7. Scripts
script:
encender_luz_y_notificar:
sequence:
- service: switch.turn_on
data:
entity_id: switch.puerta_garaje
- service: notify.html5
data:
target: papa
Puede que solo se necesiten scripts, pero si el caso de uso lo requiere, combinar
este script con una automatización haría posible, por ejemplo, notificar solamente si
no hay nadie en casa en ese momento.
4 https://www.home-assistant.io/docs/scripts/
51
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
4.2.8. UI Lovelace
52
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
53
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Además, desde este editor al que podemos acceder cuando seleccionamos el modo
edición en el menú de la esquina superior derecha de la interfaz, podemos agregar
nuevas tarjetas, y ver cuales hay disponibles oficialmente en Home Assistant. Al
intentar agregar una nueva pulsando, desde el modo edición, en el botón con el
símbolo “+” de la esquina inferior derecha, aparece un cuadro de diálogo con todas
las tarjetas que podemos utilizar.
54
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
5. Sensores
5.1. Meteorológicos
5.1.1. DS18B20
Ilustración 37: Versiones comerciales de DS18B20 y esquema de conexión con Wemos D1 Mini
55
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
AM2301 es una versión con cable del sensor DHT21 en una carcasa de plástico
grande con soporte para sujeción por tornillo. Es un sensor de bajo coste de
temperatura y humedad. Utiliza un termistor para la temperatura y un sensor de
humedad capacitivo y envía la señal en formato digital. La frecuencia máxima de
lectura es de 2 segundos. Consta de 3 cables, uno de datos, y los dos habituales para
alimentar el dispositivo entre 3.3 y 5.5v.
5.2. Caudal
El sensor se basa en el efecto magnético Hall, tiene una turbina que se mueve
al pasar el agua. Una de sus aspas tiene un imán que el sensor magnético reconoce
al pasar.
56
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Dependiendo del número de veces que gire la turbina, envía pulsos a un Wemos
D1 Mini mediante PWM, permitiendo saber cuál es el flujo del agua mediante una
entrada digital de la placa. La fórmula utilizada calcula la variación de volumen con
respecto al tiempo.
∆𝑉
𝑄=
∆𝑡
𝑉 = 𝑉0 + 𝑄∆𝑡
57
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
• Alimentación 5V
• Distancia 2-400cm (A partir de 250cm las medidas empiezan a perder
fiabilidad)
• Resolución 0.3cm
58
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
5.4. Presencia
En este apartado vamos a profundizar sobre los sensores de presencia vía BLE
(Bluetooth Low Energy). Aunque el sistema utiliza 3 proveedores de localización
diferentes, dos de ellos son integraciones de Home Assistant, por tanto, la
implementación de estos en el sistema es trivial.
59
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
aplicación esta función dejó de estar disponible. Tras perder la localización vía BLE
en el sistema se necesitaba otra manera de conseguir esa detección de presencia.
60
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sensor binario
Existen versiones binarias para prácticamente todos los tipos que se explican a
continuación. Un sensor binario es aquel que solo tiene dos estados posibles,
verdadero o falso. Son, por consiguiente, bastante sencillos de configurar y muy útiles
a la hora de programar automatizaciones y scripts dentro del sistema.
Sensor bayesiano
Sensor de filtrado
Ilustración 43: Grafica simulando valores de un sensor de humedad real y uno ya filtrado
5 https://es.wikipedia.org/wiki/Teorema_de_Bayes
61
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Sensor estadístico
Sensor HTTP
Sensor RESTful
Consume datos desde el “endpoint” de una API REST. Tiene soporte para
métodos GET y POST y probablemente sea el sensor que más información nos
permite obtener desde fuera de nuestro sistema, debido a la gran cantidad de API’s
disponibles en este formato.
Sensor Ping
62
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
https://github.com/home-assistant/pi-gen/releases
6 https://www.redhat.com/es/topics/containers/what-is-docker
63
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Existen varias aplicaciones que nos permiten volcar una imagen en una tarjeta
SD. Usaremos balenaEtcher que es de las más sencillas.
https://www.balena.io/etcher/
64
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Una vez editados los datos para conectarnos a nuestra red inalámbrica,
salvamos el archivo y Hassbian copiará la configuración al arrancar para establecer la
conexión.
http://hassbian.local:8123
También tenemos disponible el acceso por SSH con los mismos datos, aunque
se recomienda encarecidamente cambiar el password por defecto.
“/home/homeassistant/.homeasistant”
65
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Una vez que se conocen las rutas y parámetros básicos para conectarnos al
sistema. Debemos saber cómo se estructura la configuración. A excepción del log y
la base de datos, todos los archivos están codificados en YAML.
Ilustración 46: Ejecución del comando "ls" en el directorio principal de Home Assistant
configuration.yaml
secrets.yaml
custom_components/
66
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
www/
packages/
Estos son los ficheros y carpetas del proyecto que deben conocerse. Todos los
demás archivos YAML tienen el nombre del componente que se implementa en su
interior.
67
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Ilustración 47: Diagrama de flujo del funcionamiento del sensor para la localización de usuarios
68
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Otro de los sensores más importantes del sistema es la integración con la API
de OpenWeatherMap. Aporta información meteorológica bastante completa que en
nuestro caso va a utilizarse para evitar que el sistema de riego active la programación
si va a llover, ya que en este caso será la lluvia la que riegue el jardín. Además, están
implementándose mejoras en el sistema de riego para aumentar o disminuir el tiempo
de activación de las electroválvulas dependiendo de la temperatura que haya habido
durante el día anterior. Al estar como componente en Home Assistant, la disponibilidad
de los sensores en el sistema como entidades es directa, y se configuran los atributos
disponibles desde la propia integración.
7 https://www.home-assistant.io/components/switch.mqtt/
69
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Atributos configurados:
state_topic: Topic para recuperar el estado de los relés desde Home Assistant
70
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Ilustración 50: Bombilla Yeelight v2 e interfaz de la integración de una bombilla RGB en Home Assistant
71
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Todas las zonas son activables de forma manual, por separado, y están limitadas
vía Tasmota para que no pueda haber zonas activadas de forma simultánea. Para
integrarlas en la interfaz de forma elegante se tomaron unas fotografías de la zona del
jardín asociada a cada circuito de riego y usamos tarjetas de Lovelace tipo “Picture
Glance”
72
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Existe también un panel de información del ciclo actual, donde puede verse
información relativa al último ciclo de riego. Está disponible el tiempo de activado para
cada uno de los relés conectados a las electroválvulas, el estado actual del ciclo, la
zona activa y el tiempo restante de la zona.
73
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
6.3.7. Persianas
Programación de persianas:
Hay que tener en cuenta que en este caso no debemos de poner la placa Sonoff
en paralelo con los interruptores, si no que debemos conectar los interruptores en la
placa. Aunque los interruptores por defecto para persianas motorizadas están
enclavados de forma mecánica (los motores funcionan con un neutro y doble fase), al
realizar el paralelo entre el Sonoff y los interruptores, cabe la posibilidad de que
habiendo dejado activado un interruptor físico, se active la fase contraria en el Sonoff.
Para que esto no se produzca en ningún caso, se conectan los interruptores desde el
propio VCC a 3.3V del Sonoff a un GPIO disponible, así pasarán a ser botones en el
firmware Tasmota. De esta forma, y activando a través de la consola el interbloqueo
de relés8, nunca podrán activarse dos fases de forma simultánea.
8 https://github.com/arendst/Sonoff-Tasmota/wiki/Commands (InterLock)
74
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
6.3.8. Cámaras
Aunque ahora pueden integrarse las cámaras por defecto en el sistema como
diferentes componentes dependiendo del protocolo que usen (http, onvif, rtsp), en
versiones anteriores de Home Assistant, no era posible. Por ello cuando empezó el
desarrollo, se pensó en una segunda Raspberry Pi que sirviese sistema de
videovigilancia, para generar flujos de video compatibles con Home Assistant. El
servidor de videovigilancia por antonomasia es ZoneMinder. Tiene un componente
para integrarlo directamente en Home Assistant, pero no está pensado para funcionar
en dispositivos con una potencia limitada. El uso de ffmpeg para cargar los tres flujos
de vídeo en nuestro sistema, hace que la Raspberry Pi 3B utilice más de un 90% del
procesador de forma continua para la gestión de los flujos.
Una vez descartado el uso de ZoneMinder, se buscó otro servidor local de video
vigilancia que tuviese soporte para flujos en H264, ya que este formato es mucho más
ligero que el anterior, y el consumo de CPU baja drásticamente (del 90% a menos del
10%). Tras valorar diferentes opciones, elegimos Shinobi, es un software de código
abierto, muy nuevo y con una alta participación en su repositorio oficial.
75
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Por privacidad, todas las cámaras tienen bloqueado por defecto el acceso
externo a internet desde el router. De esta forma, solo pueden enviar el flujo de vídeo
al servidor donde se encuentra Home Assistant. Además, la cámara situada en el
interior de la vivienda tiene agregado un Sonoff Basic, que la activa mediante una
automatización solo cuando todos los usuarios del sistema están fuera de la vivienda.
76
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Por sencillez, se ha usado la cuarta opción, que es la última que ha sido añadida.
Esta aplicación escanea los dispositivos en red y produce una salida como la
siguiente, de la que nos interesa el token que guardaremos como llave en el archivo
secrets.yaml.
77
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
10 https://www.testdevelocidad.es/redes/wake-on-lan-utilizarlo/
78
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Google Cast
Sonos
Spotify
https://www.home-assistant.io/components/spotify/
11 https://www.home-assistant.io/components/discovery/
79
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Información de Sistema
80
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Información de Red
En este caso, hay que ser conscientes de que, en una Raspberry Pi, la tarjeta de
red ethernet transmite a través del bus de datos USB. Así que, si tenemos conexiones
de fibra de alta velocidad, tanto la bajada como la subida están limitadas a la
transferencia máxima soportada por el bus del puerto USB. Es literalmente un cuello
de botella.
81
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
En esta parte de la interfaz, introducimos dos nuevas tarjetas. Una no oficial para
la barra de progreso que controla el porcentaje de impresión del tipo “bignumber_card”
Y dos más tipo “gauge” para visualizar las temperaturas del extrusor y de la cama
caliente.
82
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Lo primero que debemos hacer una vez que hemos configurado los botones, es
prohibir el acceso a internet de todos ellos para que no puedan hacer compras. Una
vez que están bloqueados en el firewall del router, existe un servidor en Python
llamado “amazon-dash12” que detecta mediante la MAC, cuando uno de estos
dispositivos intenta enviar un paquete. Este servidor escucha las peticiones enviadas
que, aunque no salgan fuera de la red local, es suficiente para saber que el botón se
ha accionado. La configuración es bastante sencilla, y el servidor permite la ejecución
de comandos o llamadas a URL’s cuando detecta la petición de uno de estos botones.
Además, es compatible con Home Assistant y puede enviar eventos al sistema. Estos
“ ash Buttons” estaban a la venta por 1.99€, y pueden usarse como interruptores Wi-
Fi totalmente funcionales, se usan para activar los circuitos de riego. Es necesario
crear un token de largo acceso13 para hacer peticiones al sistema.
Ilustración 59: Botón Amazon Dash y YAML para enviar el evento a HomeAssistant
12 https://github.com/Nekmo/amazon-dash
13 https://www.home-assistant.io/docs/authentication/
83
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
14 http://ariela.surodev.com/
84
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
6.6. Notificaciones
Ilustración 61: Automatización que notifica a la familia cuando se activa la zona de riego 1
15 https://www.home-assistant.io/components/notify/
85
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
16 https://www.home-assistant.io/components/google_assistant/#first-time-setup
86
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Los atributos necesarios para exponer entidades en Google Assistant son los
que se detallan a continuación.
Se recomienda incluir los tres atributos para cada entidad, de esta forma si
invocamos a Google Assistant solicitando apagar “Luces del sótano”, se apagarán
todos los dispositivos de tipo luz que estén asignados al sótano.
87
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
https://hacs.netlify.com/installation/manual/
Ilustración 64: Vista en HACS de la tienda de integraciones y tarjetas disponibles para instalar
88
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
6.9. TasmoAdmin
https://github.com/reloxx13/TasmoAdmin
89
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
90
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
7. Seguridad y Red
7.1. Mapa de red local
91
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Para solucionar estos problemas, se idearon las redes malladas (Mesh Network).
Es una topología de red en la que todos los nodos en alcance están interconectados
entre sí. Si el espacio a cubrir es demasiado grande, la interconexión de nodos permite
el siguiente escenario:
Pero no es solo ésta la ventaja de las redes malladas. Los clientes de la red
pueden cambiar el nodo de conexión sin que existan cortes en la transferencia de
datos, e incluso mantener una conexión con más de un nodo de forma simultánea
para aumentar la velocidad de su enlace. También pueden compartir clientes entre
nodos a modo de balanceador de carga. Hace unos años, las redes malladas
quedaban relegadas al terreno empresarial, sin embargo, aunque son caras aún, la
inversión merece la pena.
Ilustración 69: Escenarios habituales en redes malladas y dispositivo Lyra Mini compatible con AiMesh de Asus
92
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
17 https://www.techopedia.com/definition/26142/secure-copy
93
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
https://github.com/RMerl/asuswrt-merlin/wiki/Installation
https://github.com/pedrom34/TutoAsus#2-activate-ssh-et-jffs-partition
https://github.com/RMerl/asuswrt-merlin/wiki/Entware
https://github.com/pedrom34/TutoAsus#5-install-nginx
https://www.home-assistant.io/docs/ecosystem/nginx/
94
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
8. Manual de usuario
Cuando accedemos al servidor a través de un navegador, se nos solicitan
nuestras credenciales de entrada. Una vez dentro, vemos la página principal de Home
Assistant.
MENU 1 SECCIONES MENU 2
DEV TOOLS
CONFIGURACIÓN CONFIGURACIÓN
PANEL DE SECCIÓN
DE SISTEMA DE USUARIO
8.1. Menú 1
95
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
8.2. Menú 2
La segunda utilidad es una opción que permite mostrar todas las entidades que
no se han añadido en ninguna de las secciones de la interfaz. Así podemos ver el
aspecto de las mismas cuando creamos nuevas o cuando queremos acceder a alguna
que no es de uso habitual.
8.3. Secciones
• General
96
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
• Activable
• Jardín
97
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
asignamos en los “sliders” inferiores el tiempo de riego que deseamos para cada zona.
Finalmente, podemos activar el primer interruptor de la sección que habilita la
programación, o pulsar el botón siguiente que inicia un ciclo completo en el instante
que lo activemos.
• Cast
Respecto a la sección de
dispositivos multimedia, el
funcionamiento es simple, y
posee las mismas opciones
que cualquier reproductor
habitual. Solamente es
necesario indicar, que si
pulsamos en una entidad
multimedia, aparece un campo
Ilustración 73: Sección Cast en Lovelace
de texto para producir audio
TTS a través de ese dispositivo.
98
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
• Monitorización
• Impresora 3D
99
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
• Desarrollo
18 https://www.home-assistant.io/docs/tools/dev-tools/
100
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
9. Conclusiones
9.1. Conclusión final
El valor de los datos personales de los usuarios, hace que un sistema con
procesamiento local, sea la opción más segura para protegernos.
101
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
La primera de ellas, tiene que ver con automatizaciones y scripts. Integrar la base
de datos de Home Assistant en un sistema de procesamiento, que es actualmente
posible a través de integraciones de complementos, probablemente nos permita ver
mediante técnicas de Big Data qué comportamientos de los usuarios del sistema
pueden ser automatizados o asistidos.
Por último, sería interesante desarrollar algún complemento propio, o sobre las
plataformas AppDaemon19 o Node-RED20 que están disponibles en Home Assistant.
19 https://appdaemon.readthedocs.io/en/stable/
20 https://nodered.org
102
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
103
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
104
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
11. Referencias
Información 5G
https://www.5gfixedwireless.org/2019/03/what-is-5g-fixed-wireless-fwa/
Información MQTT
https://ricveal.com/blog/primeros-pasos-mqtt/
ESP-8266
https://programarfacil.com/podcast/esp8266-wifi-coste-arduino/
Zigbee Info
https://www.alexaenespanol.com/que-es-zigbee-y-como-funciona/
Z-Wave info
https://www.xataka.com/seleccion/zigbee-z-wave-que-que-se-diferencian-que-
marcas-domotica-compatibles
MQTT Mosquitto
https://clouding.io/kb/introduccion-a-eclipse-mosquitto/
https://wiki.wemos.cc/products:d1:d1_mini
UART y USB
https://aprendiendoarduino.wordpress.com/2016/11/09/uart-y-usb-en-arduino/
Platform IO IDE
https://platformio.org/platformio-ide
https://developers.home-assistant.io/docs/en/architecture_index.html
https://naylampmechatronics.com/blog/10_Tutorial-de-Arduino-y-sensor-
ultras%C3%B3nico-HC-S.html
http://www.theorycircuit.com/water-flow-sensor-yf-s201-arduino-interface/
105
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
https://www.luisllamas.es/temperatura-liquidos-arduino-ds18b20/
https://naylampmechatronics.com/blog/40_Tutorial-sensor-de-temperatura-y-
humedad-DHT1.html
https://www.Beaconstac.com/what-is-a-bluetooth-Beacon
https://blog.truthlabs.com/Beacon-tracking-with-node-js-and-raspberry-pi-
794afa880318
https://shinobi.video/docs/
https://francoconidi.it/zoneminder-su-raspberry-pi-3-b-raspbian-stretch/
https://github.com/Nekmo/amazon-dash
https://www.awesome-ha.com/
https://www.home-assistant.io/docs/installation/hassbian/common-tasks/
Tutorial de YAML
https://www.tutorialspoint.com/yaml/index.htm
Tutorial de Jinja2
https://pythonista.io/cursos/py201/introduccion-a-jinja-2
Firmware Tasmota
https://github.com/arendst/Sonoff-Tasmota
Web de Owntracks
https://owntracks.org/booklet/
106
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
http://ariela.surodev.com/
Redes malladas
https://www.xataka.com/especiales/redes-wifi-mesh-que-son-como-funcionan-y-por-
que-pueden-mejorar-tu-red-wifi-en-casa
Proxy Inverso
https://picodotdev.github.io/blog-bitix/2016/07/como-crear-un-proxy-inverso-entre-el-
servidor-web-nginx-y-un-servidor-de-aplicaciones-java/
107
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
108
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
12. Glosario
Addons: Es una mejora instalable en un sistema. Son programas que funcionan
sobre otro para ampliar funcionalidades
Beacon: Dispositivo de bajo consumo que emite una señal única, generalmente
mediante bluetooth
BIOS: Software básico que reconoce los dispositivos necesarios para cargar el
arranque del sistema en RAM
DDNS: Servicio de DNS, que permite enlazar una IP dinámica a un dominio estático
que se actualiza de forma automática
Echo: Mensaje que se envía a través de un protocolo con la intención de que regrese
al dispositivo emisor
109
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
Flag: Bit que almacena un valor binario cuyo significado se ha asignado previamente
Hardening: Es una serie de procesos que se llevan acabo en un sistema para reforzar
la seguridad del mismo
SSH: Protocolo que permite la conexión cifrada con la consola de otro equipo
110
Escuela Politécnica Superior de Jaén
Nicolás Moral de Aguilar Sistema de Domótica IoT Multiplataforma
UEFI: Interfaz extensible de firmware que releva a la antigua BIOS. Añade soporte
para gráficos avanzado y acceso remoto
YAML: Lenguaje diseñado para serializar datos de forma legible por personas
111
Escuela Politécnica Superior de Jaén