La regla que a todo el mundo se le ocurre primero es "avísame cuando el consumo baje de 10 watts". Y es exactamente la regla que no funciona.

El lavavajillas pita una vez cuando termina, en la cocina, mientras tú estás en otra pieza, en el patio o durmiendo. A la mañana siguiente la loza sigue húmeda y la máquina lleva horas apagada. Con la lavadora es peor: la ropa mojada se queda dentro del tambor y al mediodía ya huele.

La solución cuesta poco y no toca la máquina: un enchufe inteligente con medición de consumo entre el toma y el electrodoméstico, Home Assistant leyendo esa potencia, y una notificación al celular cuando el programa realmente terminó. con el consumo en kWh de ese ciclo incluido.

Lo interesante de este proyecto no es la automatización en sí, que son veinte líneas de YAML. Es entender por qué la versión obvia falla y qué hay que medir para que no falle. Al final de este tutorial vas a tener la notificación funcionando, vas a saber leer la curva de consumo de tu propia máquina para sacar tus propios números, y vas a tener una tarjeta en el dashboard que muestra el estado de un vistazo.

Enchufe inteligente instalado en el tomacorriente detrás del mueble de cocina, con el enchufe acodado del lavavajillas al frente y la manguera de desagüe al lado

La curva de consumo: por qué un umbral solo no alcanza

Antes de escribir una sola línea de automatización hay que dejar correr la máquina un ciclo completo con el enchufe medidor puesto, y después mirar el historial del sensor de potencia. En Home Assistant se hace haciendo clic en la entidad y entrando a Historial.

Un ciclo automático de lavavajillas medido dura poco más de dos horas y se ve así:

Curva de consumo de un lavavajillas en programa automático dentro de Home Assistant: cinco fases de calentamiento cerca de 2.000 watts, entre ellas valores de 30 a 100 watts, y al final 25 minutos de unos pocos watts antes de llegar a 0

Fase Duración Potencia
Puerta abierta, panel encendido (cargando) . 1 a 6 W
Prelavado, bomba de recirculación ~3 min 15 a 80 W
Fases de calentamiento (cuatro) 2 a 5 min c/u 1.900 a 2.000 W
Lavado entre calentamientos 10 a 20 min 30 a 100 W, con picos cortos de 300 W al bombear
Pausas de bomba antes del enjuague varias de 40 s 3 a 8 W
Enjuague con calentamiento 14 min 1.100 a 2.050 W
Secado 25 min 2 a 6 W, con un peak corto de 20 W
Fin de programa . 0 W, la máquina se apaga sola

Ciclo completo: 2 h 11 min, consumo 1,0 kWh.

Dentro de esa curva hay dos trampas que hacen fracasar cualquier regla de umbral simple:

Las pausas de bomba. Aproximadamente una hora después de partir, la máquina se detiene varias veces por 40 segundos y cae a 3 a 8 W. Una automatización sin duración mínima manda el aviso justo ahí: una hora antes de tiempo, con la loza todavía sucia.

El secado. Después del enjuague, la máquina pasa 25 minutos consumiendo 2 a 6 W. Eléctricamente eso es idéntico a estar cargando la máquina con la puerta abierta. Ningún umbral de potencia puede distinguir "secando" de "en reposo". Solo la duración puede.

Y hay una tercera razón por la que tampoco sirve un temporizador: el programa automático se adapta a la carga. En las mediciones el mismo ciclo duró entre dos y tres horas según cuánta loza tuviera adentro.

En lavadoras y secadoras la curva se ve distinta, pero las dos trampas son las mismas. La lavadora tiene fases largas entre el lavado y el centrifugado donde solo corre la electrónica, y muchas secadoras interrumpen el antiarrugas cada pocos minutos después de terminar para girar el tambor un rato. Esas pausas son justo lo que tienes que encontrar en tu curva: la más larga de todas define cuánto tiene que esperar la automatización.

La lógica que sí funciona: dos detecciones y un ayudante

La solución combina dos condiciones que un helper enlaza entre sí:

  • "Está funcionando" se detecta por la fase de calentamiento: si la potencia sube por sobre 1.000 W, hay un programa corriendo. Ninguna máquina llega a ese valor cargándola, abriendo la puerta o en reposo. Calentar solo pasa dentro de un programa.
  • "Terminó" significa: la potencia estuvo 30 minutos seguidos bajo 25 W y antes se había detectado un programa en marcha. Los 25 W quedan por encima de todas las pausas y del peak de 20 W del secado; los 30 minutos cubren el secado completo.

El helper es el que garantiza exactamente un aviso por ciclo, y el que evita que abrir la puerta sin haber lavado dispare una notificación.

En la medición de referencia, esta lógica habría disparado el aviso a las 12:59, el mismo minuto en que la máquina se apagó. En el ciclo siguiente, ya con la automatización activa, el push llegó a las 13:10:59, 42 segundos antes de que el consumo llegara a 0 W, reportando 0,96 kWh.

Antes de comprar: ¿aguanta el enchufe la resistencia de calentamiento?

Este es el punto de seguridad del proyecto y no se puede saltar. Lavavajillas, lavadoras y secadoras calientan el agua o el aire con una resistencia eléctrica, y esa resistencia es la razón por la que no sirve cualquier enchufe inteligente.

La máquina medida llegó a 2.048 W en la fase de calentamiento. En Chile, con red de 220 V, eso son unos 9,3 A. En Europa a 230 V darían 8,9 A. una diferencia chica, pero que juega en contra: a menor voltaje, más corriente para la misma potencia. Muchos enchufes inteligentes baratos están construidos para 10 A, y la combinación de fase de calentamiento con operación continua es exactamente para lo que no fueron diseñados.

Así que antes de comprar:

  1. Busca la placa de características de tu máquina, normalmente en el marco interior de la puerta o en un costado.
  2. Compara la potencia nominal que dice ahí con la especificación del enchufe.
  3. Si tu máquina pasa de 2.300 W, necesitas sí o sí un enchufe de 16 A. No es negociable.

Y revisa algo tan básico como si puedes llegar al enchufe: en máquinas empotradas suele quedar en el mueble de al lado o detrás del zócalo. Si no hay tomacorriente accesible, la alternativa es instalar un relé con medición de consumo fijo en la alimentación. pero eso es trabajo sobre 220 V y le corresponde a un electricista con credencial SEC. No es un paso de tutorial.

Las dos rutas de hardware

Ruta A. enchufe inteligente listo (la más rápida). Cualquier enchufe que entregue a Home Assistant un sensor de potencia en watts sirve. El artículo original usa un Shelly AZ Plug, que mide localmente sin pasar por la nube y aparece en Home Assistant en dos minutos. En Chile los modelos con medición de consumo se consiguen, pero cuestan bastante más que en Europa y no todos publican la corriente máxima real en la ficha: conviene confirmarla antes.

Ruta B. DIY con ESP32 + PZEM-004T (la más flexible). Esta es la versión que más sentido hace acá, y resuelve de paso el problema de los 16 A. El módulo PZEM-004T v3.0 mide voltaje, corriente, potencia, energía acumulada, frecuencia y factor de potencia, y se comunica por Modbus sobre serial a un ESP32. Viene con una bobina toroidal (CT) de 100 A que se cierra alrededor del cable de fase sin cortarlo, así que la parte de medición es no invasiva: el conductor de 220 V nunca pasa por el módulo.

Esa es la diferencia técnica que importa frente a un enchufe inteligente común, que mide con un shunt en serie: como el shunt está en el camino de la corriente, es él quien pone el límite de amperes. Con bobina toroidal el límite lo pone el cable, no el medidor, y 100 A sobran por mucho para cualquier electrodoméstico doméstico.

Con ESPHome el ESP32 aparece en Home Assistant como un sensor de potencia más, y de ahí en adelante toda la automatización de este tutorial funciona igual: lo único que cambian son los nombres de las entidades. La contra honesta: hay que montarlo en una caja, y aunque la medición sea no invasiva, la alimentación del módulo se conecta a la red. Si no tienes experiencia trabajando con 220 V, quédate en la ruta A.

