Volvemos con nuestro lado más «friki», esta vez con la misión de integrar a Iron Man en Home Assistant y convertirlo en tu asistente.
Índice
¿Quién es Iron Man?
¿No lo sabes?¿estás de broma? Iron Man es el «alter ego» de Tony Stark, uno de los superhéroes más famosos de Marvel, miembro de Los Vengadores. Lo que le hace diferente, además de su característico sarcasmo y humor ácido, es que su único poder (además de su poder adquisitivo) es su capacidad para usar la tecnología para conseguir grandes habilidades.

Nuestro Iron Man
Como dice el refrán, más vale un ejemplo práctico que mil guías explicativas. Es por eso que hemos elegido integrar a Iron Man en Home Assistant para crear nuestro primer asistente por satélites. Por tanto el objetivo es crear un completo asistente local, totalmente personalizado hasta el más mínimo detalle e integrable en Home Assistant.
Ten en cuenta que puedes seguir la guía al detalle, o hacer todas las variaciones que quieras. E incluso puedes seguir la guía para crear tu asistente local con otro personaje. Lo importante es que veas de forma práctica cómo aplicar todo lo que hemos aprendido hasta ahora.
Requisitos previos
Antes de integrar a Iron Man en Home Assistant, repasemos los componentes necesarios:
- Necesitas haber instalado ESPHome en Home Assistant.
- Un «núcleo», o componente capaz de activarse cuando lo llamemos y de captar nuestros comandos. En mi caso voy a utilizar el ReSpeaker Lite, ya que sigue siendo uno de los mejores componentes que he usado hasta ahora.
- Unos altavoces. En mi caso voy a utilizar unos Creative Pebble V3 que tengo por casa, ya que lo único que necesito es un cable Jack para que reproduzcan las respuestas del asistente. Del mismo modo, tú puedes utilizar cualquiera que tenga una entrada de audio Jack 3.5 mm.
- Un casco de Iron Man. Si estás en nuestra comunidad de Telegram, ya te avisé de que podías conseguir este casco de Iron Man de Planeta DeAgostini (de muy buena calidad) por sólo 1€, ya que era el primer entregable de la colección. Por si no leíste el mensaje, compramos alguno de sobra para vosotros (pregunta en la comunidad). Y si ya se nos han agotado, siempre puedes comprar alguno similar por internet y adaptarlo al proyecto.
- Un anillo de 8 LEDs WS2812B. Este es el modelo que yo he utilizado y he configurado en el código que encontrarás a continuación, pero podrías utilizar otros led direccionable que se ajusten al diseño.
- Una placa ESP8266, que por su pequeño tamaño va a ser perfecto para alojarla en el interior del soporte que he diseñado.
- Un cable USB-C para alimentar la placa de DATOS (con un cable de carga no vas a poder instalar el software). Si no tienes uno o no estás seguro puedes conseguirlo muy barato en AliExpress.
- Si estás utilizando el mismo casco que nosotros, puedes descargar este soporte que he diseñado para la ocasión desde nuestro perfil de Patreon. Además de servir de apoyo y tener un hueco para alojar la placa ESP8266, le da un toque de diseño.




Montaje e instalación
Configuración del núcleo y conexión de los altavoces
No me voy a entretener en este punto, ya que previamente hemos explicado de forma sobrada cómo se configura el ReSpeaker Lite y cómo se realiza la configuración básica de Assist. La cuestión es que, al finalizar este proceso, ya tendré mi placa lista para escucharme y responderme por los altavoces.

🥑 Si estás configurando Assist, te recomiendo que veas el taller de la academia para sacarle el máximo partido!
Montaje del casco
Tanto si estás utilizando nuestro mismo casco como cualquier otro, lo primero que vamos a hacer es acceder a su interior para colocar nuestro anillo LED en la parte de los ojos. En nuestro caso hemos tenido que retirar los pequeños LED que venían por defecto. Podríamos haberlos usado, pero el anillo LED nos va a permitir crear distintos colores y efectos.
Para fijar el anillo al casco puedes utilizar una pistola de silicona de las que encontraría en cualquier bazar o tienda de bricolaje. Luego saca el cable por el orificio correspondiente y atornilla la tapa.


💡 Si te estás preguntando por qué no hemos aprovechado para meter la placa ESP8266 dentro, tengo mis motivos. En primer lugar, de esta forma podrás acceder a ella sin necesidad de desmontar el casco. Además así la antena WiFi de la placa tendrá mejor cobertura y responderá más rápido en la coordinación con el núcleo.
El siguiente paso es soldar los cables del anillo LED a la placa ESP8266 siguiendo este esquema de conexión:
- El cable rojo proporciona la alimentación a 5 voltios, por lo que irá al pin correspondiente (5V).
- El cable blanco es el de la conexión de tierra o ‘ground’, e irá conectado a uno de los respectivos pines (GND).
- El cable verde proporciona los datos e irá conectado al al D4/GPIO2.

Ya sólo te queda pasar la placa por el soporte que he diseñado especialmente para nuestro casco y conectarla al cable USB. Recuerda que puedes descargarlo desde nuestro perfil de Patreon.

