De enchufe espia a enchufe que es tuyo de verdad

¿Tienes un enchufe inteligente en casa y nunca te preguntaste a donde van los datos de consumo de tu pieza? La mayoria de los enchufes WiFi baratos del mercado funcionan igual: miden tu energia, si, pero esa informacion viaja a un servidor en la nube de un fabricante que ni conoces, atada a una cuenta y a una app propietaria que puede dejar de funcionar el dia que la empresa cierre. Tu compraste el aparato, pero quien manda es otro.

Este tutorial te muestra como dar vuelta esa relacion por completo. Vamos a tomar un enchufe inteligente comercial con medidor de energia y a reemplazar su cerebro WiFi por un modulo ESP8685-WROOM-03 (ESP32-C3), para correr firmware abierto compatible con Apple HomeKit nativo, sin nube, con actualizaciones por aire (OTA) y con medicion completa de voltaje, corriente, potencia y energia acumulada. Al terminar vas a tener un enchufe que mide tu consumo y reporta todo de forma local, dentro de tu casa, sin telemetria hacia afuera.

Es un proyecto de electronica de reflasheo: hay que abrir el aparato, desoldar el modulo original de montaje superficial (SMD), soldar el nuevo modulo en su lugar y cargar el firmware. La dificultad real es media. Si ya soldaste pads SMD alguna vez y te manejas con la linea de comandos, esto esta a tu alcance.

Enchufe inteligente con medidor de energia, proyecto base del tutorial

Advertencia: esto trabaja con 220V de la red domiciliaria

Antes de cualquier otra cosa, lo mas importante:

PELIGRO: la red electrica puede matarte. Este proyecto interviene un dispositivo que se conecta directo a los 220V AC de tu casa. La placa, una vez enchufada, tiene zonas con tension de red letal.

Reglas que no se negocian:

  • Desenchufa siempre el dispositivo antes de abrirlo. Trabaja unicamente con la placa fuera del tomacorriente.
  • Nunca manipules el circuito con energia aplicada.
  • Usa herramientas con mango aislado.
  • No toques conductores expuestos.
  • En Chile, intervenir instalaciones electricas tiene marco regulatorio de la SEC. Si no estas seguro de lo que haces, consulta a un instalador electrico autorizado. Este contenido es educativo y nadie se hace responsable por danos, lesiones o accidentes.

Un detalle practico chileno: el enchufe del proyecto original viene en formato europeo Schuko. En Chile usamos clavija distinta, asi que este montaje tiene sentido sobre todo como ejercicio de electronica, ingenieria inversa y aprendizaje de HomeKit. No lo instales de forma permanente en tu pared si la clavija no corresponde a la norma local.

Por que cambiar el chip original

Los enchufes inteligentes economicos suelen depender de servidores en la nube, cuentas de fabricante, apps propietarias e infraestructura remota con recoleccion de datos que nadie audita. Esa es la trampa: el aparato es tuyo, pero el control no.

Existen varias revisiones de hardware de este producto. La que cubrimos trae internamente un modulo CB2S / BK7231N. El problema del BK7231 es que es una plataforma cerrada, dificil de reflashear y sin un ecosistema de desarrollo moderno y abierto. En vez de pelear contra esas limitaciones, lo reemplazamos entero por un ESP8685-WROOM-03 (ESP32-C3), que nos da:

  • Soporte nativo de Apple HomeKit
  • Actualizaciones OTA mediante LCM (Life Cycle Manager)
  • Toolchain 100% abierto
  • Comunidad ESP32 activa y enorme
  • Integracion directa con el chip de medicion de energia BL0937

Una nota tecnica que el tutorial original no profundiza: el BL0937 es el corazon de la medicion. Es un chip que entrega pulsos cuya frecuencia es proporcional a la magnitud medida. Por un pin (CF) saca pulsos proporcionales a la potencia activa, y por otro (CF1) alterna entre corriente y voltaje segun el estado del pin SEL. El firmware cuenta esos pulsos por unidad de tiempo y los convierte en watts, amperes y volts. Por eso al ESP32-C3 le bastan tres GPIO (CF, CF1, SEL) para leer toda la energia: no es un ADC analogico, es conteo de frecuencia.

Al reemplazar el firmware recuperas privacidad total, control local del dispositivo, propiedad real del firmware, operacion offline, cero telemetria e independencia de soporte a largo plazo.

Materiales y herramientas

El componente clave es el modulo ESP8685-WROOM-03 (ESP32-C3) en su formato SMD, el mismo que se suelda sobre el PCB del enchufe. Es una pieza especifica de montaje superficial: si recien estas partiendo con el ESP32-C3 y quieres practicar el chip antes, en Chile hay placas de desarrollo con ese mismo SoC para experimentar en protoboard, aunque para este montaje necesitas la variante SMD.

Para el trabajo de desoldado y soldado vas a necesitar:

  • Cautin con control de temperatura (tipo TS100/101 o equivalente regulable)
  • Trenza desoldante o malla de cobre para retirar estano
  • Flux liquido (esto es clave, no lo saltes)
  • Alcohol isopropilico y cotonitos para limpiar
  • Multimetro para chequeo de continuidad
  • Espatulas plasticas (spudgers) y una herramienta metalica fina para abrir la carcasa

Cautin con control de temperatura, ideal para desoldar modulos SMD sin levantar pads

Abrir el enchufe

Herramientas: espatulas plasticas y una pala metalica delgada.

  1. Inserta una espatula plastica entre las dos mitades de la carcasa.
  2. Crea una pequena separacion.
  3. Desliza la espatula metalica.
  4. Haz palanca suave hacia una esquina.
  5. Libera cada uno de los cuatro clips.
  6. La carcasa se abre limpia.

Adentro vas a encontrar el bloque de pines de la clavija, el rele y el PCB verde con la electronica de control y medicion.

Vista despiezada del enchufe: carcasa, pines de la clavija y PCB de control

Mapeo de pines (verificado)

Antes de tocar nada, ten claro que pin original va a cada GPIO del ESP8685. Este mapeo esta verificado:

Funcion Pin original GPIO ESP8685
Rele P8 GPIO6
Boton P7 GPIO7
LED rojo P6 GPIO3
LED azul P10 GPIO20
CF (BL0937) P26 GPIO4
CF1 (BL0937) P24 GPIO5
SEL (BL0937) P11 GPIO21

Las asignaciones de GPIO para el BL0937 se definen en la configuracion del firmware.

PCB de control del enchufe con el rele y los componentes de medicion

Retirar el modulo original

Antes de instalar el ESP8685-WROOM-03 nuevo, hay que sacar con cuidado el modulo original del PCB. Este paso es critico: si danas los pads, el proyecto se vuelve mucho mas dificil o imposible.

Herramientas recomendadas: cautin digital con temperatura controlada, trenza desoldante, flux liquido (muy importante), alcohol isopropilico y cotonitos. Un cautin de temperatura estable y con buena potencia es lo que evita recalentar la placa al trabajar modulos de varios pines.

Paso 1: identifica el chip original. Segun tu revision vas a ver un CB2S o un BK7231N, ambos modulos WiFi de montaje superficial con pads de soldadura en el borde. Antes de retirarlo, saca fotos en alta resolucion del PCB desde varios angulos: te van a salvar si algo sale mal.

Paso 2: aplica flux generoso. Pon flux liquido a lo largo de cada borde de pad del modulo. El flux baja la temperatura de fusion, mejora la transferencia de calor, evita que se levanten los pads y hace que el estano fluya bien. Nunca intentes desoldar sin flux.

Paso 3: retira el modulo. Pon el cautin a 350 a 380 grados C. Apoya la trenza desoldante sobre una fila de pads, presiona con el cautin caliente, deja que el estano se absorba en la malla y repite en todos los lados. Cuando todas las uniones esten limpias, levanta el modulo con suavidad. No tires si todavia sientes resistencia: si queda una sola union soldada, puedes arrancar un pad.

Paso 4: limpia los pads. Retira el estano restante con la trenza, limpia el flux con alcohol isopropilico e inspecciona bajo aumento por si hay pads levantados. El resultado debe ser: alineacion limpia, pads de cobre planos, sin zonas quemadas y sin puentes de estano.

Preparar el ESP8685-WROOM-03 y borrar la flash

El autor del tutorial original armo un jig programador magnetico impreso en 3D para no tener que soldar headers. Si no tienes impresora 3D, tambien puedes soldar unos cables a los pads de programacion del modulo. La idea es lograr contacto estable con el modulo para flashearlo con esptool.

Primero borra la flash y anota la MAC:

Bash
esptool.py erase_flash

Ejemplo de salida:

Text
Chip is ESP32-D0WD-V3
Erasing flash...
Chip erase completed successfully
MAC: 68:25:dd:f0:40:94

Guarda tu direccion MAC: la vas a necesitar al generar el QR.

Modulo ESP8685-WROOM-03 (ESP32-C3), el nuevo cerebro del enchufe

Generar el codigo QR de HomeKit

El codigo QR es lo que despues escaneas en la app Casa de Apple para emparejar el accesorio. Se genera con la herramienta del autor, pasando los datos de tu dispositivo:

Bash
./gen_qrcode 7 693-41-208 M4T8 cc8da2ddafe0 new/qrcode.png

Que significa cada campo:

  • 7 = tipo de accesorio (Outlet o enchufe)
  • 693-41-208 = codigo de setup
  • M4T8 = Setup ID
  • cc8da2ddafe0 = la MAC sin los dos puntos

