
Llegas a casa con el Tesla al 30%, enchufas el cable, y el coche empieza a cargar a 32 A. A los cinco minutos se enciende el horno. El contador empieza a temblar. En ese momento te das cuenta de que tu “carga inteligente” no es tan inteligente.
Esta escena la he vivido yo mismo. Tienes placas solares, Home Assistant funcionando, y aun así el coche te come potencia justo cuando la casa la necesita. La solución no es comprar un wallbox de mil euros. Es montar carga dinámica con un Shelly PRO 3EM, un ESP32 con BLE y un blueprint de Home Assistant que ajusta el amperaje en tiempo real.
He seguido el proceso de Daniel Raffel para el flasheo del ESP32, y el blueprint de carga dinámica de la comunidad de Home Assistant. El resultado: el coche carga exactamente lo que sobra, ni un vatio de más de la red.
Qué es la carga dinámica y por qué no basta con un wallbox
La carga dinámica ajusta la corriente que recibe el coche según el consumo de la casa en ese instante. No es lo mismo que programar horarios. Es reaccionar en segundos cuando el lavavajillas, el horno o la bomba de calor arrancan.
Un wallbox premium como el Tesla Wall Connector tiene comunicación con el coche, pero no sabe lo que pasa en el resto de la instalación. Si tienes 5.000 W contratados y el coche pide 7.000 W, el wallbox no reduce nada porque no mide el consumo doméstico. Eso lo hace tu medidor, y eso es lo que vamos a automatizar.
Para que una carga dinámica funcione bien en una casa normal, necesita tres cosas:
- Medir el consumo total de la vivienda en tiempo real.
- Leer el estado del coche y poder ajustar su amperaje de carga.
- Evitar oscilaciones: no puede subir y bajar cada diez segundos.
La arquitectura que describo a continuación cumple las tres.
Hardware que uso en mi instalación
Mi setup es monofásico, lo cual simplifica bastante los cálculos. Esto es lo que tengo montado:
- Shelly PRO 3EM con las tres entradas de tensión conectadas a la misma fase y una pinza CT en el cable principal. El Shelly PRO 3EM está pensado para trifásico, pero en monofásico funciona perfectamente si conectas las tres fases juntas. Así aprovechas las tres pinzas si quieres medir circuitos adicionales. Ver precio en Amazon
- M5Stack Atom S3 Lite, un ESP32-S3 pequeño y barato. Lo compré en AliExpress por unos 8 euros. Va dentro de una caja impermeable cerca del coche, conectado por USB-C a un cargador de móvil viejo.
- Tesla Model 3 con Tesla Wall Connector Gen 3.
El ESP32 habla con el Tesla por Bluetooth Low Energy, no por Wi-Fi ni por la API oficial de Tesla. Eso es clave: no hay rate limits, no dependes de que los servidores de Tesla respondan, y funciona aunque no haya internet en casa.
Si aún no tienes monitorización energética montada, te recomiendo leer primero la guía de cómo medir consumo con Shelly EM y la de Shelly PRO 3EM en Home Assistant antes de seguir.
Cómo funciona la arquitectura completa
El flujo es sencillo de entender una vez montado:
- El Shelly PRO 3EM mide la potencia que entra (o sale) a la vivienda cada segundo.
- Home Assistant recibe ese dato y calcula cuánto margen queda antes de tocar el límite de potencia contratada.
- El ESP32 BLE le pregunta al Tesla su estado (¿está enchufado? ¿está cargando?) y le manda comandos para ajustar amperios o parar.
- El blueprint de Home Assistant orquesta todo: decide cada minuto, tres o cinco si subir, bajar o mantener.
Lo bueno de este enfoque es que cada pieza es reemplazable. Si el ESP32 falla, el coche sigue cargando a lo que le hayas puesto manualmente. Si Home Assistant se reinicia, el blueprint vuelve a evaluar en el siguiente ciclo. No hay un único punto de fallo que deje al coche colgado.
Paso a paso: flashear el ESP32 con esphome-tesla-ble
El proyecto esphome-tesla-ble de Yoziru es el que uso. Soporta varias placas ESP32, incluido el M5Stack Atom S3 que yo tengo. El proceso requiere dos flashes: primero para descubrir la dirección MAC BLE del Tesla, y segundo para configurar el firmware definitivo.
Primer flash: activar el listener BLE
Clona el repositorio y prepara el entorno:
git clone https://github.com/yoziru/esphome-tesla-ble
cd esphome-tesla-ble
pip install -r requirements.txt
Crea un archivo secrets.yaml con tu Wi-Fi, VIN del Tesla, y una clave de API de ESPHome. Deja la dirección MAC en blanco por ahora:
wifi_ssid: “tu_wifi”
wifi_password: “tu_clave”
tesla_vin: “5YJSA1…”
api_encryption_key: “clave_de_32_caracteres”
ble_mac_address: “”
En el archivo de configuración del board, descomenta la línea del listener. Para el Atom S3, el archivo es tesla-ble-m5stack-atoms3.yml. Activa el listener:
listener: !include packages/listener.yml
Compila y flashea:
esphome compile tesla-ble-m5stack-atoms3.yml
esphome upload tesla-ble-m5stack-atoms3.yml
Conecta el ESP32 por USB, selecciona el puerto cuando te lo pida, y espera a que termine. Una vez encendido, el ESP32 escaneará dispositivos BLE cercanos.
Descubrir la MAC del Tesla
Acerca el ESP32 al coche. Abre la app de Tesla, despierta el vehículo, y luego pasa la tarjeta NFC por el soporte del pilar B. En los logs del ESP32 verás algo como:
[I][tesla_ble_listener:054]: Found Tesla vehicle | Name: S1a87a5a… | MAC: A0:B1:C2:D3:E4:F5
Anota esa MAC. Es única de tu coche y la necesitas para el segundo flash.
Segundo flash: firmware definitivo
Vuelve a secrets.yaml y rellena la MAC. Comenta o elimina la línea del listener en el YAML. Limpia y recompila:
esphome clean tesla-ble-m5stack-atoms3.yml
esphome compile tesla-ble-m5stack-atoms3.yml
esphome upload tesla-ble-m5stack-atoms3.yml
El ESP32 ahora arranca en modo normal, se conecta a tu Wi-Fi, y aparece como dispositivo ESPHome en Home Assistant. Añádelo desde Ajustes > Dispositivos y servicios > ESPHome.
Emparejar la llave BLE
En Home Assistant, busca el botón Pair BLE key en el panel del ESP32. Púlsalo, pasa la tarjeta NFC por el coche cuando te lo pida, y confirma en la pantalla del Tesla. Aparecerá una llave nueva llamada “Unknown device”. Ya puedes controlar carga, amperaje y límites desde Home Assistant.
Los controles disponibles son concretos: encender/apagar carga, ajustar amperios, cambiar el límite de carga porcentual, y leer sensores como puertas cerradas, estado de carga, y fuerza de la señal BLE. En mi experiencia, la señal BLE es estable si el ESP32 está a menos de cinco metros del coche sin paredes gruesas de por medio.
Configurar el blueprint de carga dinámica
El blueprint Dynamic EV Charging Automation es el que uso. Está en la versión 2.2 y soporta cualquier coche integrado en Home Assistant, no solo Tesla. Se instala en dos clics:
- Ve a Ajustes > Automatizaciones y escenas > Blueprints > Importar blueprint.
- Pega la URL del archivo raw YAML del repositorio.
- Configura los parámetros.
Los campos que tienes que rellenar son estos:
- Intervalo de ajuste: cada 1, 3 o 5 minutos. Yo uso 3 minutos. Con 1 minuto reaccionas más rápido pero generas más ajustes. Con 5 es más estable pero puede pasarte del límite antes de que actúe.
- Sensor de consumo doméstico: la entidad de potencia del Shelly PRO 3EM, por ejemplo
sensor.shellypro3em_em1_power. - Sensor de estado de carga: el sensor del ESP32 que indica si el Tesla está cargando. Con el componente de Yoziru aparece como texto con estados tipo “Charging”, “Stopped”, “Complete”.
- Selector de inicio/paro: la entidad
selectdel ESP32 para arrancar o detener carga. - Potencia máxima de red (día/noche): el límite en vatios. En mi caso 5.000 W de día y 4.000 W de noche, porque de noche no hay sol y prefiero ser conservador.
- Voltaje de red: 230 V para monofásico.
- Amperaje mínimo y máximo: 6 A y 16 A en mi instalación.
El blueprint calcula automáticamente: margen disponible = potencia máxima − consumo actual. Luego convierte a amperios y ajusta el coche. Si el margen cae por debajo del mínimo técnico, para la carga en vez de dejarla a 0 A.
Configuración del Shelly PRO 3EM en monofásico
El Shelly PRO 3EM viene pensado para trifásico, pero en monofásico se adapta bien. Conecta las tres entradas de fase (A, B, C) al mismo cable de fase de tu instalación. La neutra va a N. La pinza CT va al cable principal que entra en el cuadro eléctrico.
En la configuración del Shelly, selecciona modo monofásico. La pinza debe ir con la orientación correcta: la flecha K→L apuntando hacia la carga (tu casa). Si la pones al revés, leerás potencia negativa. Se arregla en los ajustes, pero mejor hacerlo bien desde el principio.
El Shelly PRO 3EM se integra en Home Assistant por la integración nativa de Shelly. No necesitas MQTT ni ESPHome. Aparece como dispositivo con entidades de potencia, energía, voltaje y corriente por canal. Yo uso solo el canal 1 para la medición general; los otros dos los tengo libres por si quiero pinzar circuitos individuales más adelante.
Variables y entidades clave en Home Assistant
Antes de que el blueprint funcione, asegúrate de que estas entidades existen y tienen valores razonables:
sensor.shellypro3em_em1_powero similar: potencia instantánea de la vivienda.sensor.tesla_ble_iec_61851: estado de carga del coche (A, B, C, D, E, F mapeados a texto).number.tesla_ble_charging_amps: amperaje actual de carga.select.tesla_ble_charging: control de inicio/paro.sensor.tesla_ble_battery_level: porcentaje de batería, útil para automatizaciones adicionales.
La fórmula que aplica el blueprint internamente es simple:
I_objetivo = (P_max − P_casa) / 230 V
Luego limita entre el mínimo y máximo configurados, y redondea al amperio entero más cercano. En trifásico la fórmula cambia, pero como mi instalación es monofásica no me he complicado.
Ajustes finos: histéresis, intervalos y failsafe
El blueprint ya lleva histéresis incorporada, pero conviene entender qué hace para no tocarlo sin saber. La idea es que no cambie de amperio por una fluctuación puntual. Si el horno se enciende treinta segundos y se apaga, no quieres que el coche pare y arranque cada vez.
Mi configuración práctica:
- Intervalo de 3 minutos. Reacciona a cambios sostenidos, no a picos.
- Paso de ajuste de 1 A por ciclo. No salta de 6 A a 13 A de golpe.
- Límite de potencia con 300 W de margen. Prefiero importar un poco antes de rozar el ICP.
El failsafe más importante es este: si el Shelly deja de reportar datos durante más de 60 segundos, el blueprint deja de ajustar y mantiene el último valor. Si Home Assistant se reinicia, el blueprint se reactiva solo en el siguiente ciclo. No hay que hacer nada manual.
Otro failsafe que añadí yo: una automatización separada que, si la potencia importada supera 5.500 W durante más de 10 segundos, baja el coche a 6 A inmediatamente. Es un cinturón de seguridad por si el blueprint se retrasa.
Problemas típicos y cómo los he solucionado
El coche no se despierta con BLE
El ESP32 puede hablar con el Tesla solo si el coche está despierto o si está cargando. Si está en modo sueño profundo, el primer comando falla. Solución: usa la app de Tesla para despertarlo una vez, o configura el blueprint para que no intente ajustar si el estado es “Asleep”. El componente de Yoziru tiene un sensor de “awake” que puedes usar de condición.
La carga sube y baja constantemente
Suele pasar con intervalos de 1 minuto y sin margen de seguridad. Pasa a 3 minutos y añade 200-300 W de margen. También revisa que el Shelly no esté dando lecturas erráticas por una pinza mal colocada.
El ESP32 pierde conexión Wi-Fi
El Atom S3 Lite tiene antena integrada. Si la señal es débil, el ESP32 se desconecta y no manda comandos al coche. Ponlo cerca del router o usa un punto de acceso dedicado en el garaje. Yo tengo un AP Unifi a tres metros y no he tenido cortes.
De noche se vuelve loco
Si usas producción solar en el cálculo, de noche ese sensor da cero y el blueprint puede interpretar que hay margen infinito. Configura límites de noche más bajos o desactiva la lógica solar en horas sin sol. El blueprint permite dos perfiles: día y noche.
Comparativa: DIY vs alternativas comerciales
| Opción | Coste inicial | Control fino | Dependencia cloud | Dificultad |
|---|---|---|---|---|
| HA + ESP32 + Shelly | Bajo (≈60 €) | Muy alto | Ninguna para lo crítico | Media |
| Tesla + Neurio | Medio/alto (≈300 €) | Medio | Alta (API Tesla) | Baja |
| Wallbox premium (Pulsar, V2C) | Alto (≈800-1.500 €) | Medio/alto | Media | Baja |
Neurio y wallbox premium son más cómodos: los enchufas y funcionan. Pero Neurio depende de la API de Tesla, que ha cambiado de precio y condiciones varias veces. Y un wallbox con carga dinámica integrada cuesta diez veces más que este setup.
El enfoque DIY gana en flexibilidad: puedes añadir reglas propias, integrar producción solar, priorizar cargas, y no dependes de que un fabricante siga manteniendo su app. La contra es que requiere montarlo tú. Si te gusta trastear con Home Assistant, es tiempo bien invertido.
Conclusión: ¿merece la pena?
Después de tres semanas usando este sistema, la respuesta es sí. El coche carga con lo que sobra, la factura ha bajado, y dejé de preocuparme por si el ICP saltaba cuando mi mujer encendía el horno mientras yo cargaba.
Mi recomendación si quieres probarlo: empieza con el Shelly PRO 3EM y el blueprint. Eso solo ya te da carga dinámica básica. Añade el ESP32 BLE cuando quieras independizarte de la API de Tesla y controlar el coche localmente. No hace falta montarlo todo el primer día.
Lo que más me costó fue el primer flash del ESP32: la documentación del repo asume que sabes compilar ESPHome, y el paso de descubrir la MAC del Tesla me llevó tres intentos porque el coche se dormía antes de que el listener la capturara. Paciencia con eso.
Si tienes dudas durante el montaje, deja un comentario. Respondo a lo que pueda.
Precios actualizados a mayo 2026. Pueden variar. Este artículo contiene enlaces de afiliado — si compras a través de ellos, nos ayudas a mantener el blog sin coste adicional para ti.