Configuración de ESPHome
Ahora que ya tenemos el casco preparado, vamos a integrar a Iron Man en Home Assistant utilizando ESPHome. Para ello sólo tienes que seguir estos pasos:
- Conecta la placa a tu ordenador a través del puerto USB-C.
- En Home Assistant, accede al complemento de ESPHome desde el menú lateral y pulsa en “New device”. Pulsa en “Continue” y dale un nombre (por ejemplo, “Iron Man”).
- Pulsa en “Next” y a continuación selecciona la opción “ESP8266” como tipo de dispositivo. Verás que en el fondo se ha creado un nuevo dispositivo.
- Pulsa en “Skip” y haz clic en el enlace “Edit” del bloque correspondiente al dispositivo que acabas de crear.
- Añade las siguientes líneas al final del código.
captive_portal: light: - platform: neopixelbus type: GRB variant: ws2812x pin: GPIO2 num_leds: 8 name: "LED Eyes" id: led_eyes effects: - pulse: name: "Fast Pulse" transition_length: 500ms update_interval: 500ms min_brightness: 50% max_brightness: 100% - flicker: name: "Flicker" alpha: 95% intensity: 5%
- Cuando hayas terminado de editar el código pulsa en “Save” e “Install”. Selecciona la opción “Manual download” y espera a que el código se compile.
- Cuando termine, selecciona la opción “Modern format” para descargar el fichero ‘.bin’ correspondiente.
- Ahora ve a la página de ESPHome y pulsa en “Connect”. En la ventana emergente selecciona tu placa y pulsa en “Conectar”.
- Ahora pulsa en “Install” y selecciona el fichero ‘.bin’ obtenido en el paso 7. De nuevo, pulsa en “Install”.
- Vuelve a Home Assistant y ve a Ajustes > Dispositivos y servicios. Lo normal es que tu dispositivo haya sido descubierto y aparezca en la parte superior, esperando únicamente a que pulses el botón de “Configurar”. De lo contrario pulsa en el botón de “Añadir integración”, busca “ESPHome” e introduce la IP de tu placa en el campo ‘Host’.
- Como siempre, te recomiendo que asignes una IP fija en tu router para evitar fallos en el futuro si esta cambia.
Personalización del asistente
Vale, ya tenemos funcionando los dispositivos necesarios para integrar a Iron Man en Home Assistant. Ahora llega la parte divertida, la personalización de nuestro asistente para que se convierta en Tony Stark.
Un toque de personalidad
Por supuesto, para integrar a Iron Man en Home Assistant necesitamos dotarle de su característica personalidad. En esta entrada te explico en detalle cómo moldear la personalidad de tu asistente local. En este caso concreto, este es el ‘prompt’ que he diseñado para Tony Stark.
You are Tony Stark, also known as Iron Man. You are a genius, billionaire, philanthropist, and a bit arrogant, but always charismatic and charming. Your communication style should reflect your sharp intellect, witty sarcasm, and unwavering confidence. Speak to me in Spanish.
Answer in plain text. Keep it simple and to the point.

Elegir una buena voz
Lo siguiente que vamos a hacer es asignar a nuestro asistente una voz que encaje bien con Iron Man, y qué mejor que usar la voz de su asistente «Jarvis». Bueno, al menos es la voz más parecida que he encontrado! Para añadir esta voz necesitas la integración de Elevenlabs y seguir las instrucciones de esta otra entrada sobre cómo añadir voces.
En concreto te recomiendo que añadas esta voz a tu biblioteca personal (es la que puedes escuchar en el video de demostracion). También puedes encontrarla buscando «Martin Osborne 6» en la librería de voces.

Audios personalizados
¿Y sabes cuál es la voz que más se parece a la de Tony Stark? La de Tony Stark!! 😅Bromas a parte, vamos a utilizar la técnica que te enseñé en esta entrada para extraer audios de las películas. De esta forma no sólo conseguimos reproducir frases míticas con la voz original, también reducimos la dependencia (y el consumo de créditos) en los componentes externos que utilicemos (principalmente, IA y TTS). Además, como te eneseñé en esta publicación, también puedes generar tus audios personalizados con la voz de Iron Man (o el personaje que quieras).
Recuerda que tienes que descargar los audios y cargarlos en tu instancia de Home Assistant. Para facilitarte la vida, he hecho una pequeña selección de audios que puedes descargar también desde el perfil de Patreon.
Coordinación de los satélites
Por último vamos a coordinar los distintos dispositivos que hemos configurado, para que respondan de forma simultánea. Es decir, en nuestro caso, que los LED del caso de Iron Man se enciendan y apaguen en función del estado del asistente. Para ello sigue estos pasos:
- En Home Assistant, ve a Configuración > Automatizaciones y escenas > Crear automatización.
- Vamos a crear una automatización con distintos ‘trigger’ que, de forma resumida, hará lo siguiente:
- Cuando el asistente empiece a escuchar (estado ‘listening’) encienda el LED del casco con efecto «pulse» y color blanco.
- Cuando el asistente responda (estado ‘responding’) encienda el LED del casco con efecto «flicker» y color verde.
- Cuando el asistente pase a estado inactivo (‘idle’) apague el LED del casco.
- Si quieres puedes copiar el código de la automatización, pero no olvides adaptarlo a tus entidades!
alias: 🔴 Iron Man Assistant description: "" triggers: - trigger: state entity_id: - assist_satellite.respeaker_assistant_satelite_assist to: listening alias: Escuchando id: Escuchando - trigger: state entity_id: - assist_satellite.respeaker_assistant_satelite_assist to: responding alias: Respondiendo id: Respondiendo - trigger: state entity_id: - assist_satellite.respeaker_assistant_satelite_assist to: idle alias: Inactivo id: Inactivo conditions: [] actions: - choose: - conditions: - condition: trigger id: - Escuchando sequence: - action: light.turn_on metadata: {} data: effect: fast pulse rgb_color: - 255 - 255 - 255 target: entity_id: light.iron_man_led_eyes - conditions: - condition: trigger id: - Respondiendo sequence: - action: light.turn_on metadata: {} data: rgb_color: - 144 - 208 - 27 effect: flicker target: entity_id: light.iron_man_led_eyes - conditions: - condition: trigger id: - Inactivo sequence: - action: light.turn_off metadata: {} data: {} target: entity_id: light.iron_man_led_eyes mode: single