Menú
Sobre mí Servicios Trayectoria Trabaja conmigo
Raspberry Pi and smart home components
Hogar Inteligente 1 Mar, 2026 • 20 min de lectura

Operación Casa Inteligente: Resumen de Misión Padre-Hijo

Today my son and I execute our smart home plan. Raspberry Pi 5, follow-me lighting, WiFi sensing. The hardware's ready, the code's tested. Time to build.

Compartir:
Lee Foropoulos

Lee Foropoulos

20 min de lectura

¿Sabes de qué tiene suficiente el mundo? De gente que habla sobre lo que va a hacer "algún día". Soñadores sentados sin hacer nada, esperando el momento perfecto, la configuración perfecta, el lo-que-sea perfecto. Mientras tanto, la vida sigue avanzando.

"Sentí una vez más lo simple y frugal que es la felicidad: un vaso de vino, una castaña asada, un miserable brasero, el sonido del mar. Nada más." — Nikos Kazantzakis, Zorba el Griego

Zorba no esperó. Zorba bailó. Zorba fracasó espectacularmente y se rio de ello. Cuando su gran operación minera se derrumbó (literalmente se derrumbó), agarró una botella de vino y empezó a bailar en la playa. Es mejor fracasar como Zorba que quedarse sentado sin hacer nada.

Así que hoy, mi hijo y yo ejecutamos. El plan está trazado. El hardware está preparado. La mayor parte se ha probado individualmente: las automatizaciones funcionan, los sensores detectan, el código compila. Ahora vemos si todo funciona junto. ¿Algo saldrá mal? Probablemente. ¿Estamos listos para los desafíos? Absolutamente. Esa es la parte divertida.

Es mejor fracasar como Zorba que quedarse sentado sin hacer nada.

Sin un plan, no hay camino hacia adelante. Solo gente hablando por hablar. Solo sueños. Esto no es un sueño, esto es un informe de ejecución.

La Misión

Para cuando estemos asando la cena esta noche, esta casa podrá:

  • Encender las luces en la habitación donde entras, y atenuarlas detrás de ti cuando sales
  • Cerrar todas las puertas cuando la cama detecte que nos hemos dormido
  • Cerrar el garaje automáticamente cuando se nos olvide (otra vez)
  • Ajustar la climatización según qué habitaciones están realmente ocupadas
  • Generar ruido WiFi para que nadie de afuera pueda usar la misma tecnología de detección contra nosotros

Y Amazon no sabrá absolutamente nada. Todo funciona localmente. Sin nube. Sin suscripciones. Sin recolección de datos.

El Arsenal (Ya Preparado)

El Cerebro: Raspberry Pi 5 - LISTO

Este aparato ha estado en mi escritorio durante dos semanas, completamente configurado, esperando el día de hoy. El Pi 5 es excesivo para automatización básica del hogar. Me gusta lo excesivo. Corre Raspberry Pi OS Lite, Docker está instalado, Portainer está funcionando. Solo tengo que enchufarlo donde va a vivir.

Elegí el bundle del Argon ONE V3 M.2 NVME PCIE Case. Ya ensamblado:

  • SSD M.2 con el SO flasheado (nada de fallos de tarjetas SD para nosotros)
  • Docker + Portainer instalados y probados
  • Contenedor de Home Assistant listo para desplegar
  • IP estática asignada en la red

Lista de Verificación Pre-Vuelo - COMPLETADA

  • ☑ Raspberry Pi OS Lite flasheado en SSD
  • ☑ SSH habilitado, credenciales configuradas
  • ☑ Red configurada con IP estática
  • ☑ Docker + Portainer funcionando
  • ☑ Archivos de configuración de Home Assistant preparados

Los Sensores: Placas ESP32 - FLASHEADAS Y PROBADAS

Estas pequeñas placas ESP32 han sido la parte divertida. Mi hijo y yo pasamos el fin de semana pasado flasheándolas y viendo los datos de señal WiFi llegar. Funcionan. Confirmado.

  1. Unidad de Detección WiFi - Detecta movimiento midiendo la disrupción de señal WiFi. La probamos caminando por la sala: detecta movimiento a través de paredes, con un alcance de unos 4 a 6 metros.
  2. Unidad de Niebla WiFi - Genera ruido para cegar cualquier detección WiFi externa. Funcionando en aislamiento, creando un hermoso caos en el espacio de señal.

Hoy las integramos en Home Assistant y vemos si las automatizaciones se disparan correctamente. El código funciona en las pruebas. La pregunta es: ¿funciona cuando todo está conectado?

(Si quieres saber por qué esto importa, lee mis artículos sobre detección WiFi y contramedidas WiFi.)

La Infraestructura Existente - YA INSTALADA