Esto te genera una imagen de etiqueta. Puedes usar solo el QR o la etiqueta completa, imprimirla como sticker y pegarla en tu enchufe.

Etiqueta con el codigo QR de HomeKit y los datos del accesorio

Instalar el Life Cycle Manager (LCM)

El LCM (Life Cycle Manager) es lo que permite instalar y actualizar firmware por aire (OTA), sin tener que volver a abrir el dispositivo nunca mas. Es la pieza que convierte este enchufe en algo mantenible a largo plazo.

Ve a la carpeta donde dejaste los archivos y flashea:

Bash
python -m esptool --chip esp32c3 -b 460800 \
--before default_reset --after hard_reset write_flash \
--flash_mode dio --flash_size 4MB --flash_freq 80m \
0x0 build/bootloader/bootloader.bin \
0x8000 build/partition_table/partition-table.bin \
0xe000 build/ota_data_initial.bin \
0x20000 build/esp32-lifecycle-manager.bin

Instalar y soldar el nuevo chip

Con el modulo viejo fuera y los pads limpios, llego el momento de instalar el nuevo cerebro: el ESP8685-WROOM-03. Esta es la parte mas delicada de todo el upgrade, pero con paciencia y tecnica es totalmente manejable, incluso si recien partes.

Paso 1: alinea y fija una esquina. Posiciona el ESP8685 sobre su footprint (un lado con 5 pads y el otro con 6). Alinea todos los bordes, funde un pad de esquina pre estanado y dejalo enfriar. Revisa la alineacion por todos lados; si quedo torcido, recalienta esa esquina, ajusta y vuelve a fijar hasta que quede perfecto.

Paso 2: suelda la esquina opuesta. Cuando la alineacion se ve correcta, suelda la esquina opuesta y vuelve a chequear. Con dos esquinas fijas, el modulo ya no se mueve.

Paso 3: drag soldering de los pads. Aplica flux generoso a lo largo de una fila de pines. Carga una pequena gota de estano en la punta y arrastrala lento sobre los pines, dejando que la tension superficial lleve el estano a su lugar. Repite en el otro lado. No te asustes si se forman puentes: se quitan facil despues.

Paso 4: elimina los puentes de estano. Si quedan pines unidos, agrega flux, apoya la trenza desoldante, presiona suave con el cautin, deja que absorba el estano y vuelve a inspeccionar. La meta: uniones limpias, sin grumos, sin puentes y sin pads levantados.

Paso 5: limpieza e inspeccion final. Limpia la placa con alcohol isopropilico y cotonitos. Inspecciona con cuidado: todos los pads conectados, ningun pin flotando, sin uniones frias, sin dano por calor y sin residuos. Dedicale tiempo: la inspeccion visual previene el 90% de las fallas.

Paso 6: chequeo de continuidad (recomendado). Con el multimetro en modo continuidad, verifica que no haya cortocircuitos entre pines vecinos, confirma las conexiones de tierra, comprueba que el pin del rele llega al GPIO correcto del ESP y valida la continuidad del riel de alimentacion. Este paso te ahorra horas de debugging despues.

Cargar el firmware HomeKit

Si quieres escribir tu propio codigo, los repositorios del autor (mas abajo en Recursos) tienen todo el framework HomeKit para ESP32. Si no, puedes usar directamente el firmware ya compilado e instalarlo via LCM.

La configuracion del servidor HomeKit usa tu codigo de setup y tu Setup ID:

C
homekit_server_config_t config = {
  .accessories = accessories,
  .password = "693-41-208",  
.setupId = "M4T8",
};

Para compilar el firmware se usa el contenedor oficial de ESP IDF v5.4, fijando el target al ESP32-C3:

Bash
docker run -it -v ~/ESP32-Power-Plug:/project -w /project espressif/idf:v5.4
Bash
idf.py set-target esp32C3
Bash
idf.py build

Esto produce el archivo main.bin.

Que hace el firmware

El firmware expone un accesorio HomeKit tipo Outlet (enchufe) con caracteristicas de energia extendidas:

  1. Rele y LED azul: el LED azul siempre sigue el estado del rele. El rele es la unica fuente de verdad.
  2. LED rojo (estado WiFi o aprovisionamiento): encendido durante el arranque, apagado cuando el WiFi conecta, y encendido si falta la configuracion WiFi o falla.
  3. Acciones del boton: una pulsacion alterna el rele y notifica a HomeKit. Una pulsacion larga (10 s) hace factory reset y reinicia via LCM.
  4. Medicion de energia (BL0937): una tarea dedicada muestrea continuamente el BL0937 y actualiza las caracteristicas HomeKit de voltaje, corriente, potencia y energia (kWh).
  5. Proteccion de sobrecorriente (opcional): cuando se habilita en menuconfig, el rele corta si la corriente supera un umbral, con anti rebote para evitar falsos positivos, actualizacion inmediata del estado en HomeKit y enfriamiento opcional antes de rehabilitar.

