diff --git a/typescript/frontend-marios2/src/content/dashboards/SodiohomeInstallations/SodistoreHomeConfiguration.tsx b/typescript/frontend-marios2/src/content/dashboards/SodiohomeInstallations/SodistoreHomeConfiguration.tsx index e6fbe1582..de4c2ef21 100644 --- a/typescript/frontend-marios2/src/content/dashboards/SodiohomeInstallations/SodistoreHomeConfiguration.tsx +++ b/typescript/frontend-marios2/src/content/dashboards/SodiohomeInstallations/SodistoreHomeConfiguration.tsx @@ -46,19 +46,16 @@ 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 = { + 'SpontaneousSelfUse': 'LoadPriority', + 'TimeChargeDischarge': 'BatteryPriority', + 'PvPriorityCharging': 'GridPriority', + }; const [errors, setErrors] = useState({ minimumSoC: 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>({ 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) { - {/* --- Sinexcel + TimeChargeDischarge --- */} + {/* --- Sinexcel + BatteryPriority (maps to TimeChargeDischarge on device) --- */} {device === 4 && OperatingPriorityOptions[formValues.operatingPriority] === - 'TimeChargeDischarge' && ( + 'BatteryPriority' && ( <> {/* Power input*/}