No empezamos de cero. La casa ya tiene cosas inteligentes; solo han estado funcionando en aplicaciones separadas como un montón de islas desconectadas. Hoy unificamos el reino:

  • Bombillas Philips Hue - Ya instaladas en toda la casa. Actualmente controladas por la app Hue. Hoy: Home Assistant toma el control.
  • Termostato Ecobee - Ya sabe qué habitaciones están ocupadas a través de sus sensores. Hoy: integramos esos datos.
  • Cama Eight Sleep - Ya rastrea cuándo estoy dormido. Hoy: activa la automatización de bloqueo nocturno.
  • Cerraduras Kwikset (Z-Wave) - Ya están en las puertas. Hoy: aprenden a cerrarse solas.
  • Garaje MyQ - Ya instalado. Hoy: no más volver a casa porque se me olvidó cerrarlo.

El punto: Puede que ya tengas más dispositivos inteligentes de los que crees. Solo que no se comunican entre sí todavía.

Home automation dashboard
Para esta noche: todo unificado bajo un solo panel de control

Fase 1: Infraestructura (HECHO)

Este es el trabajo del fin de semana pasado. Si lo sigues más tarde, esto es lo que hicimos. Si leíste mi artículo sobre Docker, sabes por qué lo contenedorizamos todo.

bash# Docker + Portainer - Already running
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce

Portainer está activo en http://raspberrypi.local:9000. Hermosa interfaz gráfica para gestión de contenedores. Listo.

Fase 2: Home Assistant (LA PRIMERA TAREA DE HOY)

El archivo docker-compose está escrito. El directorio de configuración está preparado. Hoy lo arrancamos de verdad y empezamos a conectar dispositivos.

yaml# docker-compose.yml - ready to deploy
version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - /home/pi/homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

El plan: Ejecutar docker-compose up -d, entrar al asistente de configuración, y conectar estas integraciones una por una:

  • Philips Hue - Debería auto-descubrirse en la red
  • Ecobee - Flujo OAuth, necesito tener la app a mano
  • Eight Sleep - Integración API, credenciales listas
  • Z-Wave - Esta podría ponerse complicada, las cerraduras pueden ser caprichosas
  • MyQ - Sencillo, ya lo he hecho antes
  • ESPHome - Para los dispositivos ESP32 que flasheamos el fin de semana pasado

Desafío esperado: Z-Wave. Las cerraduras siempre tienen actitud. Ya veremos.

Close-up of a circuit board with electronic components
Las placas ESP32 están flasheadas, probadas y listas para integrar

Fase 3: Integración de Detección WiFi (LA PARTE DIVERTIDA DE HOY)

La Unidad de Detección - LISTA PARA CONECTAR

El fin de semana pasado mi hijo observó el monitor serial mientras este aparato me detectaba caminando por la sala. Sus palabras exactas: "Papá, esto es espeluznante y genial."

El ESP32 ya está flasheado con ESPHome. Ya está detectando movimiento via WiFi CSI (Channel State Information). Hoy lo conectamos a Home Assistant y le damos un nombre: binary_sensor.living_room_occupied

La prueba: Entrar a la sala. ¿Lo ve Home Assistant? Si sí, estamos en el negocio.

La Unidad de Niebla - CAPA DE PRIVACIDAD LISTA

El segundo ESP32 ejecuta el generador de ruido de mi artículo de contramedidas. Ha estado funcionando en mi banco de trabajo durante una semana, generando hermoso caos en el espectro WiFi.

Sí, estamos usando detección WiFi para nuestra propia automatización mientras simultáneamente nos protegemos de que otros hagan lo mismo contra nosotros. No es hipocresía. Es seguridad operacional. Y mi hijo piensa que es lo más genial del mundo.

Expansión Futura: 3+3

El objetivo de hoy es probar el concepto con un sensor y un dispositivo de niebla. Una vez que estemos seguros:

  • 3 Dispositivos de detección: Sala, cocina, dormitorio
  • 3 Dispositivos de niebla: Distribuidos por toda la casa para cobertura completa

Eso son unos $50 en placas ESP32 para una actualización de toda la casa. Pero primero, asegurémonos de que lo de hoy funcione.

$50
Costo total de placas ESP32 para cobertura de detección WiFi en toda la casa con 3 sensores y 3 dispositivos de niebla.

Fase 4: Las Automatizaciones (EL OBJETIVO PRINCIPAL)

Para esto hemos estado construyendo todo. Estos archivos YAML están escritos, probados en mi cabeza cien veces, y listos para pegar. ¿Funcionarán al primer intento? Vamos a averiguarlo.

Automatización 1: Iluminación Sígueme (EL ESPECTÁCULO)

La visión: Entras a una habitación, las luces se encienden para recibirte. Sales, y se atenúan detrás de ti como un mayordomo respetuoso. La casa de Tony Stark. Ese es el objetivo.