Firmar el firmware

Abre una terminal nueva, ve al directorio del proyecto y firma el binario:

Bash
openssl sha384 -binary -out build/main.bin.sig build/main.bin
printf "%08x" "$(wc -c < build/main.bin)" | xxd -r -p >> build/main.bin.sig

O usa directamente el repositorio del autor con los archivos ya firmados.

Instalar via LCM y emparejar con la app Casa

Con el LCM cargado, el dispositivo crea una red WiFi propia. El flujo es:

  1. Conectate a la red LCM-XXXXX.
  2. El portal cautivo se abre solo.
  3. Ingresa las credenciales de tu WiFi de casa.
  4. Indica el origen del firmware (el repositorio del autor con la energia: AchimPieters/ESP32-Power-Plug-with-Energy-Meter).
  5. Habilita el GPIO3 (LED rojo en este caso) con nivel encendido y presiona Join.

La instalacion arranca, el LED empieza a parpadear y cuando termina el dispositivo se reinicia.

Portal WiFi del Life Cycle Manager para elegir la red e indicar el firmware

Para emparejar con Apple Home: abre la app Casa, escanea el codigo QR del dispositivo, sigue las instrucciones, ponle nombre y asignalo a una habitacion. Listo.

Apple Home vs Eve: por que Eve importa

La app Casa de Apple muestra a proposito un set minimo de funciones. Sirve para prender y apagar, pero no entrega interfaz de actualizacion de firmware, ni metricas detalladas de energia, ni graficos historicos, ni diagnostico avanzado del accesorio.

Ahi entra la app Eve (gratis, sin cuenta). Con Eve obtienes visibilidad completa de las caracteristicas HomeKit personalizadas, lecturas en vivo de voltaje, corriente, potencia y energia, graficos historicos por hora, dia, semana y mes, y la interfaz de actualizacion de firmware OTA via LCM. Para actualizar, instalas Eve, seleccionas el enchufe, abres los detalles del accesorio, eliges Firmware Update y esperas a que termine el proceso OTA.

Enchufe ya reensamblado con su etiqueta y QR de HomeKit, resultado final

Resultado final

Al terminar tienes un enchufe inteligente que de verdad es tuyo: integracion nativa con Apple HomeKit, actualizaciones OTA, cero dependencia de la nube, sin vendor lock in, sin telemetria ni spyware, firmware 100% abierto y vida util de largo plazo. El dispositivo dejo de ser un producto de consumo desechable para convertirse en hardware personal y mantenible.

Variantes y mejoras

Algunas ideas para llevar este proyecto mas alla de lo que cubre el original:

  • Registro de consumo a planilla: como el firmware ya expone potencia y energia en HomeKit, puedes correr una automatizacion (con un Home Hub o con Home Assistant en un Raspberry Pi) que registre el kWh diario de tu refrigerador o tu PC y te arme un historial en CSV. Util para estimar cuanto te cuesta cada equipo al mes con la tarifa electrica chilena.
  • Alerta de sobreconsumo: aprovechando la proteccion de sobrecorriente del firmware, configura un umbral y dispara una notificacion en tu iPhone cuando un equipo pasa cierto consumo. Sirve para pillar un calefactor que quedo prendido o una carga anomala.
  • Practica previa en protoboard: antes de jugarte con el modulo SMD soldado, arma la logica de control y la lectura del BL0937 en una placa de desarrollo ESP32-C3 sobre protoboard. Validas el firmware con seguridad, sin tension de red, y recien despues haces el reflasheo definitivo.

Personalizacion para Chile

En Chile puedes conseguir las herramientas clave de soldadura SMD que pide este proyecto en MechatronicStore. Recuerda que el modulo ESP8685-WROOM-03 en formato SMD es la pieza especifica del montaje; lo que sigue son los insumos de soldado y verificacion que si encuentras en stock local:

  • Flux Pasta de soldadura NC-559 10cc (SKU E-006) por $3.490. Imprescindible para desoldar y soldar los pads sin levantarlos.
  • Cautin 60W con regulador de temperatura (SKU E-209) por $8.990. El equivalente local al TS100/101 que recomienda el autor.
  • Alcohol Isopropilico 300cc con spray (SKU A-088) por $3.290. Para limpiar el flux y dejar los pads impecables.
  • Multimetro Multi Tester 830 (SKU E-304) por $2.990. Para el chequeo de continuidad antes de energizar.

Si necesitas mas torque para trabajos largos, la Estacion de Soldar ZD-99 tambien esta disponible en tienda como alternativa al cautin de mano.

Recursos

Version chilena inspirada en el trabajo de Achim Pieters (StudioPieters), con herramientas en stock local en MechatronicStore.