En este nuevo artículo/tutorial voy a hablar de cómo puedes crear un llavero inteligente compatible con Home Assistant que nos va a permitir varias cosas entre las que destacan:
- Tener un control de quién está en casa y quién se ha ido.
- Saber cuándo un miembro de la familia llega.
- Y controlar que todo el mundo deja la llave en su lugar.
A ver, estos son problemas del primer mundo pero gracias al llavero inteligente ya no tendrá que volverte loco buscando las llaves del coche porque tu queridísima pareja se le ha olvidado dejarlas en la entrada y tú las necesitas para salir cagando leches al trabajo.
Es más, todo lo que vamos a ver aquí es el desarrollo de un proyecto básico de llavero inteligente pero como verás al final del artículo, si añades ciertas mejoras vas a poder añadir funcionalidades para que haga casi cualquier cosa.
Pero primero es entender cómo funciona y como construirlo.
Indice de contenidos
- 1 Capítulo llavero inteligente con Home Assistant
- 2 Introducción al llavero inteligente
- 3 Esquema general llavero inteligente
- 4 Cómo funciona un conector jack de audio
- 5 Esquema eléctrico llavero inteligente
- 6 Programación llavero inteligente con ESPHome
- 7 Integración llavero inteligente en Home Assistant
- 8 Mejoras llavero inteligente
Capítulo llavero inteligente con Home Assistant
Si quieres ir a tiro hecho, aquí te dejo los capítulos del vídeo.
00:00 Introducción y mini curso de domótica gratuito
03:28 Introducción y materiales del llavero inteligente compatible con Home Assistant
05:25 Esquema general y funcionamiento llavero inteligente
08:33 Esquema eléctrico y de conexión llavero inteligente con ESP32
10:14 Código ESPHome llavero inteligente
12:30 Integración llavero inteligente con Home Assistant
14:46 Despedida y cierre llavero inteligente compatible con Home Assistant
Introducción al llavero inteligente
A ver, la idea de este proyecto es hacer un dispositivo que nos permita tener un control de las llaves para que nada más entrar en casa, nos obligue a colgarlas de alguna manera. Luego veremos diferentes métodos.
Yo lo he llamado llavero inteligente aunque podía haberlo llamado dónde están las llaves o llavero tocapelotas. Esto puede ser muy útil para evitar los típicos casos de:
- Cari, ¿Dónde están las llaves del coche?
- Joer, ¿Dónde dejé las llaves de casa?
- O ¿Sabes si está en casa Mari Carmen?
Antes de ver cómo funciona este dispositivo vamos a ver el material que vamos a utilizar.
Llavero de pared tipo amplificador de guitarra Fender
Estos llaveros de pared son bastante curiosos porque simulan el típico amplificador de guitarra Fender aunque también lo puedes encontrar de otras marcas conocidas como Marshall.
Vienen con 4 llaveros que son conectores jack totalmente funcionales y donde vamos a poner las llaves para posteriormente colgarlas en el llavero introduciendo la clavija en el amplificador.
Puedes encontrar este tipo de llaveros de pared tanto en Amazon como en Aliexpress.
Como veremos más adelante la idea es modificar este llavero para detectar cuándo se introduce una llave y que nos sirva de llavero inteligente.
Placa de desarrollo ESP8266 y ESP32
Para poder detectar cuándo se ha introducido o sacado una llave del llavero inteligente vamos a necesitar un microcontrolador. Podemos utilizar tanto un ESP8266 como un ESP32 ya que ambos son compatibles con ESPHome y con Home Assistant.
En mi caso voy a utilizar una placa Wemos D1 Mini ESP8266 aunque también puedes utilizar una Wemos D1 Mini ESP32. Ambas son válidas.
El utilizar este tipo de de dispositivos es por una simple razón, ensamblar los diferentes componentes en estas placas es bastante sencillo si utilizas un Shield Protoboard compatible con las placas Wemos.
Lo que nos permite hacer un montaje bastante sencillo y rápido. Aparte vamos a necesitar cables para conectar todos los componentes, luego veremos cómo hacerlo.
A continuación lo que vamos a ver es un esquema general y cómo funciona el proyecto.
Esquema general llavero inteligente
La idea detrás de este proyecto es la de poder controlar que cuando llegas a casa, dejes las llaves en el llavero inteligente y que este, dependiendo de qué llaves sean, lance ciertas automatizaciones u otras.
Esto sería lo básico pero luego se puede extender todo lo que queramos ya que podemos añadir botones o lucecitas según nuestras necesidades.
Para conseguir esto vamos a necesitar abrir el llavero de pared y conectar, de alguna manera, los terminales de cada llavero a un microcontrolador para que cuando se introduzca un conector jack o se saque, quede registrado en Home Assistant.
Para ello es necesario entender cómo funciona un conector jack y también vamos a necesitar hacer modificaciones en los llaveros.
Cómo funciona un conector jack de audio
A ver, esto no pretende ser una masterclass de amplificadores de audio porque no tengo ni puta idea y porque ese no es el objetivo. Voy a centrarme en lo único que debes saber sobre esto.
Hay diferentes tipos de conectores jack que se utilizan para audio, el que viene con el llavero de pared que queremos convertir en un llavero inteligente es un conector del tipo mono lo que se traduce en dos conexiones: señal mono y masa.
Si abres uno de los conectores jack vas a poder ver las dos conexiones. La zona central del conector jack está conectada con la punta y la zona exterior con la del medio.
Eso sí, están totalmente aisladas, es decir, son circuitos independientes.
Si abrimos el llavero de pared, se abre por detrás, verás los 4 conectores para los cuatro llaveros del tipo jack.
Cada uno de ellos tiene a su vez tres conexiones. Cuando introduces el conector jack en su conexión dos de esas conexiones hacen contacto con la señal mono y otra con la masa.
De este modo cada conector jack tiene dos circuitos aislados, uno para la señal mono y otro para la masa. La idea es hacer que, cuando se introduzca un conector jack, el circuito se cierre y de esta forma podamos detectar que se ha introducido un conector jack en un agujero concreto.
Esto es tan sencillo como unir las dos conexiones dentro del conector jack.
Esto lo podemos hacer utilizando un soldador y poniendo un punto de soldadura que una eléctricamente estos dos circuitos.
De este modo, mientras que no insertemos el conector jack en la clavija habrá un circuito abierto pero cuando introduzcamos el conector jack, se cerrará y podremos detectar que se ha introducido el conector.
Así es como funcionan los pulsadores de Arduino por ejemplo, mientras que el pulsador no se pulse el circuito está abierto y por lo tanto, no permite circular la corriente.
Cuando se pulsa, se cierra el circuito permitiendo la circulación de la corriente y, por lo tanto, pudiendo ser detectado que se ha pulsado.
El principio de lo que queremos hacer con los conectores jack es el mismo pero, una vez se cierra el circuito, ¿Cómo lo detectamos? Aquí es donde entra en juego la placa de prototipado.
Esquema eléctrico llavero inteligente
Para poder detectar que se ha introducido un conector Jack en un agujero es necesario conectar cada agujero del cuelga llaves de pared a un pin del microcontrolador. Es como si fuera un pulsador. Para ello vamos a guiarnos por un esquema eléctrico muy simple.
El esquema es bastante simple ya que lo único que tenemos que hacer es conectar cada conexión del llavero inteligente a la placa de desarrollo ESP8266 o ESP32 como si fuera un pulsador.
Como hemos visto, cada conector tiene dos conexiones: señal mono y masa. Da lo mismo la que se utilice pero una de las conexiones tiene que ir conectada a un pin digital y la otra a GND. Esto por cada conector.
Para los pines digitales he decidido utilizar del D1 al D4 aunque tú puedes utilizar cualquier otro.
Lo puedes hacer soldando un cable a cada conexión que luego irá conectado a los pines de la placa de desarrollo.
Puedes utilizar el Shield Protoboard compatible con la placa Wemos para hacer un conexionado mucho más sencillo y rápido.
El último punto que queda por aclarar es cómo podemos alimentar este proyecto. Lo más fácil es utilizando un cargador de móvil, lo conectas a un enchufe y alimentas el proyecto a través del USB de la placa de prototipado.
Otra solución interesante es utilizar una fuente conmutada como la que utilicé en el proyecto de apertura de garaje con Home Assistant. Es la forma más fácil y menos invasiva de alimentar este tipo de proyectos y la que voy a utilizar yo.
Y con esto tendríamos montado el circuito del llavero inteligente listo para ser programado utilizando ESPHome.
Programación llavero inteligente con ESPHome
Si conectar los componentes para poder crear un llavero inteligente ha sido sencillo, la programación lo es todavía más gracias a que vamos a utilizar ESPHome.
El componente fundamental de este proyecto es el GPIO Binary Sensor. Este componente crea un sensor binario del tipo GPIO que nos permite detectar si un pin digital del microcontrolador está estado ON (HIGH) o en estado OFF (LOW).
Esto en combinación con el esquema de de un pin nos va a permitir configurar el código para que cuando se introduzca un conector jack en una de las clavijas, el sensor binario se active y que cuando salga, el sensor binario se desactive.
La configuración que vamos a utilizar es la siguiente.
1 2 3 4 5 6 7 8 9 10 |
binary_sensor: - platform: gpio name: "Llaves Luis" device_class: occupancy pin: number: D1 inverted: true mode: input: true pullup: true |
Aparte de la configuración específica para el sensor binario como la plataforma y el nombre, también he añadido el parámetro device_class con el que puedes configurar a que categoría pertenece este sensor binario. En este caso la clase de dispositivo es ocupación.
Por otro lado, hay que configurar el pin. Si miras de nuevo el esquema verás que cada conector del llavero inteligente está conectado al pin GND y un pin digital. Aquí es donde se configura a qué pin está conectado.
En este caso he configurado el D1 que corresponde con mis llaves (Llaves Luis) según el nombre que he puesto al sensor. También he configurado que esté invertido ya que el pin funciona como entrada (input es true) y además activo la resistencia pull-up interna para evitar indeterminaciones.
Esta configuración se tiene que hacer por cada pin quedando la configuración de los cuatro conectores del llavero inteligente de la siguiente manera.
Importante. Cambia el nombre de cada sensor según tus necesidades. En mi caso he utilizado dos llaveros para las llaves casa mías y de mi bellísima esposa y otros dos llaveros para las llaves de los dos coches.
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 |
binary_sensor: - platform: gpio name: "Llaves Luis" device_class: occupancy pin: number: D1 inverted: true mode: input: true pullup: true - platform: gpio name: "Llaves Irene" device_class: occupancy pin: number: D2 inverted: true mode: input: true pullup: true - platform: gpio name: "Llaves Peugeot" device_class: occupancy pin: number: D3 inverted: true mode: input: true pullup: true - platform: gpio name: "Llaves Furgonzila" device_class: occupancy pin: number: D4 inverted: true mode: input: true pullup: true |
Fíjate que cada sensor tiene configurado un pin digital diferente que van desde el D1 al D4. Luego tienes que relacionar estos pines con el conector físico.
Solo falta añadir el código típico para hacer funcionar el llavero inteligente con ESPHome quedando el código completo de la siguiente manera.
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 65 66 67 68 69 70 71 |
substitutions: device_name: controlpuerta friendly_name: Casa Control Puerta esphome: name: $device_name friendly_name: $friendly_name api: esp8266: board: d1_mini # Enable logging logger: # Set OTA password ota: password: "" platform: esphome # Setup WiFi credentials wifi: ssid: !secret wifi_ssid password: !secret wifi_password fast_connect: true # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: $device_name Fallback Hotspot password: "12345678" captive_portal: binary_sensor: - platform: gpio name: "Llaves Luis" device_class: occupancy pin: number: D1 inverted: true mode: input: true pullup: true - platform: gpio name: "Llaves Irene" device_class: occupancy pin: number: D2 inverted: true mode: input: true pullup: true - platform: gpio name: "Llaves Peugeot" device_class: occupancy pin: number: D3 inverted: true mode: input: true pullup: true - platform: gpio name: "Llaves Furgonzila" device_class: occupancy pin: number: D4 inverted: true mode: input: true pullup: true |
Una vez lo hayas configurado lo puedes cargar y ya estaría listo para poder integrarlo dentro de Home Assistant.
Integración llavero inteligente en Home Assistant
La integración en Home Assistant es inmediata y automática siempre y cuando conectes el ESP8266 o ESP32 del llavero inteligente a la misma red en la que está conectado Home Assistant.
Una vez configurada, cuando entras en el dispositivo ves todos los sensores configurados que corresponden a los conectores del llavero inteligente.
Si introduces uno los conectores jack en uno de los agujeros, verás que cambia el estado a Detectado.
Importante. Debes identificar los agujeros con las llaves que deben ir ahí colgadas.
Pero lo mejor viene ahora porque vas a poder lanzar automatizaciones cuando el estado del sensor cambie a Detectado para cada uno de los conectores.
Esto es muy interesante porque vas a poder crear muchos tipos de automatizaciones. Algunos ejemplos son:
- Que haga determinadas acciones dependiendo del miembro de la familia o las llaves que se han colgado. Si por ejemplo son mis llaves de casa, que suene el himno del atleti y si son las de mi bellísima esposa que suene Norah Jones.
- Crear automatizaciones cuando todas las llaves de todos los miembros estén en su sitio como cerrar las puertas con las cerraduras inteligentes.
- Que cuando no haya ninguna llave en el llavero active la alarma porque estamos todos fuera.
- Que cuando coja la llave del coche a una determinada hora por la mañana me envíe al móvil la mejor ruta para llevar a los niños al cole o que mi bellísima esposa llegue al trabajo.
- Que si detecta que estoy en casa porque me he conectado a la WiFi pero no he dejado las llaves en su sitio me taladre con mensajes al móvil para que las cuelgue en el llavero inteligente.
Todo estos son ideas que puedes hacer con este dispositivo. Pero es que puedes tener más funcionalidades al llavero inteligente si incorporas ciertas mejoras.
Mejoras llavero inteligente
Digamos que este es el proyecto base del llavero inteligente y a partir de aquí puedes evolucionar este dispositivo para añadir más funcionalidades. Esto se consigue de una forma muy simple añadiendo nuevos componentes al proyecto.
A continuación voy a dar algunas ideas.
- Pulsador para abrir la puerta: si has instalado algún sistema de apertura de puerta en el telefonillo puedes añadir un pulsador al llavero inteligente para que al pulsarlo abras la puerta.
- LEDs: como dice mi amigo Óscar, donde hay LEDs hay alegría y añadir a este proyecto LEDs indicadores puede ser un puntazo.
- Nombres en los conectores: quizás esto no sea tanto una mejora y sí una necesidad ya que es fundamental saber dónde tienes que introducir cada llavero.
- Música: otro puntazo sería poder añadir algún tipo de altavoz inteligente o buzzer para poder reproducir algún tipo de sonido al introducir o sacar el llavero.
Y seguro que hay un montón de funcionalidades que puedes añadir a tu llavero inteligente. Si se te ocurre alguna que no esté en el listado y quieres compartirla con todos nosotros, puedes dejarla en los comentarios de aquí abajo.
Y poco más, que me despido como siempre digo, intenta hoy ser un 1% mejor persona.
Gracias a Depositphotos por ceder los derechos de algunas de las imágenes de este artículo.