El matiz: Si encendiste una luz manualmente, el sistema la deja en paz. Tu elección se respeta. Rastreamos esto con helpers input_boolean. Porque no hay nada peor que una automatización que pelea contigo.

yaml# configuration.yaml additions
input_text:
  last_occupied_room:
    name: "Last Occupied Room"
    initial: "none"

input_boolean:
  living_room_auto_triggered:
    name: "Living Room Auto Triggered"
  kitchen_auto_triggered:
    name: "Kitchen Auto Triggered"
  bedroom_auto_triggered:
    name: "Bedroom Auto Triggered"

Ahora la automatización:

yaml# automations.yaml
- alias: "Follow Me - Living Room Entry"
  trigger:
    - platform: state
      entity_id: binary_sensor.living_room_occupied
      to: "on"
  condition:
    - condition: state
      entity_id: light.living_room
      state: "off"
  action:
    # Dim the previous room if it was auto-triggered
    - choose:
        - conditions:
            - condition: template
              value_template: "{{ states('input_text.last_occupied_room') == 'kitchen' }}"
            - condition: state
              entity_id: input_boolean.kitchen_auto_triggered
              state: "on"
          sequence:
            - service: light.turn_on
              target:
                entity_id: light.kitchen
              data:
                brightness_pct: 20
                transition: 3
    # Turn on current room
    - service: light.turn_on
      target:
        entity_id: light.living_room
      data:
        brightness_pct: 100
    - service: input_boolean.turn_on
      target:
        entity_id: input_boolean.living_room_auto_triggered
    - service: input_text.set_value
      target:
        entity_id: input_text.last_occupied_room
      data:
        value: "living_room"

- alias: "Follow Me - Living Room Vacancy"
  trigger:
    - platform: state
      entity_id: binary_sensor.living_room_occupied
      to: "off"
      for:
        minutes: 2
  condition:
    - condition: state
      entity_id: input_boolean.living_room_auto_triggered
      state: "on"
  action:
    - service: light.turn_off
      target:
        entity_id: light.living_room
      data:
        transition: 5
    - service: input_boolean.turn_off
      target:
        entity_id: input_boolean.living_room_auto_triggered

La prueba: Una vez que esto esté desplegado, mi hijo y yo vamos a caminar por la casa y ver si nos sigue. Si funciona, nos sentiremos como en una película. Si no, lo depuraremos mientras comemos pizza.

Automatización 2: Bloqueo Nocturno (LA TRANQUILIDAD)

El escenario: Son las 10 PM. Me meto en la cama. Cinco minutos después, mi Eight Sleep confirma que realmente estoy dormido (no solo tirado con el teléfono). La casa responde: todas las puertas se cierran, el garaje se cierra si se me olvidó (otra vez), el termostato pasa a modo sueño, y las luces que se activaron automáticamente se apagan.

yaml- alias: "Bedtime - Eight Sleep Triggered Lockdown"
  trigger:
    - platform: state
      entity_id: binary_sensor.eight_sleep_bed_presence
      to: "on"
      for:
        minutes: 5
  condition:
    - condition: time
      after: "21:00:00"
      before: "06:00:00"
  action:
    # Lock all doors
    - service: lock.lock
      target:
        entity_id:
          - lock.front_door
          - lock.back_door
    # Close garage if open
    - service: cover.close_cover
      target:
        entity_id: cover.garage_door
    # Set Ecobee to sleep mode
    - service: climate.set_preset_mode
      target:
        entity_id: climate.ecobee
      data:
        preset_mode: "Sleep"
    # Turn off auto-triggered lights
    - service: light.turn_off
      target:
        entity_id:
          - light.living_room
          - light.kitchen
      data:
        transition: 5

¿No tienes Eight Sleep? Sustituye por un disparador basado en tiempo (10:30 PM) o detección de carga del teléfono. La lógica es la misma.

Automatización 3: Cierre Automático del Garaje (EL SALVA-MATRIMONIOS)

El problema: "¿Cerraste el garaje?" - una pregunta que se hace 3 veces por semana en esta casa. Ya no más. Después de 10 minutos abierto, se cierra solo y me envía un mensaje.

yaml- alias: "Garage - Auto Close After 10 Minutes"
  trigger:
    - platform: state
      entity_id: cover.garage_door
      to: "open"
      for:
        minutes: 10
  action:
    - service: cover.close_cover
      target:
        entity_id: cover.garage_door
    - service: notify.mobile_app_your_phone
      data:
        title: "Garage Secured"
        message: "Garage was open for 10 minutes. Auto-closed."
        data:
          tag: "garage-closed"

Automatización 4: Climatización Inteligente (EL AHORRA-ENERGÍA)

La lógica: ¿Por qué calentar una casa vacía? Cuando nuestros sensores WiFi dicen que nadie ha estado en casa durante 30 minutos, Ecobee pasa a modo Ausente. Cuando alguien entra, se despierta de nuevo.

