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 device = props.installation.device;
|
||||||
|
|
||||||
const OperatingPriorityOptions =
|
const OperatingPriorityOptions =
|
||||||
device === 3 // Growatt
|
device === 3 || device === 4
|
||||||
? ['LoadPriority', 'BatteryPriority', 'GridPriority']
|
? ['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({
|
const [errors, setErrors] = useState({
|
||||||
minimumSoC: false,
|
minimumSoC: false,
|
||||||
gridSetPoint: false
|
gridSetPoint: false
|
||||||
|
|
@ -81,11 +78,17 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
||||||
const { currentUser, setUser } = context;
|
const { currentUser, setUser } = context;
|
||||||
const { product, setProduct } = useContext(ProductIdContext);
|
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>>({
|
const [formValues, setFormValues] = useState<Partial<ConfigurationValues>>({
|
||||||
minimumSoC: props.values.Config.MinSoc,
|
minimumSoC: props.values.Config.MinSoc,
|
||||||
maximumDischargingCurrent: props.values.Config.MaximumChargingCurrent,
|
maximumDischargingCurrent: props.values.Config.MaximumChargingCurrent,
|
||||||
maximumChargingCurrent: props.values.Config.MaximumDischargingCurrent,
|
maximumChargingCurrent: props.values.Config.MaximumDischargingCurrent,
|
||||||
operatingPriority: OperatingPriorityOptions.indexOf(
|
operatingPriority: resolveOperatingPriorityIndex(
|
||||||
props.values.Config.OperatingPriority
|
props.values.Config.OperatingPriority
|
||||||
),
|
),
|
||||||
batteriesCount: props.values.Config.BatteriesCount,
|
batteriesCount: props.values.Config.BatteriesCount,
|
||||||
|
|
@ -113,7 +116,7 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
||||||
minimumSoC: props.values.Config.MinSoc,
|
minimumSoC: props.values.Config.MinSoc,
|
||||||
maximumDischargingCurrent: props.values.Config.MaximumChargingCurrent,
|
maximumDischargingCurrent: props.values.Config.MaximumChargingCurrent,
|
||||||
maximumChargingCurrent: props.values.Config.MaximumDischargingCurrent,
|
maximumChargingCurrent: props.values.Config.MaximumDischargingCurrent,
|
||||||
operatingPriority: OperatingPriorityOptions.indexOf(
|
operatingPriority: resolveOperatingPriorityIndex(
|
||||||
props.values.Config.OperatingPriority
|
props.values.Config.OperatingPriority
|
||||||
),
|
),
|
||||||
batteriesCount: props.values.Config.BatteriesCount,
|
batteriesCount: props.values.Config.BatteriesCount,
|
||||||
|
|
@ -529,10 +532,10 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
||||||
{/* --- Sinexcel + TimeChargeDischarge --- */}
|
{/* --- Sinexcel + BatteryPriority (maps to TimeChargeDischarge on device) --- */}
|
||||||
{device === 4 &&
|
{device === 4 &&
|
||||||
OperatingPriorityOptions[formValues.operatingPriority] ===
|
OperatingPriorityOptions[formValues.operatingPriority] ===
|
||||||
'TimeChargeDischarge' && (
|
'BatteryPriority' && (
|
||||||
<>
|
<>
|
||||||
{/* Power input*/}
|
{/* Power input*/}
|
||||||
<div style={{ marginBottom: '5px' }}>
|
<div style={{ marginBottom: '5px' }}>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue