Saltar a contenido

Tesla + HA — qué se puede hacer, qué vale la pena

Tesla nuevo del usuario. La integration HA es completa (sensors + commands), pero el setup tiene fricción. Más importante: la mayoría de las "20 automations Tesla" que internet tira son gimmick. Las que realmente cambian algo son 5-7. Esta página separa señal de ruido.

Contexto

Tu Tesla acaba de llegar. La integration con HA existe en 2026 con tres opciones principales (Fleet oficial, Tessie, Teslemetry). Lo que se puede automatizar es muchísimo; lo que conviene automatizar es bastante menos. Esta página es la curación.

Decisión de integration

Opción A — Tesla Fleet oficial (free pero setup pesado)

  • $0 + $10/mes free credit Tesla API.
  • Requiere: dominio público (o FleetKey.net), Tesla Developer App, virtual key install.
  • Para Tesla post-2023: command signing obligatorio (auto-key gen + public key registration).
  • Setup time realista: 1-3 horas si nunca lo hiciste.

Opción B — Tessie ($5/mes USD aprox)

  • Paste API token en HA integration.
  • Signed commands ready.
  • Polling más frecuente, mejor sleep handling.
  • Setup time: 10 minutos.

Opción C — Teslemetry ($$$)

  • Fleet API + Telemetry stream + Webhooks.
  • Más caro pero más data realtime.
  • Para casos donde necesitás push instead of poll.

Recomendación: arrancá con Tessie. Si dentro de 3 meses valida, evaluar moverse a Fleet oficial DIY para ahorrar la sub. Esto se alinea con la meta "no tinkering": $5/mes vs 3hs de tu tiempo + ongoing maintenance del proxy.

Las automations que valen la pena (5)

Ordenadas por value/effort ratio:

1. Pre-heat / pre-cool antes de salir ★★★

El #1 de Tesla automations. Especialmente brutal en invierno (cabin -5°C → cómodo) o verano (cabin 50°C → tolerable).

automation:
  - alias: "Tesla pre-heat morning weekday"
    trigger:
      - platform: time
        at: '07:45:00'  # 15 min antes de salir
    condition:
      - condition: time
        weekday: [mon, tue, wed, thu, fri]
      - condition: state
        entity_id: device_tracker.tesla_location
        state: 'home'
      - condition: numeric_state
        entity_id: sensor.outside_temp
        below: 10
    action:
      - service: climate.turn_on
        target: { entity_id: climate.tesla_cabin }
      - service: climate.set_temperature
        target: { entity_id: climate.tesla_cabin }
        data: { temperature: 21 }
      - service: select.select_option  # seat heater
        target: { entity_id: select.tesla_seat_heater_left }
        data: { option: 'high' }

Mejor con calendar trigger: si tu próximo meeting está en calendar.work a las X, pre-heat 15 min antes. Más smart que schedule fijo.

ROI: tiempo + comfort + batería preserva mejor cuando se usa con cable enchufado (chupa de la pared, no del battery).

2. Charge optimization según tarifa / solar ★★★

Si tu tarifa es horaria o tenés solar, ESTE es el use case que paga la integración.

automation:
  - alias: "Tesla charge during off-peak only"
    trigger:
      - platform: state
        entity_id: binary_sensor.tesla_plugged_in
        to: 'on'
    action:
      # Set charge limit conservador
      - service: number.set_value
        target: { entity_id: number.tesla_charge_limit }
        data: { value: 80 }
      # Sólo cargar si precio < threshold
      - if:
          - condition: numeric_state
            entity_id: sensor.electricity_price_per_kwh
            above: 0.15
        then:
          - service: switch.turn_off
            entity_id: switch.tesla_charging
        else:
          - service: switch.turn_on
            entity_id: switch.tesla_charging

  # Re-evaluar cada hora
  - alias: "Tesla price check hourly"
    trigger:
      - platform: time_pattern
        minutes: '0'
    condition:
      - condition: state
        entity_id: binary_sensor.tesla_plugged_in
        state: 'on'
      - condition: state
        entity_id: binary_sensor.tesla_charging_complete
        state: 'off'
    action:
      - if:
          - condition: numeric_state
            entity_id: sensor.electricity_price_per_kwh
            above: 0.15
        then:
          - service: switch.turn_off
            entity_id: switch.tesla_charging
        else:
          - service: switch.turn_on
            entity_id: switch.tesla_charging

Ahorro real: con tarifa horaria, $300-500/año típico (ver automation-ideas-energy).

Con solar: redirect surplus solar a charging cuando hay excedente.

automation:
  - alias: "Tesla charge with solar surplus"
    trigger:
      - platform: numeric_state
        entity_id: sensor.solar_surplus_watts
        above: 3000  # nivel para charging meaningful
        for: '00:05:00'
    condition:
      - condition: state
        entity_id: binary_sensor.tesla_plugged_in
        state: 'on'
    action:
      # Ajustar charge current al surplus disponible
      - service: number.set_value
        target: { entity_id: number.tesla_charge_current }
        data:
          value: >
            {{ [(states('sensor.solar_surplus_watts') | float / 240) | round(0), 32] | min }}
      - service: switch.turn_on
        entity_id: switch.tesla_charging

3. Notify si charging stopped unexpectedly ★★

automation:
  - alias: "Tesla charging interrupted alert"
    trigger:
      - platform: state
        entity_id: binary_sensor.tesla_charging
        from: 'on'
        to: 'off'
        for: '00:02:00'
    condition:
      - condition: numeric_state
        entity_id: sensor.tesla_battery_level
        below: 70  # no era completion
    action:
      - service: notify.mobile_app_paulo
        data:
          title: "🔌 Tesla dejó de cargar"
          message: "{{ states('sensor.tesla_battery_level') }}%  ¿cable suelto?"

