Skip to content

Commit c89915f

Browse files
authored
Ariya fixes (#90)
1 parent 2e05320 commit c89915f

File tree

5 files changed

+25
-26
lines changed

5 files changed

+25
-26
lines changed

custom_components/nissan_connect/kamereon/kamereon.py

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ def __init__(self, data, user_id):
272272
ChargingSpeed.FAST: None,
273273
ChargingSpeed.NORMAL: None,
274274
ChargingSpeed.SLOW: None,
275+
ChargingSpeed.ADAPTIVE: None
275276
}
276277
self.range_hvac_off = None
277278
self.range_hvac_on = None
@@ -640,10 +641,9 @@ def refresh_battery_status(self):
640641
return body
641642

642643
def fetch_battery_status(self):
644+
self.fetch_battery_status_leaf()
643645
if self.model_name == "Ariya":
644-
return self.fetch_battery_status_ariya()
645-
646-
return self.fetch_battery_status_leaf()
646+
self.fetch_battery_status_ariya()
647647

648648
def fetch_battery_status_leaf(self):
649649
"""The battery-status endpoint isn't just for EV's. ICE Nissans publish the range under this!
@@ -671,6 +671,7 @@ def fetch_battery_status_leaf(self):
671671
ChargingSpeed.FAST: battery_data.get('timeRequiredToFullFast'),
672672
ChargingSpeed.NORMAL: battery_data.get('timeRequiredToFullNormal'),
673673
ChargingSpeed.SLOW: battery_data.get('timeRequiredToFullSlow'),
674+
ChargingSpeed.ADAPTIVE: None
674675
}
675676
self.range_hvac_off = battery_data.get('rangeHvacOff')
676677
self.range_hvac_on = battery_data.get('rangeHvacOn')
@@ -703,30 +704,19 @@ def fetch_battery_status_ariya(self):
703704

704705
battery_data = body['data']['attributes']
705706

706-
self.battery_capacity = battery_data.get('batteryCapacity') # kWh
707-
self.battery_level = battery_data.get('batteryLevel') # %
708-
self.battery_temperature = battery_data.get('batteryTemperature') # Fahrenheit?
709-
# same meaning as battery level, different scale. 240 = 100%
710-
self.battery_bar_level = battery_data.get('batteryBarLevel')
711-
self.instantaneous_power = battery_data.get('instantaneousPower') # kW
707+
self.range_hvac_off = None
708+
self.range_hvac_on = battery_data.get('batteryAutonomy') or self.range_hvac_on
709+
712710
self.charging_speed = ChargingSpeed(None)
713711
self.charge_time_required_to_full = {
714-
ChargingSpeed.FAST: battery_data.get('chargingRemainingTime'),
715-
ChargingSpeed.NORMAL: battery_data.get('chargingRemainingTime'),
716-
ChargingSpeed.SLOW: battery_data.get('chargingRemainingTime'),
712+
ChargingSpeed.FAST: None,
713+
ChargingSpeed.NORMAL: None,
714+
ChargingSpeed.SLOW: None,
715+
ChargingSpeed.ADAPTIVE: battery_data.get('chargingRemainingTime') or self.charge_time_required_to_full[ChargingSpeed.NORMAL]
717716
}
718-
self.range_hvac_off = battery_data.get('batteryAutonomy')
719-
self.range_hvac_on = battery_data.get('batteryAutonomy')
720-
721-
# For ICE vehicles, we should get the range at least. If not, dont bother again
722-
if self.range_hvac_on is None and Feature.BATTERY_STATUS not in self.features:
723-
self.battery_supported = False
724-
return
725717

726718
self.plugged_in = PluggedStatus(battery_data.get('plugStatus', 0))
727-
if self.plugged_in == PluggedStatus(1):
728-
self.charging = ChargingStatus(battery_data.get('chargeStatus', 0))
729-
719+
730720
if 'vehiclePlugTimestamp' in battery_data:
731721
self.plugged_in_time = datetime.datetime.fromisoformat(battery_data['vehiclePlugTimestamp'].replace('Z','+00:00'))
732722
if 'vehicleUnplugTimestamp' in battery_data:

custom_components/nissan_connect/kamereon/kamereon_const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class ChargingSpeed(enum.Enum):
6464
NORMAL = 2
6565
FAST = 3
6666
FASTEST = 4
67+
ADAPTIVE = 5
6768

6869

6970
class ChargingStatus(enum.Enum):

custom_components/nissan_connect/sensor.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ async def async_setup_entry(hass, config, async_add_entities):
3232
entities += [RangeSensor(coordinator, data[vehicle], True, imperial_distance),
3333
TimestampSensor(coordinator, data[vehicle], 'battery_status_last_updated', 'last_updated', 'mdi:clock-time-eleven-outline')]
3434
if Feature.BATTERY_STATUS in data[vehicle].features:
35-
entities += [BatteryLevelSensor(coordinator, data[vehicle]),
36-
RangeSensor(coordinator, data[vehicle], False, imperial_distance),
37-
ChargeTimeRequiredSensor(coordinator, data[vehicle], ChargingSpeed.NORMAL),
35+
entities.append(BatteryLevelSensor(coordinator, data[vehicle]))
36+
if data[vehicle].charge_time_required_to_full[ChargingSpeed.NORMAL] is not None:
37+
entities += [ChargeTimeRequiredSensor(coordinator, data[vehicle], ChargingSpeed.NORMAL),
3838
ChargeTimeRequiredSensor(coordinator, data[vehicle], ChargingSpeed.FAST)]
39+
if data[vehicle].charge_time_required_to_full[ChargingSpeed.ADAPTIVE] is not None:
40+
entities.append(ChargeTimeRequiredSensor(coordinator, data[vehicle], ChargingSpeed.ADAPTIVE))
41+
if data[vehicle].range_hvac_off is not None:
42+
entities.append(RangeSensor(coordinator, data[vehicle], False, imperial_distance))
3943
if data[vehicle].internal_temperature is not None:
4044
entities.append(InternalTemperatureSensor(coordinator, data[vehicle]))
4145
if data[vehicle].external_temperature is not None:
@@ -266,6 +270,7 @@ class ChargeTimeRequiredSensor(KamereonEntity, SensorEntity):
266270
ChargingSpeed.FAST: '6kw',
267271
ChargingSpeed.NORMAL: '3kw',
268272
ChargingSpeed.SLOW: '1kw',
273+
ChargingSpeed.ADAPTIVE: 'adaptive'
269274
}
270275

271276
def __init__(self, coordinator, vehicle, charging_speed):

custom_components/nissan_connect/translations/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@
113113
"charge_time_6kw": {
114114
"name": "Charge Time (6kW)"
115115
},
116+
"charge_time_adaptive": {
117+
"name": "Charge Time (adaptive)"
118+
},
116119
"last_updated": {
117120
"name": "Last Updated"
118121
},

tests/test_sensor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def mock_hass():
3030
range_hvac_on=100,
3131
range_hvac_off=120,
3232
total_mileage=5000,
33-
charge_time_required_to_full={ChargingSpeed.NORMAL: 60, ChargingSpeed.FAST: 30},
33+
charge_time_required_to_full={ChargingSpeed.NORMAL: 60, ChargingSpeed.FAST: 30, ChargingSpeed.ADAPTIVE: None},
3434
features=[Feature.BATTERY_STATUS, Feature.DRIVING_JOURNEY_HISTORY]
3535
)
3636
},

0 commit comments

Comments
 (0)