diff --git a/custom_components/kia_uvo/KiaUvoAPIUSA.py b/custom_components/kia_uvo/KiaUvoAPIUSA.py index 52e61ea4..0bd18011 100644 --- a/custom_components/kia_uvo/KiaUvoAPIUSA.py +++ b/custom_components/kia_uvo/KiaUvoAPIUSA.py @@ -99,6 +99,8 @@ def __init__( self.last_action_tracked = True self.last_action_xid = None self.last_action_completed = False + self.supports_soc_range = False + # Randomly generate a plausible device id on startup self.device_id = ( "".join( diff --git a/custom_components/kia_uvo/KiaUvoApiImpl.py b/custom_components/kia_uvo/KiaUvoApiImpl.py index 34267a44..fed35c72 100644 --- a/custom_components/kia_uvo/KiaUvoApiImpl.py +++ b/custom_components/kia_uvo/KiaUvoApiImpl.py @@ -30,6 +30,7 @@ def __init__( self.region = region self.brand = brand self.last_action_tracked = False + self.supports_soc_range = True def login(self) -> Token: pass diff --git a/custom_components/kia_uvo/sensor.py b/custom_components/kia_uvo/sensor.py index e2a26d02..4c95a012 100644 --- a/custom_components/kia_uvo/sensor.py +++ b/custom_components/kia_uvo/sensor.py @@ -107,6 +107,48 @@ async def async_setup_entry(hass, config_entry, async_add_entities): None, ) ) + INSTRUMENTS.append( + ( + "targetSOCACCapacity", + "Target Capacity of Charge AC", + "vehicleStatus.evStatus.targetSOC.1.targetSOClevel", + PERCENTAGE, + "mdi:car-electric", + None, + ) + ) + INSTRUMENTS.append( + ( + "targetSOCDCCapacity", + "Target Capacity of Charge DC", + "vehicleStatus.evStatus.targetSOC.0.targetSOClevel", + PERCENTAGE, + "mdi:car-electric", + None, + ) + ) + + if vehicle.kia_uvo_api.supports_soc_range: + INSTRUMENTS.append( + ( + "targetSOCACRange", + "Target Range of Charge AC", + "vehicleStatus.evStatus.targetSOC.1.dte.rangeByFuel.totalAvailableRange.value", + DYNAMIC_DISTANCE_UNIT, + "mdi:ev-station", + None, + ) + ) + INSTRUMENTS.append( + ( + "targetSOCDCRange", + "Target Range of Charge DC", + "vehicleStatus.evStatus.targetSOC.0.dte.rangeByFuel.totalAvailableRange.value", + DYNAMIC_DISTANCE_UNIT, + "mdi:ev-station", + None, + ) + ) if vehicle.engine_type is VEHICLE_ENGINE_TYPE.PHEV: INSTRUMENTS.append( @@ -181,7 +223,6 @@ async def async_setup_entry(hass, config_entry, async_add_entities): DEVICE_CLASS_BATTERY, ) ) - INSTRUMENTS.append( ( "temperatureSetpoint", @@ -256,6 +297,10 @@ def __init__( @property def state(self): + if self._id.startswith("targetSOC"): + self.vehicle.get_child_value("vehicleStatus.evStatus.targetSOC").sort( + key=lambda x: x["plugType"] + ) if self._id == "lastUpdated": return dt_util.as_local(self.vehicle.last_updated).isoformat()