Además de la medición necesitas Home Assistant con la app Companion instalada en el celular. La app crea sola un servicio notify.mobile_app_… al configurarse, que es el que usa la automatización. Si prefieres Telegram, se reemplaza esa acción por la del bot y el resto queda igual.

Preparar el enchufe: tres ajustes que no son obvios

Conectar el enchufe al WiFi y a Home Assistant es el procedimiento normal de cualquier dispositivo. Pero para usarlo en una máquina hay tres ajustes distintos a los de una lámpara, y los tres vienen de problemas reales:

Estado tras corte de energía: encendido. Se configura en la app del fabricante. Si no lo haces, después de un corte breve o de un reinicio del enchufe la máquina queda sin electricidad y nadie se da cuenta.

Borra horarios, auto apagado y acciones que traiga el enchufe. Si el enchufe ya se usó antes para otra cosa, puede tener un horario guardado. Un horario heredado apagaría el lavavajillas en la mitad del programa.

Esconde el interruptor en Home Assistant. El enchufe aparece como una entidad switch. Esa entidad tiene que salir del dashboard y del control por voz. Si quedó habilitada para el asistente de voz, un "apaga el mueble" dicho al pasar ahora apaga el lavavajillas. Se desactiva en Ajustes → Dispositivos → Entidad → Visible y se quita el permiso en la configuración del asistente.

Aprovecha de renombrar el dispositivo en ese momento, para que las entidades queden con nombres que se entiendan. En los ejemplos de abajo se llaman sensor.spuelmaschine_leistung (watts) y sensor.spuelmaschine_energie (contador acumulado en kWh).

Paso 1: crear los cuatro helpers

En Ajustes → Dispositivos y servicios → Ayudantes se crean cuatro. Los dos primeros los necesita la automatización; los otros dos alimentan la tarjeta del dashboard del final:

  1. Un interruptor (entrada booleana) llamado "Spülmaschine läuft" → input_boolean.spulmaschine_lauft
  2. Una entrada numérica "Spülmaschine Zählerstand bei Start", modo campo de entrada, unidad kWh, máximo suficientemente alto (en el original, 1.000.000) → input_number.spulmaschine_zahlerstand_bei_start
  3. Una entrada numérica "Spülmaschine letzter Spülgang", unidad kWh, paso 0,01 → input_number.spulmaschine_letzter_spulgang
  4. Una entrada de fecha y hora "Spülmaschine zuletzt fertig", con fecha y hora → input_datetime.spulmaschine_zuletzt_fertig

Lista de ayudantes en Home Assistant con cuatro entradas: el booleano de máquina funcionando, dos entradas numéricas para el último ciclo y el contador al inicio, y una entrada de fecha y hora del último término

El contador al inicio es la base del cálculo de consumo que va en el aviso: se guarda la lectura del medidor cuando arranca el programa, y al terminar se resta. Los dos últimos helpers guardan el resultado para poder verlo después en el dashboard.

Un detalle que confunde a mucha gente: Home Assistant genera los IDs de entidad a partir del nombre y en el proceso elimina las diéresis y caracteres especiales. Por eso "Spülmaschine läuft" se convierte en spulmaschine_lauft. Si tú los nombras en español, tus IDs van a ser distintos a los del código de abajo y vas a tener que reemplazarlos.

Paso 2: la automatización

En Ajustes → Automatizaciones se crea una nueva, se cambia a modo YAML desde el menú de tres puntos arriba a la derecha, y se pega este código. Los IDs de entidad y el servicio de notificación hay que ajustarlos a tus nombres. el código va tal cual del original, en alemán:

YAML
alias: Spülmaschine – Fertigmeldung
description: >-
  Läuft = Heizphase über 1000 W. Fertig = 30 Minuten unter 25 W.
  Gemessen: Trocknen 2–6 W, Pumpenpausen 3–8 W, Ausreißer 20 W.
mode: single
triggers:
  - trigger: numeric_state
    entity_id: sensor.spuelmaschine_leistung
    above: 1000
    id: laeuft
  - trigger: numeric_state
    entity_id: sensor.spuelmaschine_leistung
    below: 25
    for:
      minutes: 30
    id: fertig
