Skip to content

Commit e4f4c13

Browse files
magiornanomad
authored andcommitted
Added preliminary support to handle Charge current limit
1 parent 4c14716 commit e4f4c13

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

src/saic_ismart_client/common_model.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,42 @@ class ScheduledChargingMode(Enum):
4949
UNTIL_CONFIGURED_TIME = 1
5050

5151

52+
class ChargeCurrentLimitCode(Enum):
53+
C_IGNORE = 0
54+
C_6A = 1
55+
C_8A = 2
56+
C_16A = 3
57+
C_MAX = 4
58+
59+
@staticmethod
60+
def to_code(limit: str):
61+
match limit.upper():
62+
case "6A":
63+
return ChargeCurrentLimitCode.C_6A
64+
case "8A":
65+
return ChargeCurrentLimitCode.C_8A
66+
case "16A":
67+
return ChargeCurrentLimitCode.C_16A
68+
case "MAX":
69+
return ChargeCurrentLimitCode.C_MAX
70+
case _:
71+
raise ValueError(f'Unknown charge current limit: {limit}')
72+
73+
def get_limit(self) -> str:
74+
match self:
75+
case ChargeCurrentLimitCode.C_6A:
76+
return "6A"
77+
case ChargeCurrentLimitCode.C_8A:
78+
return "8A"
79+
case ChargeCurrentLimitCode.C_16A:
80+
return "16A"
81+
case ChargeCurrentLimitCode.C_MAX:
82+
return "Max"
83+
case _:
84+
raise ValueError(f'Unknown charge current limit code: {limit}')
85+
86+
87+
5288
class TargetBatteryCode(Enum):
5389
P_40 = 1
5490
P_50 = 2

src/saic_ismart_client/saic_api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import requests as requests
1111

1212
from saic_ismart_client.common_model import AbstractMessage, AbstractMessageBody, Header, MessageBodyV2, MessageV2, \
13-
ScheduledChargingMode, TargetBatteryCode
13+
ScheduledChargingMode, TargetBatteryCode, ChargeCurrentLimitCode
1414
from saic_ismart_client.ota_v1_1.Message import MessageCoderV11
1515
from saic_ismart_client.ota_v1_1.data_model import AbortSendMessageReq, AlarmSwitch, AlarmSwitchReq, Message, \
1616
MessageBodyV11, MessageListReq, MessageListResp, MessageV11, MpAlarmSettingType, MpUserLoggingInReq, \
@@ -639,10 +639,10 @@ def start_charging(self, vin_info: VinInfo, event_id: str = None) -> MessageV30:
639639
def start_charging_with_retry(self, vin_info: VinInfo) -> MessageV30:
640640
return self.handle_retry(self.start_charging, vin_info)
641641

642-
def set_target_battery_soc(self, target_soc: TargetBatteryCode, vin_info: VinInfo, event_id: str = None):
642+
def set_target_battery_soc(self, target_soc: TargetBatteryCode, vin_info: VinInfo, charge_current_limit: ChargeCurrentLimitCode = ChargeCurrentLimitCode.C_IGNORE, event_id: str = None):
643643
chrg_setng_req = OtaChrgSetngReq()
644644
chrg_setng_req.onBdChrgTrgtSOCReq = target_soc.value
645-
chrg_setng_req.altngChrgCrntReq = 4
645+
chrg_setng_req.altngChrgCrntReq = charge_current_limit.value
646646
chrg_setng_req.tboxV2XSpSOCReq = 0
647647
chrg_setng_req_msg = MessageV30(MessageBodyV30(), chrg_setng_req)
648648
application_id = '516'

0 commit comments

Comments
 (0)