yaml- alias: "Ecobee - Away When House Empty"
  trigger:
    - platform: state
      entity_id: binary_sensor.home_occupied
      to: "off"
      for:
        minutes: 30
  action:
    - service: climate.set_preset_mode
      target:
        entity_id: climate.ecobee
      data:
        preset_mode: "Away"

- alias: "Ecobee - Home When Occupied"
  trigger:
    - platform: state
      entity_id: binary_sensor.home_occupied
      to: "on"
  condition:
    - condition: state
      entity_id: climate.ecobee
      attribute: preset_mode
      state: "Away"
  action:
    - service: climate.set_preset_mode
      target:
        entity_id: climate.ecobee
      data:
        preset_mode: "Home"

Creando el Sensor Agregado

El binary_sensor.home_occupied es un sensor de plantilla que combina todos los sensores de habitación:

yamltemplate:
  - binary_sensor:
      - name: "Home Occupied"
        state: >
          {{ is_state('binary_sensor.living_room_occupied', 'on')
             or is_state('binary_sensor.kitchen_occupied', 'on')
             or is_state('binary_sensor.bedroom_occupied', 'on') }}

¿Qué Podría Salir Mal? (La Parte Divertida)

La cosa es esta: algo VA a salir mal hoy. Eso no es pesimismo, es realidad. Y está bien. Ese es todo el punto.

Candidatos probables para la aventura de hoy:

  • Cerraduras Z-Wave - Estos aparatos tienen actitud. El emparejamiento podría requerir múltiples intentos.
  • Calibración del sensor WiFi - Funciona en el banco de trabajo, ¿pero qué pasa cuando está en posición?
  • Casos extremos de automatización - ¿Qué pasa si alguien cruza una habitación en 2 segundos?
  • El problema de "ayer funcionaba" - La broma favorita de la tecnología.

Pero por eso lo hacemos juntos. Padre e hijo, resolviendo problemas, aprendiendo, probablemente discutiendo sobre por qué el YAML no parsea. Así es como realmente se aprende: construyendo algo real, viéndolo romperse y arreglándolo.

La mina de Zorba se derrumbó. ¿Su respuesta? Bailar en la playa. Lo que sea que se rompa hoy, lo resolveremos. Y si no podemos, tendremos una gran historia para la cena.

La Filosofía

Esto es lo que separa a los que hacen de los que sueñan:

Los soñadores investigan durante meses. Leen todos los artículos. Esperan el hardware "correcto". Optimizan su plan hasta que es perfecto. Nunca empiezan.

Los que hacen escriben un plan, reúnen lo que necesitan y ejecutan. Esperan desafíos. Se ajustan sobre la marcha. Fracasan hacia adelante.

Sin un plan, no hay camino hacia adelante; solo gente hablando por hablar. Pero un plan sin ejecución es solo un sueño con pasos adicionales.

Criterios de Éxito de Hoy

  • ☐ Home Assistant funcionando con todos los dispositivos conectados
  • ☐ Sensor WiFi detectando movimiento en la sala
  • ☐ Iluminación sígueme funcionando en al menos una habitación
  • ☐ Automatización de bloqueo nocturno habilitada
  • ☐ Mi hijo diciendo "esto es como la casa de Tony Stark"

Lo que Sigue (Después de que Funcione Hoy)

Asumiendo que lo logramos (y lo haremos, eventualmente, aunque tome más de lo esperado):

  • Despliegue completo 3+3 de ESP32 - Detección en cada habitación principal, cobertura de niebla completa
  • Tablet de pared con dashboard - Panel de control siempre encendido en el pasillo
  • Control por voz local - Wyoming/Piper para comandos de voz que no salen de tu casa
  • Sensores de fuga de agua - Debajo de cada lavabo y junto al calentador de agua

Pero primero: hoy. Primero: ejecución. Primero: probar que toda esta planificación realmente funciona.

Lista de Verificación de Construcción del Hogar Inteligente 0/6

"La vida es lo que te pasa mientras estás ocupado haciendo otros planes." - John Lennon

Incorrecto. La vida es lo que pasa cuando dejas de planificar y empiezas a hacer. Nos vemos del otro lado. Es hora de construir algo.

How was this article?

Compartir

Link copied to clipboard!

You Might Also Like

Lee Foropoulos

Lee Foropoulos

Business Development Lead at Lookatmedia, fractional executive, and founder of gotHABITS.

🔔

No te pierdas ninguna publicacion

Recibe notificaciones cuando se publiquen nuevos articulos. No se requiere correo electronico.

Veras un aviso en el sitio cuando haya una nueva publicacion, ademas de una notificacion del navegador si lo permites.

Solo notificaciones del navegador. Sin spam, sin correo.