actions:
  - choose:
      - alias: Spülgang beginnt
        conditions:
          - condition: trigger
            id: laeuft
          - condition: state
            entity_id: input_boolean.spulmaschine_lauft
            state: "off"
        sequence:
          - action: input_number.set_value
            target:
              entity_id: input_number.spulmaschine_zahlerstand_bei_start
            data:
              value: "{{ states('sensor.spuelmaschine_energie') | float(0) }}"
          - action: input_boolean.turn_on
            target:
              entity_id: input_boolean.spulmaschine_lauft
      - alias: Spülgang fertig
        conditions:
          - condition: trigger
            id: fertig
          - condition: state
            entity_id: input_boolean.spulmaschine_lauft
            state: "on"
        sequence:
          - variables:
              verbrauch: >-
                {{ (states('sensor.spuelmaschine_energie') | float(0)
                   - states('input_number.spulmaschine_zahlerstand_bei_start') | float(0))
                   | round(2) }}
          - action: input_number.set_value
            target:
              entity_id: input_number.spulmaschine_letzter_spulgang
            data:
              value: "{{ verbrauch }}"
          - action: input_datetime.set_datetime
            target:
              entity_id: input_datetime.spulmaschine_zuletzt_fertig
            data:
              timestamp: "{{ now().timestamp() }}"
          - action: notify.mobile_app_euer_handy
            data:
              title: Spülmaschine fertig
              message: "Geschirr kann ausgeräumt werden. Verbrauch: {{ verbrauch }} kWh."
          - action: input_boolean.turn_off
            target:
              entity_id: input_boolean.spulmaschine_lauft

La automatización abierta en el editor de Home Assistant: dos disparadores numéricos, uno sobre 1000 watts y otro bajo 25 watts durante 30 minutos, y una acción de selección con las dos opciones de inicio y término de ciclo

Qué hay que entender de ese código:

  • Los dos disparadores tienen un id, y la acción choose decide con ese ID qué rama corre. Así todo queda en una sola automatización en vez de dos.
  • El disparador "sobre 1.000 W" se dispara en cada fase de calentamiento, o sea cuatro o cinco veces por ciclo. La condición "el helper está apagado" hace que solo cuente la primera, y que el contador inicial no se sobrescriba a mitad de camino.
  • mode: single significa que si la automatización ya está corriendo, una nueva activación se descarta. Acá es lo correcto, porque las ramas terminan en milisegundos.

Un detalle sobre for: que el artículo original no menciona y que cuesta una noche de depuración: en Home Assistant, un disparador numeric_state con for: no es un temporizador que corre por su cuenta. El conteo se reinicia con cualquier lectura que vuelva a pasar el umbral. que es justo lo que queremos. , pero además no sobrevive a un reinicio de Home Assistant. Si actualizas o reinicias HA mientras la máquina está en el secado, el conteo de los 30 minutos parte de cero y el aviso llega hasta media hora tarde, o no llega si la máquina ya se apagó del todo antes de completarse. No es un error de tu configuración: es cómo funciona. Si reinicias HA seguido, conviene subir el umbral de "terminó" y confiar más en la duración que en el valor exacto.

Paso 3: ajustar los tres números a tu máquina

El 1.000, el 25 y el 30 salen de esa máquina medida. Para la tuya. da lo mismo si es lavavajillas, lavadora o secadora. los tres valores se deducen así de tu propia curva:

Umbral de "funcionando": aproximadamente la mitad de la potencia de calentamiento. Con una resistencia de 2.000 W, 1.000 W es seguro; en una secadora de 2.500 W van bien 1.200 W. Lo único que importa es que ningún otro estado alcance ese valor.

Umbral de "terminado": apenas por encima del valor más alto que la máquina todavía muestra en sus pausas y al final del programa. En la medición fueron 20 W durante el secado, por eso quedó en 25. Una lavadora que al salir del centrifugado todavía marca 40 W necesita 50.

Duración de "terminado": más larga que la pausa más larga del programa, y más larga que una fase de secado o antiarrugas que quieras contar como "todavía no termina". Acá fueron 30 minutos por los 25 de secado. Una secadora con antiarrugas cada cinco minutos se arregla con diez.

