unified Sinexcel and Growatt's operating priority
This commit is contained in:
parent
37380e581f
commit
66803a2b34
|
|
@ -46,20 +46,17 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
const device = props.installation.device;
|
||||
|
||||
const OperatingPriorityOptions =
|
||||
device === 3 // Growatt
|
||||
device === 3 || device === 4
|
||||
? ['LoadPriority', 'BatteryPriority', 'GridPriority']
|
||||
: device === 4 // Sinexcel
|
||||
? [
|
||||
'SpontaneousSelfUse',
|
||||
'TimeChargeDischarge',
|
||||
// 'TimeOfUsePowerPrice',
|
||||
// 'DisasterStandby',
|
||||
// 'ManualControl',
|
||||
'PvPriorityCharging',
|
||||
// 'PrioritySellElectricity'
|
||||
]
|
||||
: [];
|
||||
|
||||
// Sinexcel S3 stores WorkingMode enum names — map them to Growatt-style display names
|
||||
const sinexcelS3ToDisplayName: Record<string, string> = {
|
||||
'SpontaneousSelfUse': 'LoadPriority',
|
||||
'TimeChargeDischarge': 'BatteryPriority',
|
||||
'PvPriorityCharging': 'GridPriority',
|
||||
};
|
||||
|
||||
const [errors, setErrors] = useState({
|
||||
minimumSoC: false,
|
||||
gridSetPoint: false
|
||||
|
|
@ -81,11 +78,17 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
const { currentUser, setUser } = context;
|
||||
const { product, setProduct } = useContext(ProductIdContext);
|
||||
|
||||
// Resolve S3 OperatingPriority to display index (Sinexcel uses different enum names)
|
||||
const resolveOperatingPriorityIndex = (s3Value: string) => {
|
||||
const displayName = device === 4 ? (sinexcelS3ToDisplayName[s3Value] ?? s3Value) : s3Value;
|
||||
return OperatingPriorityOptions.indexOf(displayName);
|
||||
};
|
||||
|
||||
const [formValues, setFormValues] = useState<Partial<ConfigurationValues>>({
|
||||
minimumSoC: props.values.Config.MinSoc,
|
||||
maximumDischargingCurrent: props.values.Config.MaximumChargingCurrent,
|
||||
maximumChargingCurrent: props.values.Config.MaximumDischargingCurrent,
|
||||
operatingPriority: OperatingPriorityOptions.indexOf(
|
||||
operatingPriority: resolveOperatingPriorityIndex(
|
||||
props.values.Config.OperatingPriority
|
||||
),
|
||||
batteriesCount: props.values.Config.BatteriesCount,
|
||||
|
|
@ -113,7 +116,7 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
minimumSoC: props.values.Config.MinSoc,
|
||||
maximumDischargingCurrent: props.values.Config.MaximumChargingCurrent,
|
||||
maximumChargingCurrent: props.values.Config.MaximumDischargingCurrent,
|
||||
operatingPriority: OperatingPriorityOptions.indexOf(
|
||||
operatingPriority: resolveOperatingPriorityIndex(
|
||||
props.values.Config.OperatingPriority
|
||||
),
|
||||
batteriesCount: props.values.Config.BatteriesCount,
|
||||
|
|
@ -529,10 +532,10 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
|||
</div>
|
||||
</>
|
||||
|
||||
{/* --- Sinexcel + TimeChargeDischarge --- */}
|
||||
{/* --- Sinexcel + BatteryPriority (maps to TimeChargeDischarge on device) --- */}
|
||||
{device === 4 &&
|
||||
OperatingPriorityOptions[formValues.operatingPriority] ===
|
||||
'TimeChargeDischarge' && (
|
||||
'BatteryPriority' && (
|
||||
<>
|
||||
{/* Power input*/}
|
||||
<div style={{ marginBottom: '5px' }}>
|
||||
|
|
|
|||
Loading…
Reference in New Issue