Skip to main content

Tesla Wall Connector (Gen 3)

Local-LAN telemetry driver for the Tesla Wall Connector Gen 3. The driver polls the unit's published /api/1/vitals, /api/1/lifetime, and /api/1/version endpoints over plain HTTP and surfaces the state, per-phase electrical values, session energy, and lifetime counters as device attributes.

This driver is monitoring-only. The Wall Connector does not expose a public local control API — current-limit, start, and stop are reserved for the Tesla mobile app and the protected vehicle-bus pairing flow. If you need to throttle or schedule charging programmatically, use a separate load-shed device (smart breaker, contactor) in front of the Wall Connector.

Prerequisites

  • Tesla Wall Connector Gen 3 (model 1457768-xx-x or newer). Gen 2 / HPWC units use a different LCD-only firmware and do not expose this API.
  • Firmware 23.x or newer is recommended. Older firmware exposes the same paths with a slightly smaller vitals payload; missing fields are tolerated by the driver.
  • The Wall Connector must be joined to the same LAN as the GEM server. The unit's own setup AP (used during commissioning) is not the same network it operates on once joined to your Wi-Fi.
  • A DHCP reservation on the unit's MAC is strongly recommended. The unit advertises itself via mDNS as TeslaWallConnector_<serial>.local, but this driver does not use mDNS — it talks to a fixed IP.

Setup steps

  1. Find the Wall Connector's IP on your DHCP server (look for hostname TeslaWallConnector_*) and pin it via a DHCP reservation.
  2. Open http://<ip>/api/1/version in a browser to confirm the API responds. You should see a JSON document with firmware_version and part_number. If you get a connection refused or a redirect to the setup AP, the unit has not finished joining the LAN.
  3. In GEM, Admin → Devices → Add Device, pick driver tesla_wall_connector, set the ip attribute. Save.
  4. Watch the device row's attributes appear over the next few status cycles: evse_state, vehicle_connected, session_energy_wh, etc.

Attribute reference

Required

AttributeTypeDescription
ipstringLAN IP of the Wall Connector.

Optional

AttributeTypeDefaultDescription
portint80HTTP port.
status_intervalint15000Poll interval in ms. The Wall Connector tolerates as low as 5000ms.
request_timeoutint10000HTTP request timeout in ms.

Telemetry attributes (set by the driver)

AttributeTypeSource
evse_statestringvitals.evse_state mapped: starting, ready, connected, charging, reduced_charge, stopped, fault, error, updating. Unknown codes pass through as state_<n>.
contactor_closedboolTrue when the unit's contactor has closed (vehicle drawing or about to draw current).
vehicle_connectedboolTrue when a vehicle is plugged in (regardless of charging state).
session_secondsintElapsed time on the current session. Resets to 0 when the vehicle disconnects.
session_energy_whintEnergy delivered in the current session. Resets on disconnect.
grid_voltage_vfloatMeasured grid voltage.
grid_frequency_hzfloatMeasured grid frequency.
vehicle_current_afloatTotal current drawn by the vehicle.
voltage_a_v / voltage_b_v / voltage_c_vfloatPer-phase voltage (single-phase installs only populate A).
current_a_a / current_b_a / current_c_afloatPer-phase current.
charging_power_wintSum of per-phase V×I. 0 when not charging.
handle_temp_c / pcba_temp_c / mcu_temp_cfloatInternal temperatures. Useful for thermal-foldback diagnosis.
uptime_secondsintSeconds since the unit last booted.
current_alert_countintCount of active fault/alert codes. 0 in normal operation.
current_alertsstringComma-joined alert names when present. Omitted when empty.
lifetime_energy_whintCumulative energy delivered (from /api/1/lifetime).
lifetime_charge_startsintCumulative count of charge starts.
lifetime_sessionsintCumulative count of charge sessions.
lifetime_uptime_sintCumulative seconds of unit uptime.
lifetime_thermal_foldbacksintCumulative count of thermal-foldback events.
lifetime_avg_session_energy_whintAverage energy per session (lifetime).

The lifetime counters are polled at ~1/10 the cadence of vitals (every ~10 status cycles) to keep load on the unit low.

Zone address format

This driver does not use zones (supports_zones: false). All telemetry lives on the device row.

Known limitations

  • No control commands. No way to set current limit, start, or stop a charge from the local API. Tesla intentionally did not expose this and we won't reverse-engineer the protected pairing flow.
  • Gen 2 / HPWC not supported. Older Wall Connectors have no IP interface.
  • evse_state mapping is firmware-specific. Codes 1, 2, 4, 5, 6, 7, 8, 9, 11 are mapped to labels. Anything else surfaces as state_<n> so you can spot new firmware variants in attribute history.
  • No event push. Telemetry is polling-only. The default 15s cadence means a brief plug-in / plug-out can be missed; lower status_interval if that matters for your use case.

Troubleshooting

  • Connection refused on port 80. The unit has not fully joined the LAN, or it's still on its setup AP. Re-run the Tesla One app commissioning flow.
  • evse_state stays connected but no current draws. The vehicle is plugged in but not requesting charge (charge limit reached, scheduled charging deferred, locked). This is normal.
  • current_alert_count > 0. Check current_alerts for the comma-joined alert names. Common ones include WCD_ALERT_GROUND_FAULT, WCD_ALERT_THERMAL_LIMIT_REACHED. These pass through verbatim from the unit.
  • Attributes flicker between values. Per-phase voltage / current normally fluctuate by a few tenths even when not charging. Use coarser thresholds on attribute_triggers (e.g., >= 5A instead of > 0A) to avoid trigger storms.