Ante la duda, alarga la duración. Un aviso que llega diez minutos tarde no molesta a nadie; uno que llega en la mitad del programa vuelve inútil toda la automatización.

Lo que cuesta un ciclo (en pesos)

El contador de energía del enchufe marcaba 1,619 kWh antes del ciclo y 2,625 kWh después: un ciclo automático consume aproximadamente 1 kWh, casi todo en las cinco fases de calentamiento. La bomba y la electrónica apenas pesan.

Llevado a Chile, con tarifas residenciales que se mueven en el rango de $150 a $200 CLP por kWh según distribuidora y horario, cada ciclo sale entre $150 y $200 pesos. Tres ciclos por semana son unos $2.400 al mes; sumar la lavadora y la secadora fácilmente triplica esa cifra.

Ese mismo número viaja en cada notificación, así que después de algunas semanas tienes, sin hacer nada extra, una comparación real entre lo que gasta el programa eco y lo que gasta el automático en tu casa. Ese dato normalmente se estima; acá se mide.

Notificación push de la app de Home Assistant en el celular avisando que el lavavajillas terminó, con el consumo del ciclo en kilowatt hora

La tarjeta en el dashboard

La notificación sirve para el momento; la tarjeta sirve para la mirada de paso: ¿está funcionando ahora, cuánto está consumiendo, y cuándo terminó el último ciclo?

Sección del lavavajillas en el dashboard de Home Assistant: una línea de estado con el último ciclo y su consumo, cuatro tarjetas con estado, potencia, último ciclo y última vez que terminó, y abajo el gráfico de potencia con las fases de calentamiento

Es una tarjeta markdown con el estado en una frase, cuatro fichas y el historial de potencia de las últimas seis horas:

YAML
type: grid
cards:
  - type: heading
    heading: Spülmaschine
    icon: mdi:dishwasher
  - type: markdown
    grid_options:
      columns: full
    content: >-
      {% if is_state('input_boolean.spulmaschine_lauft', 'on') %}
      **Läuft** – gestartet {{ relative_time(states.input_boolean.spulmaschine_lauft.last_changed) }},
      aktuell {{ states('sensor.spuelmaschine_leistung') }} W
      {% elif is_state('input_datetime.spulmaschine_zuletzt_fertig', 'unknown') %}
      Noch kein Spülgang erfasst
      {% else %}
      **Fertig** – letzter Spülgang
      {{ as_timestamp(states('input_datetime.spulmaschine_zuletzt_fertig')) | timestamp_custom('%d.%m. %H:%M') }} Uhr,
      {{ states('input_number.spulmaschine_letzter_spulgang') }} kWh
      {% endif %}
  - type: tile
    entity: input_boolean.spulmaschine_lauft
    name: Läuft
    icon: mdi:dishwasher
    color: blue
    tap_action:
      action: more-info
    grid_options:
      columns: 6
  - type: tile
    entity: sensor.spuelmaschine_leistung
    name: Leistung
    grid_options:
      columns: 6
  - type: tile
    entity: input_number.spulmaschine_letzter_spulgang
    name: Letzter Spülgang
    grid_options:
      columns: 6
  - type: tile
    entity: input_datetime.spulmaschine_zuletzt_fertig
    name: Zuletzt fertig
    grid_options:
      columns: 6
  - type: history-graph
    hours_to_show: 6
    grid_options:
      columns: full
      rows: 4
    entities:
      - entity: sensor.spuelmaschine_leistung
        name: Leistung

La sección se agrega en el editor del dashboard con "Añadir sección" y cambiando ahí a modo YAML. La ficha de "funcionando" al tocarla solo abre los detalles: deliberadamente no es un interruptor, para que nadie cambie el helper sin querer. En el celular las cuatro fichas se acomodan solas de a dos.

Lo que este montaje no puede hacer

Vale la pena ser explícito con los límites antes de que alguien se decepcione:

No conoce el programa ni el tiempo restante. El enchufe solo ve watts. Qué programa corre y cuánto falta lo sabe únicamente la máquina.