Catch cuando el cable se aflojó, alguien lo desenchufó, breaker tripped, etc. Tier 2 — no urgent pero no querés enterarte en la mañana que no cargó.

4. Open garage al llegar a casa ★★

automation:
  - alias: "Open garage on Tesla arrival"
    trigger:
      - platform: state
        entity_id: device_tracker.tesla_location
        from: 'not_home'
        to: 'home'
    condition:
      - condition: state
        entity_id: cover.garage
        state: 'closed'
    action:
      - service: cover.open_cover
        target: { entity_id: cover.garage }
      - service: light.turn_on
        target: { entity_id: light.garage }

Trampa común: usar proximity integration en vez de device_tracker para evitar que abra cuando todavía estás a 1km. Usar numeric_state de distance < 100m.

Tesla tiene HomeLink built-in — si tu garage abre con HomeLink ya, esto es redundante. Pero si querés trigger basado en HA (logging, multi-condition), sigue siendo útil.

5. Charge complete notify (no la app, HA mismo) ★

automation:
  - alias: "Tesla charge complete"
    trigger:
      - platform: state
        entity_id: binary_sensor.tesla_charging_complete
        to: 'on'
    action:
      - service: notify.mobile_app_paulo
        data:
          title: "🔋 Tesla cargado"
          message: >
            {{ states('sensor.tesla_battery_level') }}% — range {{ states('sensor.tesla_battery_range') }} km.
            Costo carga: ${{ states('sensor.charge_energy_added_kwh') | float * states('sensor.electricity_avg_price') | float | round(2) }}

La Tesla app también notifica, pero tener data en HA permite combinarla con context (costo, time-of-day pattern).

Las que NO valen la pena (gimmicks)

Honk + flash lights from HA

Cute en demo, nunca útil en práctica. Si tu Tesla está perdido en parking, abrís la Tesla app. No vas a buscar HA Companion para encontrar el auto.

Voice command "abrir Tesla"

Latency: 5-10s vs llave / phone proximity 1s. Es slower que la opción default.

Fart mode

Joke feature. Move on.

Auto-lock al alejarte (cuando Tesla ya lo hace solo)

Tesla auto-locks al alejarte si tenés Walk-Away Lock habilitado. Re-implementarlo en HA = duplicación frágil.

Realtime location tracking detallado

Polling cada 10min ≠ realtime. Si querés realtime, la Tesla app oficial es better. HA sirve para automations triggereadas por estado, no para "watching dot on map".

"Sentry mode on when away"

Tesla tiene esto built-in via geofence in-car. Re-implementar en HA = redundante + más componentes que mantener.

Anti-pattern central

Si la Tesla app ya lo hace mejor, no lo migres a HA. HA gana cuando combina Tesla + otro signal (precio energía, solar surplus, calendar, weather forecast).

Use Tesla integration para automations cross-system, no para reimplementar features que la app ya tiene.

Patrón AI runtime (Q7 use case)

Caso interesante para AI Task:

automation:
  - alias: "Smart charge plan via AI"
    trigger:
      - platform: state
        entity_id: binary_sensor.tesla_plugged_in
        to: 'on'
    action:
      - service: ai_task.generate_data
        data:
          entity_id: ai_task.default
          task: |
            Tesla plugged in. Battery: {{ states('sensor.tesla_battery_level') }}%.
            Departure: {{ states('input_datetime.next_departure') }}.
            Price forecast (24h): {{ states('sensor.electricity_forecast') }}.
            Solar forecast (24h): {{ states('sensor.solar_forecast') }}.

            Recomendá el charge schedule óptimo:
            - Target battery level at departure.
            - Time windows para cargar (off-peak / solar surplus).
            - Reasoning corto.
          structure:
            target_level: int
            charge_windows: list
            reasoning: string
        response_variable: plan
      # Aplicar plan al Tesla
      - service: number.set_value
        target: { entity_id: number.tesla_charge_limit }
        data: { value: "{{ plan.target_level }}" }
      # ... + automations adicionales para activar charging en las windows

Esto es el caso canónico de Q7: AI propone plan, determinista aplica (q7-llm-runtime-strategy-v1). Una vez por día/semana, no per-event. Cost bajo.

Setup recomendado para vos

  1. Hoy / esta semana: instalar Tessie + HA Tessie integration. 10 minutos, working.
  2. Mes 1: validar que aporta las 5 automations Tier S. Si sí, sigue. Si no, considerar Fleet oficial DIY.
  3. Mes 2+: agregar charge optimization con tarifa/solar si aplica.
  4. Mes 3+: AI Task plan generation si valida.

NO comprar Tessie premium tier (es solo para data junkies). El plan básico alcanza.

Failure modes específicos Tesla

Para el catálogo:

  1. Tesla API rate-limited: $10/mes free credit excedido si polling agresivo. Mitigation: aumentar polling interval, usar Tessie que comparte rate.
  2. Virtual key expired: command signing falla. Manual re-register.
  3. Tesla service outage: integration entera caída. Lock physical key as fallback.
  4. Charge command rejected: muchas razones (charging port issue, vehicle settings override). Notify humano, no retry blindly.

Relaciones

Citas / evidencia

Abierto / gaps

  • Pricing Tessie 2026 exacto vs el time investment de Fleet oficial DIY.
  • Patrón de "departure prediction" basado en calendar / historical pattern.
  • Tesla Wall Connector — ¿integration separada o via Tesla Fleet? Documentar.
  • Tesla Powerwall integration — distinto endpoint, mismo Fleet.