saic_ismart 2.0.1
saic_ismart: ^2.0.1 copied to clipboard
Dart client for the SAIC iSmart API — MG, Roewe, Maxus/LDV connected vehicles.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased] #
2.0.1 — 2026-06-04 #
Documentation #
- Update roadmap for 2.0.0 — add release entry and rename v1.x to v2.x
2.0.0 — 2026-06-04 #
Removed #
- Built-in status cache (
SaicCache,clearCache(),clearCacheFor(),cache:constructor parameter) — polling frequency is now the caller's responsibility
1.0.2 — 2026-05-30 #
Documentation #
- Remove stale pre-publication banner from README
- Replace static badges with dynamic pub.dev badges (version, license, pub points)
1.0.1 — 2026-05-30 #
Documentation #
- Remove redundant Features section from README — Roadmap already covers version history
- Complete CHANGELOG v1.0.0 entries — all added models, enums, VehicleFeatures getters and fixes now listed
- Update v1.0.0 release date to 2026-05-30
1.0.0 — 2026-05-30 #
Added #
stopFindMyCar(vin)— silences horn and lights after a Find My Car triggeropenTailgate(vin)— opens the tailgate usingVehicleLockId.tailgate(\x02)startBlowing(vin)/startDefrost(vin)— convenience climate wrappers for fan-only and defrost modescontrolHeatedSeats(vin, {driverLevel, passengerLevel})— sets seat heat level via newHeatLevelenum (off,low,medium,high)controlRearWindowHeat(vin, {enable})— turns the rear window heating element on or offcontrolSunroof(vin, {open})— opens or closes the sunroof remotelylogout()— clears the current session token; next API call requires a newlogin()isLoggedIn— returnstruewhen a non-expired session is activetokenExpiration— exposes the current session token's expiry timetokenExpiresIn—Duration?convenience getter for time remaining until token expiry; returnsDuration.zeroif already expiredVehicleModelConfigItemmodel — exposes rawvehicleModelConfigurationitems (itemCode,itemName,itemValue) from the vehicle list responseVehicle.vehicleModelConfiguration— list ofVehicleModelConfigItemparsed fromGET /vehicle/listVehicle.getConfigItem(String itemCode)— convenience lookup returning the first matching item by code, ornullVehicle.series— exposes the vehicle series string (e.g."ZP22 EU","EH32") for powertrain detectionVehicleFeatures— feature detection wrapper onVehiclewith 23 getters:hasSunroof,hasRemoteClimate,hasRemoteControlledSunroof,heatedSeatCapability,isElectricVehicle,hasElectricVehicleFlag,supportsTargetSoc,hasTyrePressureMonitoring,hasExteriorTemperatureSensor,hasInteriorTemperatureSensor,hasBatteryVoltageSensor,hasKeyPositionSensor,hasBonnet,hasBoot,hasEngine,hasBluetoothKey,isRightHandDrive,isLeftHandDrive,doorSensorCount,windowSensorCount,hasAirbags,hasEnergyState; accessible viavehicle.featuresHeatedSeatCapabilityenum —none,onOffOnly,multiLevelVehicleLockIdenum —doors,tailgateHeatLevelenum —off,low,medium,high
Fixed #
code=3(another command in progress, e.g. climate active) andcode=8(feature unavailable on this vehicle) now treated as fatal — throwsSaicApiExceptionimmediately without retry- Retry delay added between vehicle control polling attempts to prevent server hammering on transient errors
0.2.0 — 2026-05-24 #
Added #
- Tyre pressure conversion helpers with confirmed PSI×2 unit (real-world MG3 validation)
- Door, window, lock, bonnet and boot state enums (
DoorStatus,WindowStatus,LockStatus,BonnetStatus,BootStatus) - Typed
VehicleAlertInfomodel from confirmed ASN.1 schema (id,value0–255, max 64 alerts) - Multi-region support:
australia,india,turkey,restOfWorldadded toSaicRegion - Structured exception hierarchy:
SaicException,SaicAuthException,SaicSessionConflictException,SaicApiException,SaicTimeoutException,SaicNetworkException - Unit conversion helpers:
mileageToKm,mileageToMiles,fuelRangeToKm,temperatureCelsius,batteryVoltageRaw - Convenience getters on
BasicVehicleStatus:mileageKm,fuelRangeKm,exteriorTemperatureCelsius,interiorTemperatureCelsius,lockState,driverDoorStatus,frontLeftTyrePressureBar, etc.
0.1.0 — 2026-05-23 #
Added #
- Authentication & token refresh (EU region)
getVehicles()— list vehicles linked to accountgetVehicleStatus(vin)— GPS, lock state, mileage, full vehicle status- Single-session conflict detection
- Full AES-128-CBC + HMAC-SHA-256 crypto pipeline
- Tested in production on MG3 Hybrid EU