Un programa sin calentamiento no se detecta. Si lavas solo en frío, nunca se cruza el umbral de "funcionando" y no llega aviso. Para un programa frío habría que bajar el umbral al nivel de la bomba, y entonces hay que convivir con falsas alarmas cada vez que se abre la puerta.

El aviso llega con retraso. Es el precio de los 30 minutos. Si no quieres esperar el secado, acortas la duración. y sacas la loza todavía mojada.

Un corte de luz no resetea el helper. Si la máquina queda detenida en la mitad del programa, el helper se queda en "encendido" hasta que corra el siguiente programa completo. Es inofensivo: el próximo aviso igual llega, solo que el consumo reportado va a ser el de los dos programas sumados.

Variantes y mejoras

Avisar en la pieza, no solo al celular. La misma automatización puede encender una ampolleta inteligente de un color determinado por unos minutos, o mandar un mensaje a un parlante con TTS. Se agrega como una acción más en la rama de "terminado", sin tocar el resto de la lógica.

Detectar que la loza sigue adentro. Si a las dos horas del aviso el helper nunca volvió a activarse y la puerta. con un sensor magnético de apertura en el marco. tampoco se abrió, es que nadie descargó la máquina. Una segunda notificación de recordatorio se arma con un disparador de estado con for: hours: 2 sobre el input_datetime.

Extender el mismo principio a otros aparatos. La lógica de "helper + duración mínima" no tiene nada de específico de un lavavajillas. Sirve igual para una impresora 3D (detectar fin de impresión por caída de consumo del calefactor de cama), para un cargador de auto eléctrico o para una bomba de agua que no debería estar funcionando de noche. Los tres números cambian; la estructura no.

Estimar el tiempo restante. Con varias curvas registradas del mismo programa puedes calcular en qué fase está la máquina comparando el consumo acumulado del ciclo actual contra el promedio histórico. No es exacto, pero da un porcentaje de avance bastante mejor que nada.

Personalización para Chile

El proyecto completo se puede armar con lo que hay en el catálogo de MechatronicStore si tomas la ruta DIY, que es además la que resuelve el problema del límite de corriente:

  • ESP32 DevKit V1. el microcontrolador que lee el medidor y publica los datos a Home Assistant por WiFi. Con ESPHome no hay que programar nada a mano.
  • Módulo medidor PZEM-004T v3.0 con bobina 100 A. mide voltaje, corriente, potencia, energía acumulada, frecuencia y factor de potencia. La bobina toroidal abraza el cable de fase sin cortarlo.
  • Fuente 5 V switching o cargador USB 5 V 1 A. para alimentar el ESP32.
  • Caja plástica de montaje. obligatoria si el conjunto va cerca de la instalación de 220 V.
  • Jumpers hembra hembra 20 cm. para el enlace serial entre el PZEM y el ESP32.
  • Raspberry Pi 5 (o Pi 4). si todavía no tienes un servidor Home Assistant corriendo. Es la plataforma más común para HA en la casa.

Dos cosas del proyecto no salen de una tienda de electrónica y conviene tenerlo claro: el enchufe inteligente comercial con medición de la ruta A, que se compra en retail de domótica, y la instalación eléctrica si decides ir por un relé fijo en la línea en vez de un enchufe intermedio. eso es trabajo de electricista certificado, no un paso más del tutorial.

La ruta DIY completa, sin contar el servidor de Home Assistant, ronda los $45.000 CLP. Los precios y el stock exactos hay que confirmarlos en el catálogo al momento de comprar.

Un detalle eléctrico propio de Chile que conviene repetir: acá la red domiciliaria es de 220 V a 50 Hz. Los valores de potencia de este tutorial se trasladan tal cual, porque lo que mide el sensor son watts. Lo que cambia es la corriente: los mismos 2.048 W que en Europa a 230 V son 8,9 A, acá a 220 V son 9,3 A. Si estás justo en el límite de un dispositivo de 10 A, esa diferencia importa.

Recursos

Versión chilena inspirada en el artículo de raspberry.tips, re angulada con una ruta DIY basada en ESP32 y componentes en stock local.