====== Vehicle control (HVAC, SoC…) ====== Via the companion-MCU route ([[canbus|CAN bus]]), apps bind the CAN system service and use its interface to **command** the HVAC and **read** decoded vehicle values. The most useful discovered signals: ^ What ^ How (discovered signal) ^ | A/C on/off | ''sendCmd(103, 0/1)'' | | Driver temperature | ''sendCmd(107, code)'' | | Fan speed | ''sendCmd(100, speed)'' | | Front defrost | ''sendCmd(104, …)'' | | Seat heating | ''sendCmd(110…112, …)'' | | State of charge (%) | ''getInt(3335)'' | | Pack A / Pack B SoC | ''getInt(3457)'' / ''getInt(3460)'' | | HV voltage / current | ''getInt(3455)'' / ''getInt(3456)'' | | Range (km) | ''getInt(3461)'' | | Charge-cable connected | ''getInt(3337)'' | | Speed | ''getInt(3454)'' × 0.05625 km/h | | Traffic-sign state | ''getInt(3505)'' (3 = sign recognized, 4 = over-speed warning) | ===== The key constraint for remote climate ===== There is **no precondition / remote-climate command** and **no "time-to-full" value** on the head-unit side. A/C control here is **live HVAC** — only effective while the HV bus is powered (ignition on). **Parked pre-conditioning is a VCU/TBox function**, not something the head unit can do. "Time to full" therefore has to be **estimated** from SoC, pack capacity (~63 kWh) and live HV power (voltage × current), which //are// readable over CAN.