translated all Sinexcel and Growatt Alarm now it also shows in the frontend of UI
This commit is contained in:
parent
25280afb8f
commit
3bffe70a75
|
|
@ -44,6 +44,9 @@
|
||||||
<None Update="Resources/s3cmd.py">
|
<None Update="Resources/s3cmd.py">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
<None Update="Resources/AlarmTranslations.*.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
<None Update=".env">
|
<None Update=".env">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
|
|
||||||
|
|
@ -827,28 +827,28 @@ public class Controller : ControllerBase
|
||||||
/// Usage: GET /api/TestDiagnoseError?errorDescription=SomeAlarm
|
/// Usage: GET /api/TestDiagnoseError?errorDescription=SomeAlarm
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpGet(nameof(TestDiagnoseError))]
|
[HttpGet(nameof(TestDiagnoseError))]
|
||||||
public async Task<ActionResult> TestDiagnoseError(string errorDescription = "AbnormalGridVoltage")
|
public async Task<ActionResult> TestDiagnoseError(string errorDescription = "AbnormalGridVoltage", string language = "en")
|
||||||
{
|
{
|
||||||
// 1. Try knowledge base first
|
// 1. Try static lookup (KB for English, pre-generated translations for others)
|
||||||
var kbResult = AlarmKnowledgeBase.TryGetDiagnosis(errorDescription);
|
var staticResult = DiagnosticService.TryGetTranslation(errorDescription, language);
|
||||||
if (kbResult is not null)
|
if (staticResult is not null)
|
||||||
{
|
{
|
||||||
return Ok(new
|
return Ok(new
|
||||||
{
|
{
|
||||||
Source = "KnowledgeBase",
|
Source = "KnowledgeBase",
|
||||||
Alarm = errorDescription,
|
Alarm = errorDescription,
|
||||||
MistralEnabled = DiagnosticService.IsEnabled,
|
MistralEnabled = DiagnosticService.IsEnabled,
|
||||||
kbResult.Explanation,
|
staticResult.Explanation,
|
||||||
kbResult.Causes,
|
staticResult.Causes,
|
||||||
kbResult.NextSteps
|
staticResult.NextSteps
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. If not in KB, try Mistral directly with a test prompt
|
// 2. If not found, try Mistral with the correct language
|
||||||
if (!DiagnosticService.IsEnabled)
|
if (!DiagnosticService.IsEnabled)
|
||||||
return Ok(new { Source = "None", Alarm = errorDescription, Message = "Not in knowledge base and Mistral API key not configured." });
|
return Ok(new { Source = "None", Alarm = errorDescription, Message = "Not in knowledge base and Mistral API key not configured." });
|
||||||
|
|
||||||
var aiResult = await DiagnosticService.TestCallMistralAsync(errorDescription);
|
var aiResult = await DiagnosticService.TestCallMistralAsync(errorDescription, language);
|
||||||
if (aiResult is null)
|
if (aiResult is null)
|
||||||
return Ok(new { Source = "MistralFailed", Alarm = errorDescription, Message = "Mistral API call failed or returned empty." });
|
return Ok(new { Source = "MistralFailed", Alarm = errorDescription, Message = "Mistral API call failed or returned empty." });
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,231 @@
|
||||||
|
{
|
||||||
|
"alarm_AbnormalGridVoltage": "Unnormale Netzspannung",
|
||||||
|
"alarm_AbnormalGridFrequency": "Unnormale Netzfrequenz",
|
||||||
|
"alarm_InvertedSequenceOfGridVoltage": "Falsche Phasenreihenfolge",
|
||||||
|
"alarm_GridVoltagePhaseLoss": "Phasenausfall im Netz",
|
||||||
|
"alarm_AbnormalGridCurrent": "Unnormaler Netzstrom",
|
||||||
|
"alarm_AbnormalOutputVoltage": "Ungewöhnliche Ausgangsspannung",
|
||||||
|
"alarm_AbnormalOutputFrequency": "Ungewöhnliche Ausgangsfrequenz",
|
||||||
|
"alarm_AbnormalNullLine": "Fehlerhafter Nullleiter",
|
||||||
|
"alarm_AbnormalOffGridOutputVoltage": "Ungewöhnliche Backup-Spannung",
|
||||||
|
"alarm_ExcessivelyHighAmbientTemperature": "Zu hohe Umgebungstemperatur",
|
||||||
|
"alarm_ExcessiveRadiatorTemperature": "Überhitzter Kühlkörper",
|
||||||
|
"alarm_PcbOvertemperature": "Überhitzte Leiterplatte",
|
||||||
|
"alarm_DcConverterOvertemperature": "Überhitzter DC-Wandler",
|
||||||
|
"alarm_InverterOvertemperatureAlarm": "Warnung: Überhitzung",
|
||||||
|
"alarm_InverterOvertemperature": "Wechselrichter überhitzt",
|
||||||
|
"alarm_DcConverterOvertemperatureAlarm": "Übertemperaturalarm DC-Wandler",
|
||||||
|
"alarm_InsulationFault": "Isolationsfehler",
|
||||||
|
"alarm_LeakageProtectionFault": "Leckschutzfehler",
|
||||||
|
"alarm_AbnormalLeakageSelfCheck": "Anomaler Leckstrom-Selbsttest",
|
||||||
|
"alarm_PoorGrounding": "Schlechte Erdung",
|
||||||
|
"alarm_FanFault": "Lüfterfehler",
|
||||||
|
"alarm_AuxiliaryPowerFault": "Hilfsstromversorgung Fehler",
|
||||||
|
"alarm_ModelCapacityFault": "Modellkapazitätsfehler",
|
||||||
|
"alarm_AbnormalLightningArrester": "Überspannungsschutz Fehler",
|
||||||
|
"alarm_IslandProtection": "Inselbetrieb Schutz",
|
||||||
|
"alarm_Battery1NotConnected": "Batterie 1 nicht verbunden",
|
||||||
|
"alarm_Battery1Overvoltage": "Batterie 1 Überspannung",
|
||||||
|
"alarm_Battery1Undervoltage": "Batterie 1 Unterspannung",
|
||||||
|
"alarm_Battery1DischargeEnd": "Batterie 1 Entladung beendet",
|
||||||
|
"alarm_Battery1Inverted": "Batterie 1 Polarität vertauscht",
|
||||||
|
"alarm_Battery1OverloadTimeout": "Batterie 1 Überlastung",
|
||||||
|
"alarm_Battery1SoftStartFailure": "Batterie 1 Startfehler",
|
||||||
|
"alarm_Battery1PowerTubeFault": "Batterie 1 Leistungsteil defekt",
|
||||||
|
"alarm_Battery1InsufficientPower": "Batterie 1 Leistung unzureichend",
|
||||||
|
"alarm_Battery1BackupProhibited": "Batterie 1 Backup gesperrt",
|
||||||
|
"alarm_Battery2NotConnected": "Batterie 2 nicht verbunden",
|
||||||
|
"alarm_Battery2Overvoltage": "Batterie 2 Überspannung",
|
||||||
|
"alarm_Battery2Undervoltage": "Batterie 2 Unterspannung",
|
||||||
|
"alarm_Battery2DischargeEnd": "Batterie 2 Entladung beendet",
|
||||||
|
"alarm_Battery2Inverted": "Batterie 2 falsch angeschlossen",
|
||||||
|
"alarm_Battery2OverloadTimeout": "Batterie 2 Überlastung",
|
||||||
|
"alarm_Battery2SoftStartFailure": "Batterie 2 Startfehler",
|
||||||
|
"alarm_Battery2PowerTubeFault": "Batterie 2 Leistungsteil defekt",
|
||||||
|
"alarm_Battery2InsufficientPower": "Batterie 2 Leistung unzureichend",
|
||||||
|
"alarm_Battery2BackupProhibited": "Batterie 2 Backup gesperrt",
|
||||||
|
"alarm_LithiumBattery1ChargeForbidden": "Lithium-Batterie 1 Ladeverbot",
|
||||||
|
"alarm_LithiumBattery1DischargeForbidden": "Lithium-Batterie 1 Entladeverbot",
|
||||||
|
"alarm_LithiumBattery2ChargeForbidden": "Lithium-Batterie 2 Ladeverbot",
|
||||||
|
"alarm_LithiumBattery2DischargeForbidden": "Lithium-Batterie 2 Entladeverbot",
|
||||||
|
"alarm_LithiumBattery1Full": "Lithium-Batterie 1 voll",
|
||||||
|
"alarm_LithiumBattery1DischargeEnd": "Lithium-Batterie 1 entladen",
|
||||||
|
"alarm_LithiumBattery2Full": "Lithium-Batterie 2 voll",
|
||||||
|
"alarm_LithiumBattery2DischargeEnd": "Lithium-Batterie 2 entladen",
|
||||||
|
"alarm_LeadBatteryTemperatureAbnormality": "Batterietemperatur abnormal",
|
||||||
|
"alarm_BatteryAccessMethodError": "Batteriezugriffsfehler",
|
||||||
|
"alarm_Pv1NotAccessed": "PV1 nicht erreichbar",
|
||||||
|
"alarm_Pv1Overvoltage": "PV1 Überspannung",
|
||||||
|
"alarm_AbnormalPv1CurrentSharing": "Ungleichmäßiger PV1-Strom",
|
||||||
|
"alarm_Pv1PowerTubeFault": "PV1 Leistungstubus defekt",
|
||||||
|
"alarm_Pv1SoftStartFailure": "PV1 Soft-Start fehlgeschlagen",
|
||||||
|
"alarm_Pv1OverloadTimeout": "PV1-Überlastung",
|
||||||
|
"alarm_Pv1InsufficientPower": "PV1-Schwacher Strom",
|
||||||
|
"alarm_Photovoltaic1Overcurrent": "PV1-Überstrom",
|
||||||
|
"alarm_Pv2NotAccessed": "PV2-Nicht erkannt",
|
||||||
|
"alarm_Pv2Overvoltage": "PV2-Überspannung",
|
||||||
|
"alarm_AbnormalPv2CurrentSharing": "Ungewöhnliche Stromverteilung PV2",
|
||||||
|
"alarm_Pv2PowerTubeFault": "PV2-Leistungsrohrfehler",
|
||||||
|
"alarm_Pv2SoftStartFailure": "PV2-Softstart fehlgeschlagen",
|
||||||
|
"alarm_Pv2OverloadTimeout": "PV2-Überlastung Timeout",
|
||||||
|
"alarm_Pv2InsufficientPower": "Unzureichende Leistung PV2",
|
||||||
|
"alarm_Pv3NotConnected": "PV3 nicht verbunden",
|
||||||
|
"alarm_Pv3Overvoltage": "PV3 Überspannung",
|
||||||
|
"alarm_Pv3AverageCurrentAnomaly": "PV3 Stromanomalie",
|
||||||
|
"alarm_Pv3PowerTubeFailure": "PV3 Leistungselektronik defekt",
|
||||||
|
"alarm_Pv3SoftStartFailure": "PV3 Startfehler",
|
||||||
|
"alarm_Pv3OverloadTimeout": "PV3-Überlastung",
|
||||||
|
"alarm_Pv3ReverseConnection": "PV3-Falschpolung",
|
||||||
|
"alarm_Pv4NotConnected": "PV4 Nicht Verbunden",
|
||||||
|
"alarm_Pv4Overvoltage": "PV4 Überspannung",
|
||||||
|
"alarm_Pv4AverageCurrentAnomaly": "PV4 Stromanomalie",
|
||||||
|
"alarm_Pv4PowerTubeFailure": "PV4-Leistungsrohr defekt",
|
||||||
|
"alarm_Pv4SoftStartFailure": "PV4-Softstart fehlgeschlagen",
|
||||||
|
"alarm_Pv4OverloadTimeout": "PV4-Überlastung",
|
||||||
|
"alarm_Pv4ReverseConnection": "PV4 falsch angeschlossen",
|
||||||
|
"alarm_InsufficientPhotovoltaicPower": "Zu wenig Solarstrom",
|
||||||
|
"alarm_DcBusOvervoltage": "DC-Bus Überspannung",
|
||||||
|
"alarm_DcBusUndervoltage": "DC-Bus Unterspannung",
|
||||||
|
"alarm_DcBusVoltageUnbalance": "DC-Bus Spannungsungleichgewicht",
|
||||||
|
"alarm_BusSlowOvervoltage": "Langsame DC-Bus Überspannung",
|
||||||
|
"alarm_HardwareBusOvervoltage": "Hardware DC-Bus Überspannung",
|
||||||
|
"alarm_BusSoftStartFailure": "Fehler beim sanften Start",
|
||||||
|
"alarm_InverterPowerTubeFault": "Wechselrichter-Leistungshalbleiter defekt",
|
||||||
|
"alarm_HardwareOvercurrent": "Hardware-Überstrom",
|
||||||
|
"alarm_DcConverterOvervoltage": "DC-Wandler Überspannung",
|
||||||
|
"alarm_DcConverterHardwareOvervoltage": "DC-Wandler Hardware-Überspannung",
|
||||||
|
"alarm_DcConverterOvercurrent": "DC-Wandler Überstrom",
|
||||||
|
"alarm_DcConverterHardwareOvercurrent": "DC-Wandler Hardware-Überstrom",
|
||||||
|
"alarm_DcConverterResonatorOvercurrent": "DC-Wandler Resonanz-Überstrom",
|
||||||
|
"alarm_SystemOutputOverload": "Systemausgang überlastet",
|
||||||
|
"alarm_InverterOverload": "Wechselrichter überlastet",
|
||||||
|
"alarm_InverterOverloadTimeout": "Wechselrichter-Überlastung",
|
||||||
|
"alarm_LoadPowerOverload": "Überlastung der Lastleistung",
|
||||||
|
"alarm_BalancedCircuitOverloadTimeout": "Phasenausgleich-Überlastung",
|
||||||
|
"alarm_InverterSoftStartFailure": "Wechselrichter-Softstart-Fehler",
|
||||||
|
"alarm_Dsp1ParameterSettingFault": "DSP-Parameter-Fehler",
|
||||||
|
"alarm_Dsp2ParameterSettingFault": "DSP2 Parameterfehler",
|
||||||
|
"alarm_DspVersionCompatibilityFault": "DSP-Versionen nicht kompatibel",
|
||||||
|
"alarm_CpldVersionCompatibilityFault": "CPLD-Version nicht kompatibel",
|
||||||
|
"alarm_CpldCommunicationFault": "CPLD-Kommunikationsfehler",
|
||||||
|
"alarm_DspCommunicationFault": "DSP-Kommunikationsfehler",
|
||||||
|
"alarm_OutputVoltageDcOverlimit": "DC-Spannung zu hoch",
|
||||||
|
"alarm_OutputCurrentDcOverlimit": "DC-Strom zu hoch",
|
||||||
|
"alarm_RelaySelfCheckFails": "Relais-Selbsttest fehlgeschlagen",
|
||||||
|
"alarm_InverterRelayOpen": "Wechselrichter-Relais offen",
|
||||||
|
"alarm_InverterRelayShortCircuit": "Wechselrichter-Relais Kurzschluss",
|
||||||
|
"alarm_OpenCircuitOfPowerGridRelay": "Netzrelais offen",
|
||||||
|
"alarm_ShortCircuitOfPowerGridRelay": "Netzrelais kurzgeschlossen",
|
||||||
|
"alarm_GeneratorRelayOpenCircuit": "Generatorrelais offen",
|
||||||
|
"alarm_GeneratorRelayShortCircuit": "Generatorrelais kurzgeschlossen",
|
||||||
|
"alarm_AbnormalInverter": "Wechselrichter abnormal",
|
||||||
|
"alarm_ParallelCommunicationAlarm": "Parallelkommunikationsalarm",
|
||||||
|
"alarm_ParallelModuleMissing": "Parallelmodul fehlt",
|
||||||
|
"alarm_DuplicateMachineNumbersForParallelModules": "Doppelte Gerätenummern",
|
||||||
|
"alarm_ParameterConflictInParallelModule": "Parameterkonflikt im Parallelmodul",
|
||||||
|
"alarm_SystemDerating": "Systemleistung reduziert",
|
||||||
|
"alarm_PvAccessMethodErrorAlarm": "PV-Zugriffsfehler",
|
||||||
|
"alarm_ReservedAlarms4": "Reservierter Alarm 4",
|
||||||
|
"alarm_ReservedAlarms5": "Reservierter Alarm 5",
|
||||||
|
"alarm_ReverseMeterConnection": "Zähler falsch angeschlossen",
|
||||||
|
"alarm_InverterSealPulse": "Wechselrichter-Leistungsbegrenzung",
|
||||||
|
"alarm_AbnormalDieselGeneratorVoltage": "Ungewöhnliche Dieselgenerator-Spannung",
|
||||||
|
"alarm_AbnormalDieselGeneratorFrequency": "Ungewöhnliche Dieselgenerator-Frequenz",
|
||||||
|
"alarm_DieselGeneratorVoltageReverseSequence": "Falsche Phasenfolge des Generators",
|
||||||
|
"alarm_DieselGeneratorVoltageOutOfPhase": "Generator nicht synchronisiert",
|
||||||
|
"alarm_GeneratorOverload": "Generator überlastet",
|
||||||
|
"alarm_StringFault": "PV-String-Fehler",
|
||||||
|
"alarm_PvStringPidQuickConnectAbnormal": "PV-String-Anschluss defekt",
|
||||||
|
"alarm_DcSpdFunctionAbnormal": "DC-Überspannungsschutz defekt",
|
||||||
|
"alarm_PvShortCircuited": "PV-String kurzgeschlossen",
|
||||||
|
"alarm_PvBoostDriverAbnormal": "PV-Boost-Treiber defekt",
|
||||||
|
"alarm_AcSpdFunctionAbnormal": "AC-Überspannungsschutz defekt",
|
||||||
|
"alarm_DcFuseBlown": "DC-Sicherung durchgebrannt",
|
||||||
|
"alarm_DcInputVoltageTooHigh": "DC-Eingangsspannung zu hoch",
|
||||||
|
"alarm_PvReversed": "PV-Polarität vertauscht",
|
||||||
|
"alarm_PidFunctionAbnormal": "PID-Schutzfunktion gestört",
|
||||||
|
"alarm_PvStringDisconnected": "PV-String getrennt",
|
||||||
|
"alarm_PvStringCurrentUnbalanced": "PV-String Strom unausgeglichen",
|
||||||
|
"alarm_NoUtilityGrid": "Kein Stromnetz",
|
||||||
|
"alarm_GridVoltageOutOfRange": "Netzspannung außerhalb des Bereichs",
|
||||||
|
"alarm_GridFrequencyOutOfRange": "Netzfrequenz außerhalb des Bereichs",
|
||||||
|
"alarm_Overload": "Überlastung",
|
||||||
|
"alarm_MeterDisconnected": "Stromzähler getrennt",
|
||||||
|
"alarm_MeterReverselyConnected": "Zähler falsch angeschlossen",
|
||||||
|
"alarm_LinePeVoltageAbnormal": "Abnormale PE-Spannung",
|
||||||
|
"alarm_PhaseSequenceError": "Phasenfolgefehler",
|
||||||
|
"alarm_FanFailure": "Lüfterausfall",
|
||||||
|
"alarm_MeterAbnormal": "Störungsanzeige Zähler",
|
||||||
|
"alarm_OptimizerCommunicationAbnormal": "Kommunikationsstörung Optimierer",
|
||||||
|
"alarm_OverTemperature": "Überhitzung",
|
||||||
|
"alarm_OverTemperatureAlarm": "Überhitzungswarnung",
|
||||||
|
"alarm_NtcTemperatureSensorBroken": "Temperatursensor defekt",
|
||||||
|
"alarm_SyncSignalAbnormal": "Synchronisationsfehler",
|
||||||
|
"alarm_GridStartupConditionsNotMet": "Netzstartbedingungen nicht erfüllt",
|
||||||
|
"alarm_BatteryCommunicationFailure": "Batteriekommunikation fehlgeschlagen",
|
||||||
|
"alarm_BatteryDisconnected": "Batterie getrennt",
|
||||||
|
"alarm_BatteryVoltageTooHigh": "Batteriespannung zu hoch",
|
||||||
|
"alarm_BatteryVoltageTooLow": "Batteriespannung zu niedrig",
|
||||||
|
"alarm_BatteryReverseConnected": "Batterie falsch angeschlossen",
|
||||||
|
"alarm_LeadAcidTempSensorDisconnected": "Temperatursensor nicht angeschlossen",
|
||||||
|
"alarm_BatteryTemperatureOutOfRange": "Batterietemperatur außerhalb des Bereichs",
|
||||||
|
"alarm_BmsFault": "BMS-Fehler",
|
||||||
|
"alarm_LithiumBatteryOverload": "Batterie-Überlastung",
|
||||||
|
"alarm_BmsCommunicationAbnormal": "BMS-Kommunikationsfehler",
|
||||||
|
"alarm_BatterySpdAbnormal": "Batterie-Überspannungsschutz",
|
||||||
|
"alarm_OutputDcComponentBiasAbnormal": "DC-Versatz im Ausgang",
|
||||||
|
"alarm_DcComponentOverHighOutputVoltage": "DC-Komponente zu hohe Ausgangsspannung",
|
||||||
|
"alarm_OffGridOutputVoltageTooLow": "Netzunabhängige Ausgangsspannung zu niedrig",
|
||||||
|
"alarm_OffGridOutputVoltageTooHigh": "Netzunabhängige Ausgangsspannung zu hoch",
|
||||||
|
"alarm_OffGridOutputOverCurrent": "Netzunabhängiger Ausgangsüberstrom",
|
||||||
|
"alarm_OffGridOutputOverload": "Netzunabhängiger Ausgang überlastet",
|
||||||
|
"alarm_BalancedCircuitAbnormal": "Phasenausgleich gestört",
|
||||||
|
"alarm_ExportLimitationFailSafe": "Exportbegrenzung Notaus",
|
||||||
|
"alarm_DcBiasAbnormal": "DC-Vorspannung abnormal",
|
||||||
|
"alarm_HighDcComponentOutputCurrent": "Hohe DC-Komponente im Ausgangsstrom",
|
||||||
|
"alarm_BusVoltageSamplingAbnormal": "Spannungsmessung defekt",
|
||||||
|
"alarm_RelayFault": "Relaisfehler",
|
||||||
|
"alarm_BusVoltageAbnormal": "Gleichspannung abnormal",
|
||||||
|
"alarm_InternalCommunicationFailure": "Interne Kommunikation ausgefallen",
|
||||||
|
"alarm_TemperatureSensorDisconnected": "Temperatursensor getrennt",
|
||||||
|
"alarm_IgbtDriveFault": "IGBT-Ansteuerungsfehler",
|
||||||
|
"alarm_EepromError": "EEPROM-Fehler",
|
||||||
|
"alarm_AuxiliaryPowerAbnormal": "Hilfsstromversorgung abnormal",
|
||||||
|
"alarm_DcAcOvercurrentProtection": "Überstromschutz aktiviert",
|
||||||
|
"alarm_CommunicationProtocolMismatch": "Kommunikationsprotokoll-Fehler",
|
||||||
|
"alarm_DspComFirmwareMismatch": "Firmware-Inkompatibilität DSP/COM",
|
||||||
|
"alarm_DspSoftwareHardwareMismatch": "DSP-Software-Hardware-Inkompatibilität",
|
||||||
|
"alarm_CpldAbnormal": "CPLD-Fehler",
|
||||||
|
"alarm_RedundancySamplingInconsistent": "Inkonsistente redundante Messungen",
|
||||||
|
"alarm_PwmPassThroughSignalFailure": "PWM-Signalweg ausgefallen",
|
||||||
|
"alarm_AfciSelfTestFailure": "AFCI-Selbsttest fehlgeschlagen",
|
||||||
|
"alarm_PvCurrentSamplingAbnormal": "PV-Strommessung abnormal",
|
||||||
|
"alarm_AcCurrentSamplingAbnormal": "AC-Strommessung abnormal",
|
||||||
|
"alarm_BusSoftbootFailure": "DC-Bus-Vorstart fehlgeschlagen",
|
||||||
|
"alarm_EpoFault": "EPO-Fehler (Notaus)",
|
||||||
|
"alarm_MonitoringChipBootVerificationFailed": "Überwachungs-Chip Startfehler",
|
||||||
|
"alarm_BmsCommunicationFailure": "BMS-Kommunikationsfehler",
|
||||||
|
"alarm_BmsChargeDischargeFailure": "BMS-Lade-/Entladefehler",
|
||||||
|
"alarm_BatteryVoltageLow": "Batteriespannung zu niedrig",
|
||||||
|
"alarm_BatteryVoltageHigh": "Batteriespannung zu hoch",
|
||||||
|
"alarm_BatteryTemperatureAbnormal": "Batterietemperatur ungewöhnlich",
|
||||||
|
"alarm_BatteryReversed": "Batterie verkehrt herum",
|
||||||
|
"alarm_BatteryOpenCircuit": "Batteriekreis offen",
|
||||||
|
"alarm_BatteryOverloadProtection": "Batterieüberlastungsschutz",
|
||||||
|
"alarm_Bus2VoltageAbnormal": "Bus2-Spannung ungewöhnlich",
|
||||||
|
"alarm_BatteryChargeOcp": "Batterieladung Überstrom",
|
||||||
|
"alarm_BatteryDischargeOcp": "Batterieentladung Überstrom",
|
||||||
|
"alarm_BatterySoftStartFailed": "Batterie-Softstart fehlgeschlagen",
|
||||||
|
"alarm_EpsOutputShortCircuited": "EPS-Ausgang kurzgeschlossen",
|
||||||
|
"alarm_OffGridBusVoltageLow": "Netzunabhängige Busspannung zu niedrig",
|
||||||
|
"alarm_OffGridTerminalVoltageAbnormal": "Abnormale Spannung am Netzausgang",
|
||||||
|
"alarm_SoftStartFailed": "Sanfter Start fehlgeschlagen",
|
||||||
|
"alarm_OffGridOutputVoltageAbnormal": "Abnormale Ausgangsspannung im Netzmodus",
|
||||||
|
"alarm_BalancedCircuitSelfTestFailed": "Ausgleichsschaltungstest fehlgeschlagen",
|
||||||
|
"alarm_HighDcComponentOutputVoltage": "Hohe Gleichspannungskomponente im Ausgang",
|
||||||
|
"alarm_OffGridParallelSignalAbnormal": "Parallelsignalstörung",
|
||||||
|
"alarm_AFCIFault": "Lichtbogenfehler",
|
||||||
|
"alarm_GFCIHigh": "Erhöhter Fehlerstrom",
|
||||||
|
"alarm_PVVoltageHigh": "PV-Spannung zu hoch",
|
||||||
|
"alarm_OffGridBusVoltageTooLow": "Off-Grid-Busspannung zu niedrig"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,231 @@
|
||||||
|
{
|
||||||
|
"alarm_AbnormalGridVoltage": "Tension réseau anormale",
|
||||||
|
"alarm_AbnormalGridFrequency": "Fréquence réseau anormale",
|
||||||
|
"alarm_InvertedSequenceOfGridVoltage": "Séquence de tension inversée",
|
||||||
|
"alarm_GridVoltagePhaseLoss": "Perte de phase réseau",
|
||||||
|
"alarm_AbnormalGridCurrent": "Courant réseau anormal",
|
||||||
|
"alarm_AbnormalOutputVoltage": "Tension de sortie anormale",
|
||||||
|
"alarm_AbnormalOutputFrequency": "Fréquence de sortie anormale",
|
||||||
|
"alarm_AbnormalNullLine": "Ligne neutre anormale",
|
||||||
|
"alarm_AbnormalOffGridOutputVoltage": "Tension de sortie hors réseau anormale",
|
||||||
|
"alarm_ExcessivelyHighAmbientTemperature": "Température ambiante trop élevée",
|
||||||
|
"alarm_ExcessiveRadiatorTemperature": "Température excessive du radiateur",
|
||||||
|
"alarm_PcbOvertemperature": "Température excessive PCB",
|
||||||
|
"alarm_DcConverterOvertemperature": "Température excessive convertisseur DC",
|
||||||
|
"alarm_InverterOvertemperatureAlarm": "Alarme température onduleur",
|
||||||
|
"alarm_InverterOvertemperature": "Température onduleur excessive",
|
||||||
|
"alarm_DcConverterOvertemperatureAlarm": "Alarme surchauffe convertisseur DC",
|
||||||
|
"alarm_InsulationFault": "Défaut d'isolation",
|
||||||
|
"alarm_LeakageProtectionFault": "Défaut protection fuite",
|
||||||
|
"alarm_AbnormalLeakageSelfCheck": "Auto-test fuite anormale",
|
||||||
|
"alarm_PoorGrounding": "Mise à la terre insuffisante",
|
||||||
|
"alarm_FanFault": "Défaut du ventilateur",
|
||||||
|
"alarm_AuxiliaryPowerFault": "Défaut d'alimentation auxiliaire",
|
||||||
|
"alarm_ModelCapacityFault": "Défaut de configuration",
|
||||||
|
"alarm_AbnormalLightningArrester": "Paratonnerre défectueux",
|
||||||
|
"alarm_IslandProtection": "Protection d'îlotage",
|
||||||
|
"alarm_Battery1NotConnected": "Batterie 1 non connectée",
|
||||||
|
"alarm_Battery1Overvoltage": "Tension batterie 1 trop élevée",
|
||||||
|
"alarm_Battery1Undervoltage": "Tension batterie 1 trop basse",
|
||||||
|
"alarm_Battery1DischargeEnd": "Fin de décharge batterie 1",
|
||||||
|
"alarm_Battery1Inverted": "Polarité batterie 1 inversée",
|
||||||
|
"alarm_Battery1OverloadTimeout": "Dépassement de charge Batterie 1",
|
||||||
|
"alarm_Battery1SoftStartFailure": "Échec démarrage Batterie 1",
|
||||||
|
"alarm_Battery1PowerTubeFault": "Défaut électronique Batterie 1",
|
||||||
|
"alarm_Battery1InsufficientPower": "Puissance insuffisante Batterie 1",
|
||||||
|
"alarm_Battery1BackupProhibited": "Sauvegarde interdite Batterie 1",
|
||||||
|
"alarm_Battery2NotConnected": "Batterie 2 non connectée",
|
||||||
|
"alarm_Battery2Overvoltage": "Tension batterie 2 élevée",
|
||||||
|
"alarm_Battery2Undervoltage": "Tension batterie 2 basse",
|
||||||
|
"alarm_Battery2DischargeEnd": "Fin décharge batterie 2",
|
||||||
|
"alarm_Battery2Inverted": "Polarité batterie 2 inversée",
|
||||||
|
"alarm_Battery2OverloadTimeout": "Dépassement de charge Batterie 2",
|
||||||
|
"alarm_Battery2SoftStartFailure": "Échec démarrage Batterie 2",
|
||||||
|
"alarm_Battery2PowerTubeFault": "Défaut électronique Batterie 2",
|
||||||
|
"alarm_Battery2InsufficientPower": "Puissance insuffisante Batterie 2",
|
||||||
|
"alarm_Battery2BackupProhibited": "Sauvegarde interdite Batterie 2",
|
||||||
|
"alarm_LithiumBattery1ChargeForbidden": "Charge batterie lithium 1 interdite",
|
||||||
|
"alarm_LithiumBattery1DischargeForbidden": "Décharge batterie lithium 1 interdite",
|
||||||
|
"alarm_LithiumBattery2ChargeForbidden": "Charge batterie lithium 2 interdite",
|
||||||
|
"alarm_LithiumBattery2DischargeForbidden": "Décharge batterie lithium 2 interdite",
|
||||||
|
"alarm_LithiumBattery1Full": "Batterie lithium 1 pleine",
|
||||||
|
"alarm_LithiumBattery1DischargeEnd": "Fin de décharge batterie lithium 1",
|
||||||
|
"alarm_LithiumBattery2Full": "Batterie lithium 2 pleine",
|
||||||
|
"alarm_LithiumBattery2DischargeEnd": "Fin de décharge batterie lithium 2",
|
||||||
|
"alarm_LeadBatteryTemperatureAbnormality": "Température anormale batterie plomb",
|
||||||
|
"alarm_BatteryAccessMethodError": "Erreur de méthode d'accès batterie",
|
||||||
|
"alarm_Pv1NotAccessed": "Chaîne PV1 non accessible",
|
||||||
|
"alarm_Pv1Overvoltage": "Survoltage PV1",
|
||||||
|
"alarm_AbnormalPv1CurrentSharing": "Partage de courant PV1 anormal",
|
||||||
|
"alarm_Pv1PowerTubeFault": "Défaut du tube de puissance PV1",
|
||||||
|
"alarm_Pv1SoftStartFailure": "Échec de démarrage doux PV1",
|
||||||
|
"alarm_Pv1OverloadTimeout": "Dépassement de charge PV1",
|
||||||
|
"alarm_Pv1InsufficientPower": "Puissance PV1 insuffisante",
|
||||||
|
"alarm_Photovoltaic1Overcurrent": "Surintensité PV1",
|
||||||
|
"alarm_Pv2NotAccessed": "Chaîne PV2 inaccessible",
|
||||||
|
"alarm_Pv2Overvoltage": "Survoltage PV2",
|
||||||
|
"alarm_AbnormalPv2CurrentSharing": "Partage de courant anormal PV2",
|
||||||
|
"alarm_Pv2PowerTubeFault": "Défaillance du tube de puissance PV2",
|
||||||
|
"alarm_Pv2SoftStartFailure": "Échec de démarrage progressif PV2",
|
||||||
|
"alarm_Pv2OverloadTimeout": "Dépassement de charge PV2",
|
||||||
|
"alarm_Pv2InsufficientPower": "Puissance insuffisante PV2",
|
||||||
|
"alarm_Pv3NotConnected": "PV3 non connecté",
|
||||||
|
"alarm_Pv3Overvoltage": "Survoltage PV3",
|
||||||
|
"alarm_Pv3AverageCurrentAnomaly": "Anomalie courant PV3",
|
||||||
|
"alarm_Pv3PowerTubeFailure": "Défaillance tube PV3",
|
||||||
|
"alarm_Pv3SoftStartFailure": "Échec démarrage PV3",
|
||||||
|
"alarm_Pv3OverloadTimeout": "Dépassement de charge PV3",
|
||||||
|
"alarm_Pv3ReverseConnection": "Connexion inversée PV3",
|
||||||
|
"alarm_Pv4NotConnected": "Chaîne PV4 non connectée",
|
||||||
|
"alarm_Pv4Overvoltage": "Survoltage PV4",
|
||||||
|
"alarm_Pv4AverageCurrentAnomaly": "Anomalie de courant PV4",
|
||||||
|
"alarm_Pv4PowerTubeFailure": "Défaillance du tube de puissance PV4",
|
||||||
|
"alarm_Pv4SoftStartFailure": "Échec du démarrage progressif PV4",
|
||||||
|
"alarm_Pv4OverloadTimeout": "Dépassement de charge PV4",
|
||||||
|
"alarm_Pv4ReverseConnection": "Connexion inversée PV4",
|
||||||
|
"alarm_InsufficientPhotovoltaicPower": "Puissance photovoltaïque insuffisante",
|
||||||
|
"alarm_DcBusOvervoltage": "Tension DC trop élevée",
|
||||||
|
"alarm_DcBusUndervoltage": "Tension DC trop basse",
|
||||||
|
"alarm_DcBusVoltageUnbalance": "Déséquilibre tension DC",
|
||||||
|
"alarm_BusSlowOvervoltage": "Tension DC lente excessive",
|
||||||
|
"alarm_HardwareBusOvervoltage": "Tension DC critique",
|
||||||
|
"alarm_BusSoftStartFailure": "Échec démarrage progressif",
|
||||||
|
"alarm_InverterPowerTubeFault": "Défaut tube de puissance",
|
||||||
|
"alarm_HardwareOvercurrent": "Surintensité matérielle",
|
||||||
|
"alarm_DcConverterOvervoltage": "Survoltage convertisseur DC",
|
||||||
|
"alarm_DcConverterHardwareOvervoltage": "Survoltage matériel convertisseur DC",
|
||||||
|
"alarm_DcConverterOvercurrent": "Surintensité convertisseur CC",
|
||||||
|
"alarm_DcConverterHardwareOvercurrent": "Surintensité matérielle convertisseur CC",
|
||||||
|
"alarm_DcConverterResonatorOvercurrent": "Surintensité résonateur convertisseur CC",
|
||||||
|
"alarm_SystemOutputOverload": "Surcharge de sortie système",
|
||||||
|
"alarm_InverterOverload": "Surcharge onduleur",
|
||||||
|
"alarm_InverterOverloadTimeout": "Dépassement de charge de l'onduleur",
|
||||||
|
"alarm_LoadPowerOverload": "Surcharge de puissance de charge",
|
||||||
|
"alarm_BalancedCircuitOverloadTimeout": "Dépassement de charge du circuit équilibré",
|
||||||
|
"alarm_InverterSoftStartFailure": "Échec de démarrage progressif de l'onduleur",
|
||||||
|
"alarm_Dsp1ParameterSettingFault": "Défaillance de paramétrage DSP 1",
|
||||||
|
"alarm_Dsp2ParameterSettingFault": "Paramètre DSP2 incorrect",
|
||||||
|
"alarm_DspVersionCompatibilityFault": "Incompatibilité version DSP",
|
||||||
|
"alarm_CpldVersionCompatibilityFault": "Incompatibilité version CPLD",
|
||||||
|
"alarm_CpldCommunicationFault": "Échec communication CPLD",
|
||||||
|
"alarm_DspCommunicationFault": "Échec communication DSP",
|
||||||
|
"alarm_OutputVoltageDcOverlimit": "Tension de sortie DC excessive",
|
||||||
|
"alarm_OutputCurrentDcOverlimit": "Courant de sortie DC excessif",
|
||||||
|
"alarm_RelaySelfCheckFails": "Auto-test relais échoué",
|
||||||
|
"alarm_InverterRelayOpen": "Relais de l'onduleur ouvert",
|
||||||
|
"alarm_InverterRelayShortCircuit": "Relais de l'onduleur en court-circuit",
|
||||||
|
"alarm_OpenCircuitOfPowerGridRelay": "Relais du réseau ouvert",
|
||||||
|
"alarm_ShortCircuitOfPowerGridRelay": "Court-circuit du relais réseau",
|
||||||
|
"alarm_GeneratorRelayOpenCircuit": "Relais du générateur ouvert",
|
||||||
|
"alarm_GeneratorRelayShortCircuit": "Court-circuit du relais générateur",
|
||||||
|
"alarm_AbnormalInverter": "Onduleur anormal",
|
||||||
|
"alarm_ParallelCommunicationAlarm": "Alarme de communication parallèle",
|
||||||
|
"alarm_ParallelModuleMissing": "Module parallèle manquant",
|
||||||
|
"alarm_DuplicateMachineNumbersForParallelModules": "Numéros de machine en double",
|
||||||
|
"alarm_ParameterConflictInParallelModule": "Conflit de paramètres parallèle",
|
||||||
|
"alarm_SystemDerating": "Réduction de puissance du système",
|
||||||
|
"alarm_PvAccessMethodErrorAlarm": "Erreur méthode d'accès PV",
|
||||||
|
"alarm_ReservedAlarms4": "Alarme réservée 4",
|
||||||
|
"alarm_ReservedAlarms5": "Alarme réservée 5",
|
||||||
|
"alarm_ReverseMeterConnection": "Connexion du compteur inversée",
|
||||||
|
"alarm_InverterSealPulse": "Impulsion de scellement de l'onduleur",
|
||||||
|
"alarm_AbnormalDieselGeneratorVoltage": "Tension anormale du générateur diesel",
|
||||||
|
"alarm_AbnormalDieselGeneratorFrequency": "Fréquence anormale du générateur diesel",
|
||||||
|
"alarm_DieselGeneratorVoltageReverseSequence": "Séquence de phase inversée du générateur",
|
||||||
|
"alarm_DieselGeneratorVoltageOutOfPhase": "Déphasage du générateur",
|
||||||
|
"alarm_GeneratorOverload": "Surcharge du générateur",
|
||||||
|
"alarm_StringFault": "Défaut de chaîne",
|
||||||
|
"alarm_PvStringPidQuickConnectAbnormal": "Connexion rapide anormale",
|
||||||
|
"alarm_DcSpdFunctionAbnormal": "Problème de protection DC",
|
||||||
|
"alarm_PvShortCircuited": "Court-circuit PV",
|
||||||
|
"alarm_PvBoostDriverAbnormal": "Problème de convertisseur",
|
||||||
|
"alarm_AcSpdFunctionAbnormal": "Problème de protection contre les surtensions AC",
|
||||||
|
"alarm_DcFuseBlown": "Fusible DC grillé",
|
||||||
|
"alarm_DcInputVoltageTooHigh": "Tension DC d'entrée trop élevée",
|
||||||
|
"alarm_PvReversed": "Polarité PV inversée",
|
||||||
|
"alarm_PidFunctionAbnormal": "Problème de fonction PID",
|
||||||
|
"alarm_PvStringDisconnected": "Chaîne PV déconnectée",
|
||||||
|
"alarm_PvStringCurrentUnbalanced": "Déséquilibre de courant PV",
|
||||||
|
"alarm_NoUtilityGrid": "Réseau électrique absent",
|
||||||
|
"alarm_GridVoltageOutOfRange": "Tension réseau hors plage",
|
||||||
|
"alarm_GridFrequencyOutOfRange": "Fréquence réseau hors plage",
|
||||||
|
"alarm_Overload": "Surcharge",
|
||||||
|
"alarm_MeterDisconnected": "Compteur déconnecté",
|
||||||
|
"alarm_MeterReverselyConnected": "Compteur inversé",
|
||||||
|
"alarm_LinePeVoltageAbnormal": "Tension anormale",
|
||||||
|
"alarm_PhaseSequenceError": "Séquence de phase erronée",
|
||||||
|
"alarm_FanFailure": "Défaillance du ventilateur",
|
||||||
|
"alarm_MeterAbnormal": "Compteur anormal",
|
||||||
|
"alarm_OptimizerCommunicationAbnormal": "Communication optimiseur anormale",
|
||||||
|
"alarm_OverTemperature": "Température excessive",
|
||||||
|
"alarm_OverTemperatureAlarm": "Alarme température élevée",
|
||||||
|
"alarm_NtcTemperatureSensorBroken": "Capteur de température défectueux",
|
||||||
|
"alarm_SyncSignalAbnormal": "Signal de synchronisation anormal",
|
||||||
|
"alarm_GridStartupConditionsNotMet": "Conditions de démarrage réseau non remplies",
|
||||||
|
"alarm_BatteryCommunicationFailure": "Échec de communication batterie",
|
||||||
|
"alarm_BatteryDisconnected": "Batterie déconnectée",
|
||||||
|
"alarm_BatteryVoltageTooHigh": "Tension batterie trop élevée",
|
||||||
|
"alarm_BatteryVoltageTooLow": "Tension batterie trop basse",
|
||||||
|
"alarm_BatteryReverseConnected": "Batterie branchée à l'envers",
|
||||||
|
"alarm_LeadAcidTempSensorDisconnected": "Capteur température batterie plomb désactivé",
|
||||||
|
"alarm_BatteryTemperatureOutOfRange": "Température batterie hors plage",
|
||||||
|
"alarm_BmsFault": "Défaillance BMS",
|
||||||
|
"alarm_LithiumBatteryOverload": "Surcharge batterie lithium",
|
||||||
|
"alarm_BmsCommunicationAbnormal": "Communication BMS anormale",
|
||||||
|
"alarm_BatterySpdAbnormal": "Défaillance SPD batterie",
|
||||||
|
"alarm_OutputDcComponentBiasAbnormal": "Biais DC de sortie anormal",
|
||||||
|
"alarm_DcComponentOverHighOutputVoltage": "Tension de sortie trop élevée",
|
||||||
|
"alarm_OffGridOutputVoltageTooLow": "Tension de sortie hors réseau trop basse",
|
||||||
|
"alarm_OffGridOutputVoltageTooHigh": "Tension de sortie hors réseau trop élevée",
|
||||||
|
"alarm_OffGridOutputOverCurrent": "Courant de sortie hors réseau trop élevé",
|
||||||
|
"alarm_OffGridOutputOverload": "Surcharge sortie hors réseau",
|
||||||
|
"alarm_BalancedCircuitAbnormal": "Circuit équilibré anormal",
|
||||||
|
"alarm_ExportLimitationFailSafe": "Sécurité limite d'exportation",
|
||||||
|
"alarm_DcBiasAbnormal": "Biais DC anormal",
|
||||||
|
"alarm_HighDcComponentOutputCurrent": "Composante DC élevée courant de sortie",
|
||||||
|
"alarm_BusVoltageSamplingAbnormal": "Tension d'alimentation anormale",
|
||||||
|
"alarm_RelayFault": "Défaillance du relais",
|
||||||
|
"alarm_BusVoltageAbnormal": "Tension d'alimentation anormale",
|
||||||
|
"alarm_InternalCommunicationFailure": "Échec de communication interne",
|
||||||
|
"alarm_TemperatureSensorDisconnected": "Capteur de température déconnecté",
|
||||||
|
"alarm_IgbtDriveFault": "Défaillance de l'IGBT",
|
||||||
|
"alarm_EepromError": "Erreur EEPROM",
|
||||||
|
"alarm_AuxiliaryPowerAbnormal": "Alimentation auxiliaire anormale",
|
||||||
|
"alarm_DcAcOvercurrentProtection": "Protection contre les surintensités",
|
||||||
|
"alarm_CommunicationProtocolMismatch": "Incompatibilité de protocole",
|
||||||
|
"alarm_DspComFirmwareMismatch": "Incompatibilité firmware DSP/COM",
|
||||||
|
"alarm_DspSoftwareHardwareMismatch": "Incompatibilité logiciel DSP/matériel",
|
||||||
|
"alarm_CpldAbnormal": "CPLD anormal",
|
||||||
|
"alarm_RedundancySamplingInconsistent": "Échantillonnage redondant incohérent",
|
||||||
|
"alarm_PwmPassThroughSignalFailure": "Échec signal PWM",
|
||||||
|
"alarm_AfciSelfTestFailure": "Échec auto-test AFCI",
|
||||||
|
"alarm_PvCurrentSamplingAbnormal": "Mesure PV anormale",
|
||||||
|
"alarm_AcCurrentSamplingAbnormal": "Mesure AC anormale",
|
||||||
|
"alarm_BusSoftbootFailure": "Échec démarrage DC",
|
||||||
|
"alarm_EpoFault": "Défaillance EPO",
|
||||||
|
"alarm_MonitoringChipBootVerificationFailed": "Échec vérification démarrage",
|
||||||
|
"alarm_BmsCommunicationFailure": "Échec communication BMS",
|
||||||
|
"alarm_BmsChargeDischargeFailure": "Échec charge/décharge BMS",
|
||||||
|
"alarm_BatteryVoltageLow": "Tension batterie faible",
|
||||||
|
"alarm_BatteryVoltageHigh": "Tension batterie élevée",
|
||||||
|
"alarm_BatteryTemperatureAbnormal": "Température anormale de la batterie",
|
||||||
|
"alarm_BatteryReversed": "Batterie inversée",
|
||||||
|
"alarm_BatteryOpenCircuit": "Circuit batterie ouvert",
|
||||||
|
"alarm_BatteryOverloadProtection": "Protection contre la surcharge",
|
||||||
|
"alarm_Bus2VoltageAbnormal": "Tension anormale Bus2",
|
||||||
|
"alarm_BatteryChargeOcp": "Surintensité charge batterie",
|
||||||
|
"alarm_BatteryDischargeOcp": "Surintensité décharge batterie",
|
||||||
|
"alarm_BatterySoftStartFailed": "Démarrage en douceur échoué",
|
||||||
|
"alarm_EpsOutputShortCircuited": "Circuit de secours en court-circuit",
|
||||||
|
"alarm_OffGridBusVoltageLow": "Tension bus hors réseau basse",
|
||||||
|
"alarm_OffGridTerminalVoltageAbnormal": "Tension anormale terminal hors réseau",
|
||||||
|
"alarm_SoftStartFailed": "Démarrage progressif échoué",
|
||||||
|
"alarm_OffGridOutputVoltageAbnormal": "Tension de sortie hors réseau anormale",
|
||||||
|
"alarm_BalancedCircuitSelfTestFailed": "Autotest circuit équilibré échoué",
|
||||||
|
"alarm_HighDcComponentOutputVoltage": "Tension de sortie à composante CC élevée",
|
||||||
|
"alarm_OffGridParallelSignalAbnormal": "Signal parallèle hors réseau anormal",
|
||||||
|
"alarm_AFCIFault": "Défaillance AFCI",
|
||||||
|
"alarm_GFCIHigh": "Courant de défaut élevé",
|
||||||
|
"alarm_PVVoltageHigh": "Tension PV élevée",
|
||||||
|
"alarm_OffGridBusVoltageTooLow": "Tension du bus hors réseau trop faible"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,231 @@
|
||||||
|
{
|
||||||
|
"alarm_AbnormalGridVoltage": "Tensione di rete anomala",
|
||||||
|
"alarm_AbnormalGridFrequency": "Frequenza di rete anomala",
|
||||||
|
"alarm_InvertedSequenceOfGridVoltage": "Sequenza di fase invertita",
|
||||||
|
"alarm_GridVoltagePhaseLoss": "Mancanza di fase rete",
|
||||||
|
"alarm_AbnormalGridCurrent": "Corrente di rete anomala",
|
||||||
|
"alarm_AbnormalOutputVoltage": "Tensione di uscita anomala",
|
||||||
|
"alarm_AbnormalOutputFrequency": "Frequenza di uscita anomala",
|
||||||
|
"alarm_AbnormalNullLine": "Linea neutra anomala",
|
||||||
|
"alarm_AbnormalOffGridOutputVoltage": "Tensione di uscita in standby anomala",
|
||||||
|
"alarm_ExcessivelyHighAmbientTemperature": "Temperatura ambientale troppo alta",
|
||||||
|
"alarm_ExcessiveRadiatorTemperature": "Temperatura radiatore troppo alta",
|
||||||
|
"alarm_PcbOvertemperature": "Scheda elettronica troppo calda",
|
||||||
|
"alarm_DcConverterOvertemperature": "Sovratemperatura convertitore DC",
|
||||||
|
"alarm_InverterOvertemperatureAlarm": "Allarme surriscaldamento inverter",
|
||||||
|
"alarm_InverterOvertemperature": "Surriscaldamento inverter",
|
||||||
|
"alarm_DcConverterOvertemperatureAlarm": "Allarme sovratemperatura convertitore DC",
|
||||||
|
"alarm_InsulationFault": "Guasto isolamento",
|
||||||
|
"alarm_LeakageProtectionFault": "Guasto protezione dispersione",
|
||||||
|
"alarm_AbnormalLeakageSelfCheck": "Autocontrollo perdite anomalo",
|
||||||
|
"alarm_PoorGrounding": "Messa a terra insufficiente",
|
||||||
|
"alarm_FanFault": "Guasto ventilatore",
|
||||||
|
"alarm_AuxiliaryPowerFault": "Guasto Alimentazione Ausiliaria",
|
||||||
|
"alarm_ModelCapacityFault": "Guasto Configurazione Modello",
|
||||||
|
"alarm_AbnormalLightningArrester": "Parasurtense Anomalo",
|
||||||
|
"alarm_IslandProtection": "Protezione Isola",
|
||||||
|
"alarm_Battery1NotConnected": "Batteria 1 Non Connessa",
|
||||||
|
"alarm_Battery1Overvoltage": "Batteria 1 Sovratensione",
|
||||||
|
"alarm_Battery1Undervoltage": "Batteria 1 sottotensione",
|
||||||
|
"alarm_Battery1DischargeEnd": "Fine scarica batteria 1",
|
||||||
|
"alarm_Battery1Inverted": "Batteria 1 invertita",
|
||||||
|
"alarm_Battery1OverloadTimeout": "Tempo di sovraccarico batteria 1",
|
||||||
|
"alarm_Battery1SoftStartFailure": "Avvio morbido batteria 1 fallito",
|
||||||
|
"alarm_Battery1PowerTubeFault": "Guasto modulo di potenza batteria 1",
|
||||||
|
"alarm_Battery1InsufficientPower": "Batteria 1 Potenza Insufficiente",
|
||||||
|
"alarm_Battery1BackupProhibited": "Backup Batteria 1 Bloccato",
|
||||||
|
"alarm_Battery2NotConnected": "Batteria 2 Non Connessa",
|
||||||
|
"alarm_Battery2Overvoltage": "Sovratensione Batteria 2",
|
||||||
|
"alarm_Battery2Undervoltage": "Sottotensione Batteria 2",
|
||||||
|
"alarm_Battery2DischargeEnd": "Fine Scarica Batteria 2",
|
||||||
|
"alarm_Battery2Inverted": "Polarità batteria 2 invertita",
|
||||||
|
"alarm_Battery2OverloadTimeout": "Sovraccarico batteria 2",
|
||||||
|
"alarm_Battery2SoftStartFailure": "Avvio batteria 2 fallito",
|
||||||
|
"alarm_Battery2PowerTubeFault": "Guasto modulo potenza batteria 2",
|
||||||
|
"alarm_Battery2InsufficientPower": "Potenza insufficiente batteria 2",
|
||||||
|
"alarm_Battery2BackupProhibited": "Backup vietato batteria 2",
|
||||||
|
"alarm_LithiumBattery1ChargeForbidden": "Carica Batteria Litio 1 Bloccata",
|
||||||
|
"alarm_LithiumBattery1DischargeForbidden": "Scarica Batteria Litio 1 Bloccata",
|
||||||
|
"alarm_LithiumBattery2ChargeForbidden": "Carica Batteria Litio 2 Bloccata",
|
||||||
|
"alarm_LithiumBattery2DischargeForbidden": "Scarica Batteria Litio 2 Bloccata",
|
||||||
|
"alarm_LithiumBattery1Full": "Batteria Litio 1 Piena",
|
||||||
|
"alarm_LithiumBattery1DischargeEnd": "Fine Scarica Batteria Litio 1",
|
||||||
|
"alarm_LithiumBattery2Full": "Batteria Litio 2 Piena",
|
||||||
|
"alarm_LithiumBattery2DischargeEnd": "Fine Scarica Batteria 2",
|
||||||
|
"alarm_LeadBatteryTemperatureAbnormality": "Temperatura Batteria Anomala",
|
||||||
|
"alarm_BatteryAccessMethodError": "Errore Metodo Accesso Batteria",
|
||||||
|
"alarm_Pv1NotAccessed": "PV1 Non Rilevato",
|
||||||
|
"alarm_Pv1Overvoltage": "Sovratensione PV1",
|
||||||
|
"alarm_AbnormalPv1CurrentSharing": "Corrente PV1 anomala",
|
||||||
|
"alarm_Pv1PowerTubeFault": "Guasto tubo di potenza PV1",
|
||||||
|
"alarm_Pv1SoftStartFailure": "Avvio morbido PV1 fallito",
|
||||||
|
"alarm_Pv1OverloadTimeout": "Sovraccarico PV1",
|
||||||
|
"alarm_Pv1InsufficientPower": "Bassa potenza PV1",
|
||||||
|
"alarm_Photovoltaic1Overcurrent": "Sovracorrente PV1",
|
||||||
|
"alarm_Pv2NotAccessed": "PV2 non accessibile",
|
||||||
|
"alarm_Pv2Overvoltage": "Sovratensione PV2",
|
||||||
|
"alarm_AbnormalPv2CurrentSharing": "Condivisione corrente PV2 anomala",
|
||||||
|
"alarm_Pv2PowerTubeFault": "Guasto Tubo di Potenza PV2",
|
||||||
|
"alarm_Pv2SoftStartFailure": "Avvio Morbido PV2 Fallito",
|
||||||
|
"alarm_Pv2OverloadTimeout": "Sovraccarico PV2 Scaduto",
|
||||||
|
"alarm_Pv2InsufficientPower": "Potenza PV2 insufficiente",
|
||||||
|
"alarm_Pv3NotConnected": "PV3 non connesso",
|
||||||
|
"alarm_Pv3Overvoltage": "Sovratensione PV3",
|
||||||
|
"alarm_Pv3AverageCurrentAnomaly": "Anomalia Corrente Media PV3",
|
||||||
|
"alarm_Pv3PowerTubeFailure": "Guasto Tubo di Potenza PV3",
|
||||||
|
"alarm_Pv3SoftStartFailure": "Guasto Avvio Morbido PV3",
|
||||||
|
"alarm_Pv3OverloadTimeout": "Sovraccarico Pv3",
|
||||||
|
"alarm_Pv3ReverseConnection": "Collegamento Inverso Pv3",
|
||||||
|
"alarm_Pv4NotConnected": "Pv4 Non Collegato",
|
||||||
|
"alarm_Pv4Overvoltage": "Sovratensione PV4",
|
||||||
|
"alarm_Pv4AverageCurrentAnomaly": "Anomalia Corrente Media PV4",
|
||||||
|
"alarm_Pv4PowerTubeFailure": "Guasto Modulo di Potenza PV4",
|
||||||
|
"alarm_Pv4SoftStartFailure": "Avvio morbido fallito PV4",
|
||||||
|
"alarm_Pv4OverloadTimeout": "Sovraccarico prolungato PV4",
|
||||||
|
"alarm_Pv4ReverseConnection": "Connessione invertita PV4",
|
||||||
|
"alarm_InsufficientPhotovoltaicPower": "Potenza fotovoltaica insufficiente",
|
||||||
|
"alarm_DcBusOvervoltage": "Sovratensione bus DC",
|
||||||
|
"alarm_DcBusUndervoltage": "Sottotensione bus DC",
|
||||||
|
"alarm_DcBusVoltageUnbalance": "Squilibrio tensione DC",
|
||||||
|
"alarm_BusSlowOvervoltage": "Sovratensione lenta del bus",
|
||||||
|
"alarm_HardwareBusOvervoltage": "Sovratensione hardware del bus",
|
||||||
|
"alarm_BusSoftStartFailure": "Avvio morbido fallito",
|
||||||
|
"alarm_InverterPowerTubeFault": "Guasto modulo inverter",
|
||||||
|
"alarm_HardwareOvercurrent": "Sovracorrente hardware",
|
||||||
|
"alarm_DcConverterOvervoltage": "Sovratensione convertitore DC",
|
||||||
|
"alarm_DcConverterHardwareOvervoltage": "Protezione sovratensione hardware",
|
||||||
|
"alarm_DcConverterOvercurrent": "Sovracorrente convertitore DC",
|
||||||
|
"alarm_DcConverterHardwareOvercurrent": "Sovracorrente hardware convertitore DC",
|
||||||
|
"alarm_DcConverterResonatorOvercurrent": "Sovracorrente risonatore convertitore DC",
|
||||||
|
"alarm_SystemOutputOverload": "Sovraccarico uscita sistema",
|
||||||
|
"alarm_InverterOverload": "Sovraccarico Inverter",
|
||||||
|
"alarm_InverterOverloadTimeout": "Sovraccarico Inverter Prolungato",
|
||||||
|
"alarm_LoadPowerOverload": "Carico Elettrico Eccessivo",
|
||||||
|
"alarm_BalancedCircuitOverloadTimeout": "Sovraccarico circuito bilanciato",
|
||||||
|
"alarm_InverterSoftStartFailure": "Avvio inverter fallito",
|
||||||
|
"alarm_Dsp1ParameterSettingFault": "Parametri DSP1 errati",
|
||||||
|
"alarm_Dsp2ParameterSettingFault": "Errore configurazione parametri DSP 2",
|
||||||
|
"alarm_DspVersionCompatibilityFault": "Errore compatibilità versione DSP",
|
||||||
|
"alarm_CpldVersionCompatibilityFault": "Errore compatibilità versione CPLD",
|
||||||
|
"alarm_CpldCommunicationFault": "Guasto comunicazione CPLD",
|
||||||
|
"alarm_DspCommunicationFault": "Guasto comunicazione DSP",
|
||||||
|
"alarm_OutputVoltageDcOverlimit": "Tensione DC in uscita eccessiva",
|
||||||
|
"alarm_OutputCurrentDcOverlimit": "Corrente DC in uscita superata",
|
||||||
|
"alarm_RelaySelfCheckFails": "Autotest relè fallito",
|
||||||
|
"alarm_InverterRelayOpen": "Relè inverter aperto",
|
||||||
|
"alarm_InverterRelayShortCircuit": "Cortocircuito del relè dell'inverter",
|
||||||
|
"alarm_OpenCircuitOfPowerGridRelay": "Relè di rete aperto",
|
||||||
|
"alarm_ShortCircuitOfPowerGridRelay": "Cortocircuito del relè di rete",
|
||||||
|
"alarm_GeneratorRelayOpenCircuit": "Relè generatore aperto",
|
||||||
|
"alarm_GeneratorRelayShortCircuit": "Relè generatore corto circuito",
|
||||||
|
"alarm_AbnormalInverter": "Inverter anomalo",
|
||||||
|
"alarm_ParallelCommunicationAlarm": "Allarme Comunicazione Parallela",
|
||||||
|
"alarm_ParallelModuleMissing": "Modulo Parallelo Mancante",
|
||||||
|
"alarm_DuplicateMachineNumbersForParallelModules": "Numeri Duplicati Moduli Paralleli",
|
||||||
|
"alarm_ParameterConflictInParallelModule": "Conflitto parametri modulo parallelo",
|
||||||
|
"alarm_SystemDerating": "Riduzione prestazioni sistema",
|
||||||
|
"alarm_PvAccessMethodErrorAlarm": "Errore metodo accesso PV",
|
||||||
|
"alarm_ReservedAlarms4": "Allarme Riservato 4",
|
||||||
|
"alarm_ReservedAlarms5": "Allarme Riservato 5",
|
||||||
|
"alarm_ReverseMeterConnection": "Contatore Inverso",
|
||||||
|
"alarm_InverterSealPulse": "Impulso Sigillo Inverter",
|
||||||
|
"alarm_AbnormalDieselGeneratorVoltage": "Tensione Generatore Diesel Anomala",
|
||||||
|
"alarm_AbnormalDieselGeneratorFrequency": "Frequenza Generatore Diesel Anomala",
|
||||||
|
"alarm_DieselGeneratorVoltageReverseSequence": "Sequenza di fase invertita",
|
||||||
|
"alarm_DieselGeneratorVoltageOutOfPhase": "Fase del generatore errata",
|
||||||
|
"alarm_GeneratorOverload": "Sovraccarico del generatore",
|
||||||
|
"alarm_StringFault": "Guasto alla stringa",
|
||||||
|
"alarm_PvStringPidQuickConnectAbnormal": "Connessione rapida anomala",
|
||||||
|
"alarm_DcSpdFunctionAbnormal": "Protezione sovratensione DC anomala",
|
||||||
|
"alarm_PvShortCircuited": "Cortocircuito PV",
|
||||||
|
"alarm_PvBoostDriverAbnormal": "Anomalia driver di boost PV",
|
||||||
|
"alarm_AcSpdFunctionAbnormal": "Anomalia protezione da sovratensioni AC",
|
||||||
|
"alarm_DcFuseBlown": "Fusibile DC saltato",
|
||||||
|
"alarm_DcInputVoltageTooHigh": "Tensione DC troppo alta",
|
||||||
|
"alarm_PvReversed": "Polarità PV invertita",
|
||||||
|
"alarm_PidFunctionAbnormal": "Funzione PID Anomala",
|
||||||
|
"alarm_PvStringDisconnected": "Stringa PV Disconnessa",
|
||||||
|
"alarm_PvStringCurrentUnbalanced": "Corrente Stringa PV Squilibrata",
|
||||||
|
"alarm_NoUtilityGrid": "Nessuna rete elettrica",
|
||||||
|
"alarm_GridVoltageOutOfRange": "Tensione di rete fuori limite",
|
||||||
|
"alarm_GridFrequencyOutOfRange": "Frequenza di rete fuori limite",
|
||||||
|
"alarm_Overload": "Sovraccarico",
|
||||||
|
"alarm_MeterDisconnected": "Contatore scollegato",
|
||||||
|
"alarm_MeterReverselyConnected": "Contatore collegato inversamente",
|
||||||
|
"alarm_LinePeVoltageAbnormal": "Tensione PE anomala",
|
||||||
|
"alarm_PhaseSequenceError": "Errore sequenza fase",
|
||||||
|
"alarm_FanFailure": "Guasto ventola",
|
||||||
|
"alarm_MeterAbnormal": "Contatore Anomalo",
|
||||||
|
"alarm_OptimizerCommunicationAbnormal": "Comunicazione Ottimizzatore Anomala",
|
||||||
|
"alarm_OverTemperature": "Temperatura Eccessiva",
|
||||||
|
"alarm_OverTemperatureAlarm": "Allarme Temperatura Elevata",
|
||||||
|
"alarm_NtcTemperatureSensorBroken": "Sensore Temperatura NTC Guasto",
|
||||||
|
"alarm_SyncSignalAbnormal": "Segnale di Sincronizzazione Anomalo",
|
||||||
|
"alarm_GridStartupConditionsNotMet": "Condizioni di avvio rete non soddisfatte",
|
||||||
|
"alarm_BatteryCommunicationFailure": "Comunicazione batteria fallita",
|
||||||
|
"alarm_BatteryDisconnected": "Batteria scollegata",
|
||||||
|
"alarm_BatteryVoltageTooHigh": "Tensione batteria troppo alta",
|
||||||
|
"alarm_BatteryVoltageTooLow": "Tensione batteria troppo bassa",
|
||||||
|
"alarm_BatteryReverseConnected": "Batteria collegata al contrario",
|
||||||
|
"alarm_LeadAcidTempSensorDisconnected": "Sensore temperatura disconnesso",
|
||||||
|
"alarm_BatteryTemperatureOutOfRange": "Temperatura batteria anomala",
|
||||||
|
"alarm_BmsFault": "Guasto BMS",
|
||||||
|
"alarm_LithiumBatteryOverload": "Sovraccarico batteria litio",
|
||||||
|
"alarm_BmsCommunicationAbnormal": "Comunicazione BMS anomala",
|
||||||
|
"alarm_BatterySpdAbnormal": "SPD batteria anomalo",
|
||||||
|
"alarm_OutputDcComponentBiasAbnormal": "Bias DC anomalo in uscita",
|
||||||
|
"alarm_DcComponentOverHighOutputVoltage": "Tensione di uscita troppo alta",
|
||||||
|
"alarm_OffGridOutputVoltageTooLow": "Tensione di uscita troppo bassa",
|
||||||
|
"alarm_OffGridOutputVoltageTooHigh": "Tensione in uscita troppo alta",
|
||||||
|
"alarm_OffGridOutputOverCurrent": "Corrente in uscita eccessiva",
|
||||||
|
"alarm_OffGridOutputOverload": "Sovraccarico uscita off-grid",
|
||||||
|
"alarm_BalancedCircuitAbnormal": "Circuiti squilibrati anomali",
|
||||||
|
"alarm_ExportLimitationFailSafe": "Limite esportazione sicurezza",
|
||||||
|
"alarm_DcBiasAbnormal": "Bias DC anomalo",
|
||||||
|
"alarm_HighDcComponentOutputCurrent": "Corrente di uscita DC elevata",
|
||||||
|
"alarm_BusVoltageSamplingAbnormal": "Campionamento tensione bus anomalo",
|
||||||
|
"alarm_RelayFault": "Guasto Relè",
|
||||||
|
"alarm_BusVoltageAbnormal": "Tensione Bus Anomala",
|
||||||
|
"alarm_InternalCommunicationFailure": "Comunicazione Interna Interrotta",
|
||||||
|
"alarm_TemperatureSensorDisconnected": "Sensore temperatura scollegato",
|
||||||
|
"alarm_IgbtDriveFault": "Guasto al driver IGBT",
|
||||||
|
"alarm_EepromError": "Errore EEPROM",
|
||||||
|
"alarm_AuxiliaryPowerAbnormal": "Alimentazione ausiliaria anomala",
|
||||||
|
"alarm_DcAcOvercurrentProtection": "Protezione sovracorrente DC/AC",
|
||||||
|
"alarm_CommunicationProtocolMismatch": "Incompatibilità protocollo comunicazione",
|
||||||
|
"alarm_DspComFirmwareMismatch": "Incompatibilità firmware DSP/COM",
|
||||||
|
"alarm_DspSoftwareHardwareMismatch": "Incompatibilità software/hardware DSP",
|
||||||
|
"alarm_CpldAbnormal": "Anomalia CPLD",
|
||||||
|
"alarm_RedundancySamplingInconsistent": "Campioni ridondanti incoerenti",
|
||||||
|
"alarm_PwmPassThroughSignalFailure": "Segnale PWM guasto",
|
||||||
|
"alarm_AfciSelfTestFailure": "Autotest AFCI fallito",
|
||||||
|
"alarm_PvCurrentSamplingAbnormal": "Corrente PV Anomala",
|
||||||
|
"alarm_AcCurrentSamplingAbnormal": "Corrente AC Anomala",
|
||||||
|
"alarm_BusSoftbootFailure": "Avvio Bus DC Fallito",
|
||||||
|
"alarm_EpoFault": "Guasto EPO",
|
||||||
|
"alarm_MonitoringChipBootVerificationFailed": "Verifica avvio chip monitoraggio fallita",
|
||||||
|
"alarm_BmsCommunicationFailure": "Comunicazione BMS fallita",
|
||||||
|
"alarm_BmsChargeDischargeFailure": "Guasto Carica/Scarica BMS",
|
||||||
|
"alarm_BatteryVoltageLow": "Tensione Batteria Bassa",
|
||||||
|
"alarm_BatteryVoltageHigh": "Tensione Batteria Alta",
|
||||||
|
"alarm_BatteryTemperatureAbnormal": "Temperatura batteria anomala",
|
||||||
|
"alarm_BatteryReversed": "Batteria invertita",
|
||||||
|
"alarm_BatteryOpenCircuit": "Circuiti aperti batteria",
|
||||||
|
"alarm_BatteryOverloadProtection": "Protezione sovraccarico batteria",
|
||||||
|
"alarm_Bus2VoltageAbnormal": "Tensione bus2 anomala",
|
||||||
|
"alarm_BatteryChargeOcp": "Protezione sovraccarico carica",
|
||||||
|
"alarm_BatteryDischargeOcp": "Protezione sovraccarico scarica",
|
||||||
|
"alarm_BatterySoftStartFailed": "Avvio batteria fallito",
|
||||||
|
"alarm_EpsOutputShortCircuited": "Cortocircuito uscita EPS",
|
||||||
|
"alarm_OffGridBusVoltageLow": "Tensione Bus Fuori Rete Bassa",
|
||||||
|
"alarm_OffGridTerminalVoltageAbnormal": "Tensione Terminale Fuori Rete Anomala",
|
||||||
|
"alarm_SoftStartFailed": "Avvio Morbido Fallito",
|
||||||
|
"alarm_OffGridOutputVoltageAbnormal": "Tensione uscita off-grid anomala",
|
||||||
|
"alarm_BalancedCircuitSelfTestFailed": "Autotest circuito bilanciato fallito",
|
||||||
|
"alarm_HighDcComponentOutputVoltage": "Tensione uscita con componente DC elevato",
|
||||||
|
"alarm_OffGridParallelSignalAbnormal": "Segnale parallelo anomalo",
|
||||||
|
"alarm_AFCIFault": "Guasto AFCI",
|
||||||
|
"alarm_GFCIHigh": "Corrente di guasto elevata",
|
||||||
|
"alarm_PVVoltageHigh": "Tensione PV Elevata",
|
||||||
|
"alarm_OffGridBusVoltageTooLow": "Tensione bus off-grid troppo bassa"
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -3,6 +3,7 @@ using Flurl.Http;
|
||||||
using InnovEnergy.App.Backend.Database;
|
using InnovEnergy.App.Backend.Database;
|
||||||
using InnovEnergy.App.Backend.DataTypes;
|
using InnovEnergy.App.Backend.DataTypes;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace InnovEnergy.App.Backend.Services;
|
namespace InnovEnergy.App.Backend.Services;
|
||||||
|
|
||||||
|
|
@ -18,6 +19,9 @@ public static class DiagnosticService
|
||||||
/// <summary>In-memory cache: errorDescription → parsed response.</summary>
|
/// <summary>In-memory cache: errorDescription → parsed response.</summary>
|
||||||
private static readonly ConcurrentDictionary<string, DiagnosticResponse> Cache = new();
|
private static readonly ConcurrentDictionary<string, DiagnosticResponse> Cache = new();
|
||||||
|
|
||||||
|
/// <summary>Pre-generated translations keyed by language code → alarm key → response.</summary>
|
||||||
|
private static readonly Dictionary<string, IReadOnlyDictionary<string, DiagnosticResponse>> Translations = new();
|
||||||
|
|
||||||
// ── initialisation ──────────────────────────────────────────────
|
// ── initialisation ──────────────────────────────────────────────
|
||||||
|
|
||||||
public static void Initialize()
|
public static void Initialize()
|
||||||
|
|
@ -25,12 +29,33 @@ public static class DiagnosticService
|
||||||
var apiKey = Environment.GetEnvironmentVariable("MISTRAL_API_KEY");
|
var apiKey = Environment.GetEnvironmentVariable("MISTRAL_API_KEY");
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(apiKey))
|
if (string.IsNullOrWhiteSpace(apiKey))
|
||||||
{
|
|
||||||
Console.Error.WriteLine("[DiagnosticService] MISTRAL_API_KEY not set – AI diagnostics disabled.");
|
Console.Error.WriteLine("[DiagnosticService] MISTRAL_API_KEY not set – AI diagnostics disabled.");
|
||||||
return;
|
else
|
||||||
|
_apiKey = apiKey;
|
||||||
|
|
||||||
|
// Load pre-generated translation files (de, fr, it) if available
|
||||||
|
var resourcesDir = Path.Combine(AppContext.BaseDirectory, "Resources");
|
||||||
|
foreach (var lang in new[] { "de", "fr", "it" })
|
||||||
|
{
|
||||||
|
var file = Path.Combine(resourcesDir, $"AlarmTranslations.{lang}.json");
|
||||||
|
if (!File.Exists(file)) continue;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var json = File.ReadAllText(file);
|
||||||
|
var raw = JsonConvert.DeserializeObject<Dictionary<string, DiagnosticResponse>>(json);
|
||||||
|
if (raw is not null)
|
||||||
|
{
|
||||||
|
Translations[lang] = raw;
|
||||||
|
Console.WriteLine($"[DiagnosticService] Loaded {raw.Count} {lang} translations.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.Error.WriteLine($"[DiagnosticService] Failed to load AlarmTranslations.{lang}.json: {ex.Message}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_apiKey = apiKey;
|
|
||||||
Console.WriteLine("[DiagnosticService] initialised.");
|
Console.WriteLine("[DiagnosticService] initialised.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,6 +71,10 @@ public static class DiagnosticService
|
||||||
_ => "English"
|
_ => "English"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// <summary>Converts "AbnormalGridVoltage" → "Abnormal Grid Voltage".</summary>
|
||||||
|
private static string SplitCamelCase(string name) =>
|
||||||
|
Regex.Replace(name, @"(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])", " ").Trim();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a diagnosis for <paramref name="errorDescription"/> in the given language.
|
/// Returns a diagnosis for <paramref name="errorDescription"/> in the given language.
|
||||||
/// For English: checks the static AlarmKnowledgeBase first, then in-memory cache, then Mistral AI.
|
/// For English: checks the static AlarmKnowledgeBase first, then in-memory cache, then Mistral AI.
|
||||||
|
|
@ -56,21 +85,38 @@ public static class DiagnosticService
|
||||||
{
|
{
|
||||||
var cacheKey = $"{errorDescription}|{language}";
|
var cacheKey = $"{errorDescription}|{language}";
|
||||||
|
|
||||||
// 1. For English only: check the static knowledge base first (no API call needed)
|
// 1. For English: check the static knowledge base first (no API call needed)
|
||||||
if (language == "en")
|
if (language == "en")
|
||||||
{
|
{
|
||||||
var knownDiagnosis = AlarmKnowledgeBase.TryGetDiagnosis(errorDescription);
|
var knownDiagnosis = AlarmKnowledgeBase.TryGetDiagnosis(errorDescription);
|
||||||
if (knownDiagnosis is not null)
|
if (knownDiagnosis is not null)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[DiagnosticService] Found diagnosis in knowledge base for: {errorDescription}");
|
Console.WriteLine($"[DiagnosticService] Knowledge base hit (en): {errorDescription}");
|
||||||
return knownDiagnosis;
|
// Return a new instance with Name set — avoids mutating the shared static dictionary
|
||||||
|
return new DiagnosticResponse
|
||||||
|
{
|
||||||
|
Name = SplitCamelCase(errorDescription),
|
||||||
|
Explanation = knownDiagnosis.Explanation,
|
||||||
|
Causes = knownDiagnosis.Causes,
|
||||||
|
NextSteps = knownDiagnosis.NextSteps,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. If AI is not enabled, we can't proceed further
|
// 2. For non-English: check pre-generated translation files (no API call needed)
|
||||||
|
if (language != "en" && Translations.TryGetValue(language, out var langDict))
|
||||||
|
{
|
||||||
|
if (langDict.TryGetValue(errorDescription, out var translatedDiagnosis))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[DiagnosticService] Pre-generated translation hit ({language}): {errorDescription}");
|
||||||
|
return translatedDiagnosis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. If AI is not enabled, we can't proceed further
|
||||||
if (!IsEnabled) return null;
|
if (!IsEnabled) return null;
|
||||||
|
|
||||||
// 3. Check in-memory cache for previously fetched AI diagnoses
|
// 4. Check in-memory cache for previously fetched AI diagnoses
|
||||||
if (Cache.TryGetValue(cacheKey, out var cached))
|
if (Cache.TryGetValue(cacheKey, out var cached))
|
||||||
return cached;
|
return cached;
|
||||||
|
|
||||||
|
|
@ -104,22 +150,50 @@ public static class DiagnosticService
|
||||||
|
|
||||||
// ── test helper (no DB dependency) ─────────────────────────────
|
// ── test helper (no DB dependency) ─────────────────────────────
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a diagnosis from the static knowledge base (English) or pre-generated
|
||||||
|
/// translations (other languages). Returns null if not found in either.
|
||||||
|
/// </summary>
|
||||||
|
public static DiagnosticResponse? TryGetTranslation(string errorDescription, string language)
|
||||||
|
{
|
||||||
|
if (language == "en")
|
||||||
|
{
|
||||||
|
var kb = AlarmKnowledgeBase.TryGetDiagnosis(errorDescription);
|
||||||
|
if (kb is null) return null;
|
||||||
|
return new DiagnosticResponse
|
||||||
|
{
|
||||||
|
Name = SplitCamelCase(errorDescription),
|
||||||
|
Explanation = kb.Explanation,
|
||||||
|
Causes = kb.Causes,
|
||||||
|
NextSteps = kb.NextSteps,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Translations.TryGetValue(language, out var langDict) &&
|
||||||
|
langDict.TryGetValue(errorDescription, out var translated))
|
||||||
|
return translated;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Calls Mistral directly with a generic prompt. For testing only - no DB lookup.
|
/// Calls Mistral directly with a generic prompt. For testing only - no DB lookup.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static async Task<DiagnosticResponse?> TestCallMistralAsync(string errorDescription)
|
public static async Task<DiagnosticResponse?> TestCallMistralAsync(string errorDescription, string language = "en")
|
||||||
{
|
{
|
||||||
if (!IsEnabled) return null;
|
if (!IsEnabled) return null;
|
||||||
|
|
||||||
|
var cacheKey = $"{errorDescription}|{language}";
|
||||||
|
|
||||||
// Check cache first
|
// Check cache first
|
||||||
if (Cache.TryGetValue(errorDescription, out var cached))
|
if (Cache.TryGetValue(cacheKey, out var cached))
|
||||||
return cached;
|
return cached;
|
||||||
|
|
||||||
var prompt = BuildPrompt(errorDescription, "SodioHome", new List<string>(), "en");
|
var prompt = BuildPrompt(errorDescription, "SodioHome", new List<string>(), language);
|
||||||
var response = await CallMistralAsync(prompt);
|
var response = await CallMistralAsync(prompt);
|
||||||
|
|
||||||
if (response is not null)
|
if (response is not null)
|
||||||
Cache.TryAdd(errorDescription, response);
|
Cache.TryAdd(cacheKey, response);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
@ -139,11 +213,12 @@ Error: {errorDescription}
|
||||||
Other recent errors: {recentList}
|
Other recent errors: {recentList}
|
||||||
|
|
||||||
Explain for a non-technical homeowner. Keep it very short and simple:
|
Explain for a non-technical homeowner. Keep it very short and simple:
|
||||||
|
- name: 2-5 word display title for this alarm
|
||||||
- explanation: 1 short sentence, no jargon
|
- explanation: 1 short sentence, no jargon
|
||||||
- causes: 2-3 bullet points, plain language
|
- causes: 2-3 bullet points, plain language
|
||||||
- nextSteps: 2-3 simple action items a homeowner can understand
|
- nextSteps: 2-3 simple action items a homeowner can understand
|
||||||
IMPORTANT: Write all text values in {LanguageName(language)}. Reply with ONLY valid JSON, no markdown:
|
IMPORTANT: Write all text values in {LanguageName(language)}. Reply with ONLY valid JSON, no markdown:
|
||||||
{{""explanation"":""1 short sentence"",""causes"":[""...""],""nextSteps"":[""...""]}}
|
{{""name"":""short title"",""explanation"":""1 short sentence"",""causes"":[""...""],""nextSteps"":[""...""]}}
|
||||||
";
|
";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -212,6 +287,7 @@ IMPORTANT: Write all text values in {LanguageName(language)}. Reply with ONLY va
|
||||||
|
|
||||||
public class DiagnosticResponse
|
public class DiagnosticResponse
|
||||||
{
|
{
|
||||||
|
public string Name { get; set; } = "";
|
||||||
public string Explanation { get; set; } = "";
|
public string Explanation { get; set; } = "";
|
||||||
public IReadOnlyList<string> Causes { get; set; } = Array.Empty<string>();
|
public IReadOnlyList<string> Causes { get; set; } = Array.Empty<string>();
|
||||||
public IReadOnlyList<string> NextSteps { get; set; } = Array.Empty<string>();
|
public IReadOnlyList<string> NextSteps { get; set; } = Array.Empty<string>();
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,284 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
generate_alarm_translations.py
|
||||||
|
|
||||||
|
One-time script: reads AlarmKnowledgeBase.cs, calls Mistral API to translate
|
||||||
|
all alarm entries into German (de), French (fr), and Italian (it), and writes:
|
||||||
|
|
||||||
|
Resources/AlarmTranslations.de.json ← backend uses these at startup
|
||||||
|
Resources/AlarmTranslations.fr.json
|
||||||
|
Resources/AlarmTranslations.it.json
|
||||||
|
Resources/AlarmNames.de.json ← frontend lang file additions
|
||||||
|
Resources/AlarmNames.fr.json
|
||||||
|
Resources/AlarmNames.it.json
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
export MISTRAL_API_KEY=your_key_here
|
||||||
|
python3 generate_alarm_translations.py
|
||||||
|
|
||||||
|
Output files can be reviewed/edited before committing.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from typing import Optional
|
||||||
|
import requests
|
||||||
|
|
||||||
|
# ── Config ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
KNOWLEDGE_BASE_FILE = "Services/AlarmKnowledgeBase.cs"
|
||||||
|
RESOURCES_DIR = "Resources"
|
||||||
|
MISTRAL_URL = "https://api.mistral.ai/v1/chat/completions"
|
||||||
|
MISTRAL_MODEL = "mistral-small-latest"
|
||||||
|
BATCH_SIZE = 3 # alarms per API call — smaller = less chance of token truncation
|
||||||
|
RETRY_DELAY = 5 # seconds between retries on rate-limit
|
||||||
|
MAX_RETRIES = 3
|
||||||
|
REQUEST_TIMEOUT = (10, 90) # (connect_timeout, read_timeout) in seconds
|
||||||
|
|
||||||
|
LANGUAGES = {
|
||||||
|
"de": "German",
|
||||||
|
"fr": "French",
|
||||||
|
"it": "Italian",
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── Parsing ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
def split_camel_case(name: str) -> str:
|
||||||
|
"""'AbnormalGridVoltage' → 'Abnormal Grid Voltage'"""
|
||||||
|
return re.sub(r'(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])', ' ', name).strip()
|
||||||
|
|
||||||
|
|
||||||
|
def parse_knowledge_base(filepath: str) -> dict:
|
||||||
|
"""
|
||||||
|
Parses AlarmKnowledgeBase.cs and returns a dict:
|
||||||
|
{ "AlarmKey": { "Explanation": "...", "Causes": [...], "NextSteps": [...] } }
|
||||||
|
"""
|
||||||
|
with open(filepath, "r", encoding="utf-8") as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
alarms = {}
|
||||||
|
|
||||||
|
# Find positions of all alarm key declarations: ["Key"] = new()
|
||||||
|
key_matches = list(re.finditer(r'\["(\w+)"\]\s*=\s*new\(\)', content))
|
||||||
|
|
||||||
|
for i, key_match in enumerate(key_matches):
|
||||||
|
key = key_match.group(1)
|
||||||
|
start = key_match.start()
|
||||||
|
end = key_matches[i + 1].start() if i + 1 < len(key_matches) else len(content)
|
||||||
|
block = content[start:end]
|
||||||
|
|
||||||
|
# Explanation (single string)
|
||||||
|
exp_match = re.search(r'Explanation\s*=\s*"((?:[^"\\]|\\.)*)"', block)
|
||||||
|
explanation = exp_match.group(1) if exp_match else ""
|
||||||
|
|
||||||
|
# Causes (string array)
|
||||||
|
causes_section = re.search(r'Causes\s*=\s*new\[\]\s*\{([^}]+)\}', block, re.DOTALL)
|
||||||
|
causes = re.findall(r'"((?:[^"\\]|\\.)*)"', causes_section.group(1)) if causes_section else []
|
||||||
|
|
||||||
|
# NextSteps (string array)
|
||||||
|
steps_section = re.search(r'NextSteps\s*=\s*new\[\]\s*\{([^}]+)\}', block, re.DOTALL)
|
||||||
|
next_steps = re.findall(r'"((?:[^"\\]|\\.)*)"', steps_section.group(1)) if steps_section else []
|
||||||
|
|
||||||
|
if explanation or causes or next_steps:
|
||||||
|
alarms[key] = {
|
||||||
|
"Explanation": explanation,
|
||||||
|
"Causes": causes,
|
||||||
|
"NextSteps": next_steps,
|
||||||
|
}
|
||||||
|
|
||||||
|
return alarms
|
||||||
|
|
||||||
|
|
||||||
|
# ── Mistral API ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
def call_mistral(api_key: str, prompt: str) -> Optional[str]:
|
||||||
|
headers = {
|
||||||
|
"Authorization": f"Bearer {api_key}",
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
}
|
||||||
|
body = {
|
||||||
|
"model": MISTRAL_MODEL,
|
||||||
|
"messages": [{"role": "user", "content": prompt}],
|
||||||
|
"max_tokens": 1400, # ~3 alarms × ~450 tokens each (German is verbose)
|
||||||
|
"temperature": 0.1, # low for consistent translations
|
||||||
|
}
|
||||||
|
|
||||||
|
for attempt in range(1, MAX_RETRIES + 1):
|
||||||
|
try:
|
||||||
|
resp = requests.post(MISTRAL_URL, headers=headers, json=body, timeout=REQUEST_TIMEOUT)
|
||||||
|
if resp.status_code == 429:
|
||||||
|
print(f" Rate limited, waiting {RETRY_DELAY}s (attempt {attempt}/{MAX_RETRIES})...")
|
||||||
|
time.sleep(RETRY_DELAY * attempt)
|
||||||
|
continue
|
||||||
|
resp.raise_for_status()
|
||||||
|
data = resp.json()
|
||||||
|
content = data["choices"][0]["message"]["content"].strip()
|
||||||
|
# Strip markdown code fences if present
|
||||||
|
if content.startswith("```"):
|
||||||
|
first_newline = content.index("\n")
|
||||||
|
content = content[first_newline + 1:]
|
||||||
|
if content.endswith("```"):
|
||||||
|
content = content[:-3].strip()
|
||||||
|
return content
|
||||||
|
except requests.RequestException as e:
|
||||||
|
print(f" HTTP error: {e} (attempt {attempt}/{MAX_RETRIES})")
|
||||||
|
time.sleep(RETRY_DELAY)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def translate_batch(api_key: str, batch: dict, language_name: str) -> Optional[dict]:
|
||||||
|
"""
|
||||||
|
Translates a batch of alarms into the target language.
|
||||||
|
Returns dict with same keys + translated content including a localized Name.
|
||||||
|
"""
|
||||||
|
# Build input JSON (only English content, no need to send back keys)
|
||||||
|
input_data = {}
|
||||||
|
for key, entry in batch.items():
|
||||||
|
english_name = split_camel_case(key)
|
||||||
|
input_data[key] = {
|
||||||
|
"EnglishName": english_name,
|
||||||
|
"Explanation": entry["Explanation"],
|
||||||
|
"Causes": entry["Causes"],
|
||||||
|
"NextSteps": entry["NextSteps"],
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt = f"""You are translating battery energy storage system alarm descriptions into {language_name}.
|
||||||
|
Translate each alarm entry. The "Name" should be a short (2-5 word) localized display title for the alarm.
|
||||||
|
Keep technical terms accurate but use plain language a homeowner would understand.
|
||||||
|
|
||||||
|
Input JSON:
|
||||||
|
{json.dumps(input_data, ensure_ascii=False, indent=2)}
|
||||||
|
|
||||||
|
Return ONLY a valid JSON object with the same alarm keys. Each value must have exactly these fields:
|
||||||
|
{{
|
||||||
|
"Name": "short {language_name} title",
|
||||||
|
"Explanation": "translated explanation sentence",
|
||||||
|
"Causes": ["translated cause 1", "translated cause 2"],
|
||||||
|
"NextSteps": ["translated step 1", "translated step 2"]
|
||||||
|
}}
|
||||||
|
|
||||||
|
Reply with ONLY the JSON object, no markdown, no extra text."""
|
||||||
|
|
||||||
|
raw = call_mistral(api_key, prompt)
|
||||||
|
if raw is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
result = json.loads(raw)
|
||||||
|
return result
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
print(f" JSON parse error: {e}")
|
||||||
|
print(f" Raw response (first 300 chars): {raw[:300]}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
# ── Main ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
def load_env_file(env_path: str) -> dict:
|
||||||
|
"""Parse a simple KEY=VALUE .env file."""
|
||||||
|
env = {}
|
||||||
|
try:
|
||||||
|
with open(env_path) as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.strip()
|
||||||
|
if line and not line.startswith("#") and "=" in line:
|
||||||
|
k, _, v = line.partition("=")
|
||||||
|
env[k.strip()] = v.strip()
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
return env
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Try environment variable first, then .env file in the same directory
|
||||||
|
api_key = os.environ.get("MISTRAL_API_KEY", "").strip()
|
||||||
|
if not api_key:
|
||||||
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
env_vars = load_env_file(os.path.join(script_dir, ".env"))
|
||||||
|
api_key = env_vars.get("MISTRAL_API_KEY", "").strip()
|
||||||
|
|
||||||
|
if not api_key:
|
||||||
|
print("ERROR: MISTRAL_API_KEY not found in environment or .env file.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
print("MISTRAL_API_KEY loaded.")
|
||||||
|
|
||||||
|
# Parse knowledge base
|
||||||
|
print(f"Parsing {KNOWLEDGE_BASE_FILE}...")
|
||||||
|
alarms = parse_knowledge_base(KNOWLEDGE_BASE_FILE)
|
||||||
|
print(f" Found {len(alarms)} alarm entries.")
|
||||||
|
|
||||||
|
if not alarms:
|
||||||
|
print("ERROR: No alarms parsed. Check the file path and format.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
alarm_keys = list(alarms.keys())
|
||||||
|
os.makedirs(RESOURCES_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
# Process each language
|
||||||
|
for lang_code, lang_name in LANGUAGES.items():
|
||||||
|
print(f"\n── Translating to {lang_name} ({lang_code}) ──")
|
||||||
|
|
||||||
|
translations = {} # key → {Name, Explanation, Causes, NextSteps}
|
||||||
|
alarm_name_keys = {} # "alarm_Key" → translated name (for lang JSON files)
|
||||||
|
failed_keys = []
|
||||||
|
|
||||||
|
# Split into batches
|
||||||
|
batches = [
|
||||||
|
{k: alarms[k] for k in alarm_keys[i:i + BATCH_SIZE]}
|
||||||
|
for i in range(0, len(alarm_keys), BATCH_SIZE)
|
||||||
|
]
|
||||||
|
|
||||||
|
for batch_num, batch in enumerate(batches, 1):
|
||||||
|
keys_in_batch = list(batch.keys())
|
||||||
|
print(f" Batch {batch_num}/{len(batches)}: {', '.join(keys_in_batch)}")
|
||||||
|
|
||||||
|
result = translate_batch(api_key, batch, lang_name)
|
||||||
|
|
||||||
|
if result is None:
|
||||||
|
print(f" FAILED batch {batch_num} — will mark keys as failed")
|
||||||
|
failed_keys.extend(keys_in_batch)
|
||||||
|
continue
|
||||||
|
|
||||||
|
for key in keys_in_batch:
|
||||||
|
if key in result:
|
||||||
|
entry = result[key]
|
||||||
|
translations[key] = {
|
||||||
|
"Explanation": entry.get("Explanation", ""),
|
||||||
|
"Causes": entry.get("Causes", []),
|
||||||
|
"NextSteps": entry.get("NextSteps", []),
|
||||||
|
}
|
||||||
|
alarm_name_keys[f"alarm_{key}"] = entry.get("Name", split_camel_case(key))
|
||||||
|
else:
|
||||||
|
print(f" WARNING: key '{key}' missing from batch result")
|
||||||
|
failed_keys.append(key)
|
||||||
|
|
||||||
|
# Small pause between batches to avoid rate limits
|
||||||
|
if batch_num < len(batches):
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# Write backend translation file
|
||||||
|
backend_file = os.path.join(RESOURCES_DIR, f"AlarmTranslations.{lang_code}.json")
|
||||||
|
with open(backend_file, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(translations, f, ensure_ascii=False, indent=2)
|
||||||
|
print(f" Wrote {len(translations)} entries → {backend_file}")
|
||||||
|
|
||||||
|
# Write frontend alarm name file (to be merged into lang JSON)
|
||||||
|
names_file = os.path.join(RESOURCES_DIR, f"AlarmNames.{lang_code}.json")
|
||||||
|
with open(names_file, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(alarm_name_keys, f, ensure_ascii=False, indent=2)
|
||||||
|
print(f" Wrote {len(alarm_name_keys)} name keys → {names_file}")
|
||||||
|
|
||||||
|
if failed_keys:
|
||||||
|
print(f" FAILED keys ({len(failed_keys)}): {failed_keys}")
|
||||||
|
|
||||||
|
print("\n✓ Done. Review the output files in Resources/ before committing.")
|
||||||
|
print(" Next: merge AlarmNames.*.json entries into src/lang/de.json, fr.json, it.json")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
@ -63,6 +63,14 @@ function Log(props: LogProps) {
|
||||||
const { removeToken } = tokencontext;
|
const { removeToken } = tokencontext;
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
||||||
|
/** "AbnormalGridVoltage" → "Abnormal Grid Voltage" */
|
||||||
|
const splitCamelCase = (s: string) =>
|
||||||
|
s.replace(/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/g, ' ').trim();
|
||||||
|
|
||||||
|
/** Returns a translated alarm display name, falling back to camelCase split. */
|
||||||
|
const alarmDisplayName = (description: string) =>
|
||||||
|
intl.formatMessage({ id: `alarm_${description}`, defaultMessage: splitCamelCase(description) });
|
||||||
|
|
||||||
const [diagnoses, setDiagnoses] = useState<{ description: string; lastSeen: string; response: DiagnosticResponse }[]>([]);
|
const [diagnoses, setDiagnoses] = useState<{ description: string; lastSeen: string; response: DiagnosticResponse }[]>([]);
|
||||||
const [diagnosisLoading, setDiagnosisLoading] = useState(false);
|
const [diagnosisLoading, setDiagnosisLoading] = useState(false);
|
||||||
const [expandedDiagnoses, setExpandedDiagnoses] = useState<Set<number>>(new Set());
|
const [expandedDiagnoses, setExpandedDiagnoses] = useState<Set<number>>(new Set());
|
||||||
|
|
@ -139,7 +147,7 @@ function Log(props: LogProps) {
|
||||||
Promise.all(
|
Promise.all(
|
||||||
targets.map(target =>
|
targets.map(target =>
|
||||||
axiosConfig
|
axiosConfig
|
||||||
.get(`/DiagnoseError?installationId=${props.id}&errorDescription=${encodeURIComponent(target.description)}`)
|
.get(`/DiagnoseError?installationId=${props.id}&errorDescription=${encodeURIComponent(target.description)}&language=${intl.locale}`)
|
||||||
.then((res: AxiosResponse<DiagnosticResponse>) => {
|
.then((res: AxiosResponse<DiagnosticResponse>) => {
|
||||||
if (res.status === 204 || !res.data || !res.data.explanation) return null;
|
if (res.status === 204 || !res.data || !res.data.explanation) return null;
|
||||||
return { description: target.description, lastSeen: target.date + ' ' + target.time, response: res.data };
|
return { description: target.description, lastSeen: target.date + ' ' + target.time, response: res.data };
|
||||||
|
|
@ -226,7 +234,7 @@ function Log(props: LogProps) {
|
||||||
setDemoLoading(true);
|
setDemoLoading(true);
|
||||||
setDemoResult(null);
|
setDemoResult(null);
|
||||||
axiosConfigWithoutToken
|
axiosConfigWithoutToken
|
||||||
.get(`/TestDiagnoseError?errorDescription=${encodeURIComponent(alarm)}`)
|
.get(`/TestDiagnoseError?errorDescription=${encodeURIComponent(alarm)}&language=${intl.locale}`)
|
||||||
.then((res: AxiosResponse<TestDiagnoseResult>) => {
|
.then((res: AxiosResponse<TestDiagnoseResult>) => {
|
||||||
setDemoResult(res.data);
|
setDemoResult(res.data);
|
||||||
})
|
})
|
||||||
|
|
@ -246,296 +254,6 @@ function Log(props: LogProps) {
|
||||||
return <Chip label="Not available" size="small" color="default" />;
|
return <Chip label="Not available" size="small" color="default" />;
|
||||||
};
|
};
|
||||||
|
|
||||||
const warningDescriptionMap: { [key: string]: string } = {
|
|
||||||
// BMS warnings
|
|
||||||
"TaM1": "TaM1: BMS temperature high",
|
|
||||||
"TbM1": "TbM1: Battery temperature high",
|
|
||||||
"VBm1": "VBm1: Bus voltage low",
|
|
||||||
"VBM1": "VBM1: Bus voltage high",
|
|
||||||
"IDM1": "IDM1: Discharge current high",
|
|
||||||
"vsm1": "vsm1: String voltage low",
|
|
||||||
"vsM1": "vsM1: String voltage high",
|
|
||||||
"iCM1": "iCM1: Charge current high",
|
|
||||||
"iDM1": "iDM1: Discharge current high",
|
|
||||||
"MID1": "MID1: String voltages unbalanced",
|
|
||||||
"BLPW": "BLPW: Not enough charging power on bus",
|
|
||||||
"CCBF": "CCBF: Internal charger hardware failure",
|
|
||||||
"Ah_W": "Ah_W: String SOC low",
|
|
||||||
"MPMM": "MPMM: Midpoint wiring problem",
|
|
||||||
"TCdi": "TCdi: Temperature difference between strings high",
|
|
||||||
"LMPW": "LMPW: String voltages unbalance warning",
|
|
||||||
"TOCW": "TOCW: Top of Charge requested",
|
|
||||||
|
|
||||||
// Sinexcel warnings (WARNING/INFO severity)
|
|
||||||
"Inverted sequenceof grid voltage": "Grid phase sequence reversed",
|
|
||||||
"Excessivelyhigh ambient temperature": "Ambient temperature too high",
|
|
||||||
"Excessive radiator temperature": "Radiator/heatsink temperature high",
|
|
||||||
"Island protection": "Island protection active (auto-recovers)",
|
|
||||||
"Battery 1over voltage": "Battery 1 voltage too high",
|
|
||||||
"Battery 1under voltage": "Battery 1 voltage too low",
|
|
||||||
"Battery 1discharge end": "Battery 1 discharge complete (auto-recovers)",
|
|
||||||
"Battery 1inverted": "Battery 1 polarity reversed!",
|
|
||||||
"Battery 2over voltage": "Battery 2 voltage too high",
|
|
||||||
"Battery 2under voltage": "Battery 2 voltage too low",
|
|
||||||
"Battery 2discharge end": "Battery 2 discharge complete (auto-recovers)",
|
|
||||||
"Battery 2inverted": "Battery 2 polarity reversed!",
|
|
||||||
"PV 1notaccessed": "PV string 1 not accessible",
|
|
||||||
"PV 1over voltage": "PV string 1 voltage too high",
|
|
||||||
"PV 2notaccessed": "PV string 2 not accessible",
|
|
||||||
"PV 2over voltage": "PV string 2 voltage too high",
|
|
||||||
"DC busover voltage": "DC bus voltage too high",
|
|
||||||
"DC busunder voltage": "DC bus voltage too low",
|
|
||||||
"Inverter soft start failure": "Inverter soft-start failed",
|
|
||||||
"Battery 1soft start failure": "Battery 1 soft-start failed",
|
|
||||||
"Battery 2soft start failure": "Battery 2 soft-start failed",
|
|
||||||
"Output voltageDC overlimit": "DC component in output voltage high",
|
|
||||||
"Output currentDC overlimit": "DC component in output current high",
|
|
||||||
"Poorgrounding": "Poor ground connection detected",
|
|
||||||
"PV 1soft startfailure": "PV 1 soft-start failed",
|
|
||||||
"PV 2soft startfailure": "PV 2 soft-start failed",
|
|
||||||
"PCBover temperature": "PCB temperature too high",
|
|
||||||
"DC converter over temperature": "DC converter temperature high",
|
|
||||||
"Busslow over voltage": "Slow bus over-voltage",
|
|
||||||
"DC converter over voltage": "DC converter voltage high",
|
|
||||||
"DC converter over current": "DC converter current high",
|
|
||||||
"DC converter resonator over current": "DC converter resonator overcurrent",
|
|
||||||
"PV 1insufficient power": "PV 1 power insufficient (auto-recovers)",
|
|
||||||
"PV 2insufficient power": "PV 2 power insufficient (auto-recovers)",
|
|
||||||
"Battery 1insufficient power": "Battery 1 power insufficient (auto-recovers)",
|
|
||||||
"Battery 2insufficiency power": "Battery 2 power insufficient",
|
|
||||||
"Lithium battery 1 chargeforbidden": "Lithium battery 1 charging forbidden",
|
|
||||||
"Lithium battery 1 dischargeforbidden": "Lithium battery 1 discharging forbidden",
|
|
||||||
"Lithium battery 2 chargeforbidden": "Lithium battery 2 charging forbidden",
|
|
||||||
"Lithium battery 2 dischargeforbidden": "Lithium battery 2 discharging forbidden",
|
|
||||||
"Lithium battery 1full": "Lithium battery 1 fully charged",
|
|
||||||
"Lithium battery 1 dischargeend": "Lithium battery 1 discharge end",
|
|
||||||
"Lithium battery 2full": "Lithium battery 2 fully charged",
|
|
||||||
"Lithium battery 2 dischargeend": "Lithium battery 2 discharge end",
|
|
||||||
"Inverter over temperaturealarm": "Inverter over-temperature alarm",
|
|
||||||
"Inverter over temperature": "Inverter temperature high",
|
|
||||||
"DC converter over temperaturealarm": "DC converter over-temperature alarm",
|
|
||||||
"Systemderating": "System power derating active",
|
|
||||||
"PVaccessmethod erroralarm": "PV access method error",
|
|
||||||
"Parallelmodule missing": "Parallel module missing",
|
|
||||||
"Duplicatemachine numbersforparallel modules": "Duplicate parallel module IDs",
|
|
||||||
"Para meterconflictin parallelmodule": "Parameter conflict in parallel modules",
|
|
||||||
"Reservedalarms 4": "Reserved alarm 4",
|
|
||||||
"InverterSealPulse": "Inverter seal pulse active",
|
|
||||||
"PV 3over voltage": "PV 3 voltage too high",
|
|
||||||
"PV 3average current anomaly": "PV 3 current anomaly",
|
|
||||||
"PV 4over voltage": "PV 4 voltage too high",
|
|
||||||
"PV 4average current anomaly": "PV 4 current anomaly",
|
|
||||||
"PV 3soft startfailure": "PV 3 soft-start failed",
|
|
||||||
"PV 4soft startfailure": "PV 4 soft-start failed",
|
|
||||||
"Batteryaccessmethod error": "Battery access method error",
|
|
||||||
"Reservedalarms 5": "Reserved alarm 5",
|
|
||||||
"Battery 1backup prohibited": "Battery 1 backup prohibited",
|
|
||||||
"Battery 2backup prohibited": "Battery 2 backup prohibited",
|
|
||||||
"Bus soft startfailure": "Bus soft-start failed",
|
|
||||||
"Insufficient photovoltaic power": "Insufficient PV power",
|
|
||||||
"Photovoltaic 1 over current": "PV 1 overcurrent",
|
|
||||||
"Photovoltaic 2 over current": "PV 2 overcurrent",
|
|
||||||
"Photovoltaic 3 over current": "PV 3 overcurrent",
|
|
||||||
"Photovoltaic 4 over current": "PV 4 overcurrent",
|
|
||||||
"Battery 1over current": "Battery 1 overcurrent",
|
|
||||||
"Battery 2over current": "Battery 2 overcurrent",
|
|
||||||
"Battery 1charging sealingwave": "Battery 1 charge limiting",
|
|
||||||
"Battery 2charging sealingwave": "Battery 2 charge limiting",
|
|
||||||
|
|
||||||
// Growatt warnings
|
|
||||||
"Warning 200": "String fault",
|
|
||||||
"Warning 201": "PV string/PID terminals abnormal",
|
|
||||||
"Warning 203": "PV1 or PV2 short circuited",
|
|
||||||
"Warning 208": "DC fuse blown",
|
|
||||||
"Warning 209": "DC input voltage too high",
|
|
||||||
"Warning 219": "PID function abnormal",
|
|
||||||
"Warning 220": "PV string disconnected",
|
|
||||||
"Warning 221": "PV string current unbalanced",
|
|
||||||
"Warning 300": "No grid connection / grid power failure",
|
|
||||||
"Warning 301": "Grid voltage out of range",
|
|
||||||
"Warning 302": "Grid frequency out of range",
|
|
||||||
"Warning 303": "System overload",
|
|
||||||
"Warning 308": "Meter disconnected",
|
|
||||||
"Warning 309": "Meter L/N reversed",
|
|
||||||
"Warning 310": "N-PE voltage abnormal",
|
|
||||||
"Warning 311": "Phase sequence error (auto-adjusts)",
|
|
||||||
"Warning 400": "Fan failure",
|
|
||||||
"Warning 401": "Meter abnormal",
|
|
||||||
"Warning 402": "Optimizer communication abnormal",
|
|
||||||
"Warning 407": "Over-temperature",
|
|
||||||
"Warning 408": "NTC temperature sensor broken",
|
|
||||||
"Warning 411": "Sync signal abnormal",
|
|
||||||
"Warning 412": "Grid connection requirements not met",
|
|
||||||
"Warning 500": "Inverter-battery communication failed",
|
|
||||||
"Warning 501": "Battery disconnected",
|
|
||||||
"Warning 502": "Battery voltage too high",
|
|
||||||
"Warning 503": "Battery voltage too low",
|
|
||||||
"Warning 504": "Battery terminals reversed",
|
|
||||||
"Warning 505": "Lead-acid battery temp sensor disconnected",
|
|
||||||
"Warning 506": "Battery temperature out of range",
|
|
||||||
"Warning 507": "BMS fault: charging/discharging failed",
|
|
||||||
"Warning 508": "Lithium battery overload protection",
|
|
||||||
"Warning 509": "BMS communication abnormal",
|
|
||||||
"Warning 510": "BAT SPD function abnormal",
|
|
||||||
"Warning 600": "Output DC component bias abnormal",
|
|
||||||
"Warning 601": "High DC in output voltage",
|
|
||||||
"Warning 602": "Off-grid output voltage too low",
|
|
||||||
"Warning 603": "Off-grid output voltage too high",
|
|
||||||
"Warning 604": "Off-grid output overcurrent",
|
|
||||||
"Warning 605": "Off-grid bus voltage too low",
|
|
||||||
"Warning 606": "Off-grid output overload",
|
|
||||||
"Warning 609": "Balanced circuit abnormal"
|
|
||||||
};
|
|
||||||
|
|
||||||
const errorDescriptionMap: { [key: string]: string } = {
|
|
||||||
// BMS errors
|
|
||||||
"Tam": "Tam: Recoverable, BMS temperature too low",
|
|
||||||
"TaM2": "TaM2: Recoverable, BMS temperature too high",
|
|
||||||
"Tbm": "Tbm: Recoverable, Battery temperature too low",
|
|
||||||
"TbM2": "TbM2: Recoverable, Battery temperature too high",
|
|
||||||
"VBm2": "VBm2: Recoverable, Recoverable: Bus voltage too low",
|
|
||||||
"VBM2": "VBM2: Recoverable,Recoverable: Bus voltage too high",
|
|
||||||
"IDM2": "IDM2: Recoverable, Discharge current too high",
|
|
||||||
"ISOB": "ISOB: Unrecoverable, Electrical insulation failure",
|
|
||||||
"MSWE": "MSWE: Unrecoverable, Main switch failure",
|
|
||||||
"FUSE": "FUSE: Unrecoverable, Main fuse blown",
|
|
||||||
"HTRE": "HTRE: Recoverable, Battery failed to warm up",
|
|
||||||
"TCPE": "TCPE: Unrecoverable, Temperature sensor failure",
|
|
||||||
"STRE": "STRE: Recoverable, Voltage measurement circuit fails",
|
|
||||||
"CME": "CME: Recoverable, Current sensor failure",
|
|
||||||
"HWFL": "HWFL: Recoverable, BMS hardware failure",
|
|
||||||
"HWEM": "HWEM: Recoverable, Hardware protection tripped",
|
|
||||||
"ThM": "ThM: Recoverable, Heatsink temperature too high",
|
|
||||||
"vsm2": "vsm2: Unrecoverable, Low string voltage failure",
|
|
||||||
"vsM2": "vsM2: Recoverable, String voltage too high",
|
|
||||||
"iCM2": "iCM2: Unrecoverable, Charge current too high",
|
|
||||||
"iDM2": "iDM2: Recoverable, Discharge current too high",
|
|
||||||
"MID2": "MID2: Recoverable, String voltage unbalance too high",
|
|
||||||
"HTFS": "HTFS: Recoverable, Unrecoverable: Heater Fuse Blown",
|
|
||||||
"DATA": "DATA: Recoverable, Unrecoverable: Parameters out of range",
|
|
||||||
"LMPA": "LMPA: Unrecoverable, String voltages unbalance alarm",
|
|
||||||
"HEBT": "HEBT: Recoverable, oss of heartbeat",
|
|
||||||
|
|
||||||
// Sinexcel errors (ERROR severity - require manual intervention)
|
|
||||||
"Abnormal grid voltage": "Grid voltage abnormal",
|
|
||||||
"Abnormal grid frequency": "Grid frequency abnormal",
|
|
||||||
"Grid voltage phase loss": "Grid phase loss detected",
|
|
||||||
"Abnormal output voltage": "Output voltage abnormal",
|
|
||||||
"Abnormal output frequency": "Output frequency abnormal",
|
|
||||||
"Abnormalnullline": "Null/neutral line abnormal",
|
|
||||||
"Insulation fault": "Insulation fault detected",
|
|
||||||
"Leakage protection fault": "Leakage/ground fault protection tripped",
|
|
||||||
"Auxiliary power fault": "Auxiliary power supply fault",
|
|
||||||
"Fan fault": "Cooling fan fault",
|
|
||||||
"Model capacity fault": "Model/capacity configuration fault",
|
|
||||||
"Abnormal lightning arrester": "Surge protection device abnormal",
|
|
||||||
"Battery 1not connected": "Battery 1 not connected",
|
|
||||||
"Battery 2not connected": "Battery 2 not connected",
|
|
||||||
"AbnormalPV 1current sharing": "PV 1 current sharing abnormal",
|
|
||||||
"AbnormalPV 2current sharing": "PV 2 current sharing abnormal",
|
|
||||||
"DC bus voltage unbalance": "DC bus voltage unbalance",
|
|
||||||
"System output overload": "System output overloaded",
|
|
||||||
"Inverter overload": "Inverter overloaded",
|
|
||||||
"Inverter overload timeout": "Inverter overload timeout",
|
|
||||||
"Battery 1overload timeout": "Battery 1 overload timeout",
|
|
||||||
"Battery 2overload timeout": "Battery 2 overload timeout",
|
|
||||||
"DSP 1para meter setting fault": "DSP 1 parameter setting fault",
|
|
||||||
"DSP 2para meter setting fault": "DSP 2 parameter setting fault",
|
|
||||||
"DSPversion compatibility fault": "DSP version compatibility fault",
|
|
||||||
"CPLDversion compatibility fault": "CPLD version compatibility fault",
|
|
||||||
"CPLD communication fault": "CPLD communication fault",
|
|
||||||
"DSP communication fault": "DSP communication fault",
|
|
||||||
"Relayself-checkfails": "Relay self-check failed",
|
|
||||||
"Abnormal inverter": "Abnormal inverter condition",
|
|
||||||
"Balancedcircuit overload timeout": "Balance circuit overload timeout",
|
|
||||||
"PV 1overload timeout": "PV 1 overload timeout",
|
|
||||||
"PV 2overload timeout": "PV 2 overload timeout",
|
|
||||||
"Abnormaloff-grid output voltage": "Off-grid output voltage abnormal",
|
|
||||||
"Parallel communicationalarm": "Parallel communication alarm",
|
|
||||||
"Inverter relayopen": "Inverter relay open",
|
|
||||||
"PV 3not connected": "PV 3 not connected",
|
|
||||||
"PV 4not connected": "PV 4 not connected",
|
|
||||||
"PV 3overload timeout": "PV 3 overload timeout",
|
|
||||||
"PV 4overload timeout": "PV 4 overload timeout",
|
|
||||||
"Abnormal diesel generator voltage": "Diesel generator voltage abnormal",
|
|
||||||
"Abnormal diesel generator frequency": "Diesel generator frequency abnormal",
|
|
||||||
"Diesel generator voltageoutof phase": "Diesel generator out of phase",
|
|
||||||
"Lead battery temperature abnormality": "Lead battery temperature abnormal",
|
|
||||||
"Abnormal grid current": "Grid current abnormal",
|
|
||||||
"Generator overload": "Generator overloaded",
|
|
||||||
"Opencircuitof power grid relay": "Grid relay open circuit",
|
|
||||||
"Shortcircuitof power grid relay": "Grid relay short circuit",
|
|
||||||
"generator Relayopencircuit": "Generator relay open circuit",
|
|
||||||
"generator Relayshortcircuit": "Generator relay short circuit",
|
|
||||||
"Load power overload": "Load power overload",
|
|
||||||
"Abnormal leakage self-check": "Leakage self-check abnormal",
|
|
||||||
|
|
||||||
// Sinexcel PROTECTION errors (require service - do not restart)
|
|
||||||
"PV 1power tube fault": "PV 1 power tube fault - Contact Service",
|
|
||||||
"PV 2power tube fault": "PV 2 power tube fault - Contact Service",
|
|
||||||
"Battery 1power tube fault": "Battery 1 power tube fault - Contact Service",
|
|
||||||
"Battery 2power tube fault": "Battery 2 power tube fault - Contact Service",
|
|
||||||
"Inverter power tube fault": "Inverter power tube fault - Contact Service",
|
|
||||||
"Hardware bus over voltage": "Hardware bus overvoltage - Contact Service",
|
|
||||||
"Hardware over current": "Hardware overcurrent - Contact Service",
|
|
||||||
"DC converter hardware over voltage": "DC converter hardware overvoltage - Contact Service",
|
|
||||||
"DC converter hardware over current": "DC converter hardware overcurrent - Contact Service",
|
|
||||||
"Inverter relayshort circuit": "Inverter relay short circuit - Contact Service",
|
|
||||||
"Reverse meter connection": "Meter connected in reverse - Contact Service",
|
|
||||||
"PV 3power tube failure": "PV 3 power tube failure - Contact Service",
|
|
||||||
"PV 4power tube Failure": "PV 4 power tube failure - Contact Service",
|
|
||||||
"PV 3reverse connection": "PV 3 reverse connection - Contact Service",
|
|
||||||
"PV 4reverse connection": "PV 4 reverse connection - Contact Service",
|
|
||||||
"Diesel generator voltage reverse sequence": "Generator phase reversed - Contact Service",
|
|
||||||
|
|
||||||
// Growatt errors (PROTECTION severity)
|
|
||||||
"Error 309": "Grid ROCOF abnormal",
|
|
||||||
"Error 311": "Export limitation fail-safe",
|
|
||||||
"Error 400": "DCI bias abnormal",
|
|
||||||
"Error 402": "High DC in output current",
|
|
||||||
"Error 404": "Bus voltage sampling abnormal",
|
|
||||||
"Error 405": "Relay fault",
|
|
||||||
"Error 408": "Over-temperature protection",
|
|
||||||
"Error 409": "Bus voltage abnormal",
|
|
||||||
"Error 411": "Internal communication failure",
|
|
||||||
"Error 412": "Temperature sensor disconnected",
|
|
||||||
"Error 413": "IGBT drive fault",
|
|
||||||
"Error 414": "EEPROM error",
|
|
||||||
"Error 415": "Auxiliary power supply abnormal",
|
|
||||||
"Error 416": "DC/AC overcurrent protection",
|
|
||||||
"Error 417": "Communication protocol mismatch",
|
|
||||||
"Error 418": "DSP/COM firmware mismatch",
|
|
||||||
"Error 419": "DSP software/hardware mismatch",
|
|
||||||
"Error 421": "CPLD abnormal",
|
|
||||||
"Error 422": "Redundancy sampling inconsistent",
|
|
||||||
"Error 423": "PWM pass-through signal failure",
|
|
||||||
"Error 425": "AFCI self-test failure",
|
|
||||||
"Error 426": "PV current sampling abnormal",
|
|
||||||
"Error 427": "AC current sampling abnormal",
|
|
||||||
"Error 429": "BUS soft-boot failure",
|
|
||||||
"Error 430": "EPO fault",
|
|
||||||
"Error 431": "Monitoring chip BOOT verification failed",
|
|
||||||
"Error 500": "BMS-inverter communication failed",
|
|
||||||
"Error 501": "BMS: battery charge/discharge failed",
|
|
||||||
"Error 503": "Battery voltage exceeds threshold",
|
|
||||||
"Error 504": "Battery temperature out of range",
|
|
||||||
"Error 506": "Battery open-circuited",
|
|
||||||
"Error 507": "Battery overload protection",
|
|
||||||
"Error 508": "BUS2 voltage abnormal",
|
|
||||||
"Error 509": "BAT charge overcurrent protection",
|
|
||||||
"Error 510": "BAT discharge overcurrent protection",
|
|
||||||
"Error 511": "BAT soft start failed",
|
|
||||||
"Error 601": "Off-grid bus voltage low",
|
|
||||||
"Error 602": "Abnormal voltage at off-grid terminal",
|
|
||||||
"Error 603": "Off-grid soft start failed",
|
|
||||||
"Error 604": "Off-grid output voltage abnormal",
|
|
||||||
"Error 605": "Balanced circuit self-test failed",
|
|
||||||
"Error 606": "High DC in output voltage",
|
|
||||||
"Error 608": "Off-grid parallel signal abnormal",
|
|
||||||
"AFCI Fault": "Arc fault detected - Check PV connections",
|
|
||||||
"GFCI High": "High leakage current detected",
|
|
||||||
"PV Voltage High": "DC input voltage exceeds limit"
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container maxWidth="xl">
|
<Container maxWidth="xl">
|
||||||
|
|
@ -606,7 +324,7 @@ function Log(props: LogProps) {
|
||||||
<Box sx={{ mt: 2 }}>
|
<Box sx={{ mt: 2 }}>
|
||||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px', mb: 1 }}>
|
<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px', mb: 1 }}>
|
||||||
<Typography variant="caption" color="text.secondary">
|
<Typography variant="caption" color="text.secondary">
|
||||||
<strong>{demoResult.alarm}</strong>
|
<strong>{splitCamelCase(demoResult.alarm)}</strong>
|
||||||
</Typography>
|
</Typography>
|
||||||
{sourceChip(demoResult.source)}
|
{sourceChip(demoResult.source)}
|
||||||
</Box>
|
</Box>
|
||||||
|
|
@ -660,7 +378,7 @@ function Log(props: LogProps) {
|
||||||
<Box sx={{ padding: '16px' }}>
|
<Box sx={{ padding: '16px' }}>
|
||||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px', mb: 1 }}>
|
<Box sx={{ display: 'flex', alignItems: 'center', gap: '8px', mb: 1 }}>
|
||||||
<Typography variant="subtitle2" fontWeight="bold" color="primary">
|
<Typography variant="subtitle2" fontWeight="bold" color="primary">
|
||||||
{diag.description}
|
{diag.response.name || alarmDisplayName(diag.description)}
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography variant="caption" color="text.secondary">
|
<Typography variant="caption" color="text.secondary">
|
||||||
<FormattedMessage id="lastSeen" defaultMessage="Last seen" />: {diag.lastSeen}
|
<FormattedMessage id="lastSeen" defaultMessage="Last seen" />: {diag.lastSeen}
|
||||||
|
|
@ -717,7 +435,7 @@ function Log(props: LogProps) {
|
||||||
<Button
|
<Button
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={handleErrorButtonPressed}
|
onClick={handleErrorButtonPressed}
|
||||||
sx={{ marginTop: '20px', backgroundColor: errorButtonPressed ? '#808080' : 'default'}}
|
sx={{ marginTop: '20px', backgroundColor: errorButtonPressed ? '#808080' : 'default', textTransform: 'none' }}
|
||||||
>
|
>
|
||||||
<FormattedMessage id="Show Errors" defaultMessage="Show Errors" />
|
<FormattedMessage id="Show Errors" defaultMessage="Show Errors" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -907,7 +625,7 @@ function Log(props: LogProps) {
|
||||||
gutterBottom
|
gutterBottom
|
||||||
noWrap
|
noWrap
|
||||||
>
|
>
|
||||||
{errorDescriptionMap[error.description] || error.description}
|
{alarmDisplayName(error.description)}
|
||||||
</Typography>
|
</Typography>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|
@ -1028,7 +746,7 @@ function Log(props: LogProps) {
|
||||||
<Button
|
<Button
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={handleWarningButtonPressed}
|
onClick={handleWarningButtonPressed}
|
||||||
sx={{ marginTop: '20px', backgroundColor: warningButtonPressed ? '#808080' : 'default'}}
|
sx={{ marginTop: '20px', backgroundColor: warningButtonPressed ? '#808080' : 'default', textTransform: 'none' }}
|
||||||
|
|
||||||
>
|
>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
|
|
@ -1222,7 +940,7 @@ function Log(props: LogProps) {
|
||||||
gutterBottom
|
gutterBottom
|
||||||
noWrap
|
noWrap
|
||||||
>
|
>
|
||||||
{warningDescriptionMap[warning.description] || warning.description}
|
{alarmDisplayName(warning.description)}
|
||||||
</Typography>
|
</Typography>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ export interface Action {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DiagnosticResponse {
|
export interface DiagnosticResponse {
|
||||||
|
name: string;
|
||||||
explanation: string;
|
explanation: string;
|
||||||
causes: string[];
|
causes: string[];
|
||||||
nextSteps: string[];
|
nextSteps: string[];
|
||||||
|
|
|
||||||
|
|
@ -144,5 +144,234 @@
|
||||||
"demo_custom_group": "Benutzerdefiniert (kann Mistral KI verwenden)",
|
"demo_custom_group": "Benutzerdefiniert (kann Mistral KI verwenden)",
|
||||||
"demo_custom_option": "Benutzerdefinierten Alarm eingeben…",
|
"demo_custom_option": "Benutzerdefinierten Alarm eingeben…",
|
||||||
"demo_custom_placeholder": "z.B. UnknownBatteryFault",
|
"demo_custom_placeholder": "z.B. UnknownBatteryFault",
|
||||||
"demo_diagnose_button": "Diagnostizieren"
|
"demo_diagnose_button": "Diagnostizieren",
|
||||||
}
|
"alarm_AbnormalGridVoltage": "Unnormale Netzspannung",
|
||||||
|
"alarm_AbnormalGridFrequency": "Unnormale Netzfrequenz",
|
||||||
|
"alarm_InvertedSequenceOfGridVoltage": "Falsche Phasenreihenfolge",
|
||||||
|
"alarm_GridVoltagePhaseLoss": "Phasenausfall im Netz",
|
||||||
|
"alarm_AbnormalGridCurrent": "Unnormaler Netzstrom",
|
||||||
|
"alarm_AbnormalOutputVoltage": "Ungewöhnliche Ausgangsspannung",
|
||||||
|
"alarm_AbnormalOutputFrequency": "Ungewöhnliche Ausgangsfrequenz",
|
||||||
|
"alarm_AbnormalNullLine": "Fehlerhafter Nullleiter",
|
||||||
|
"alarm_AbnormalOffGridOutputVoltage": "Ungewöhnliche Backup-Spannung",
|
||||||
|
"alarm_ExcessivelyHighAmbientTemperature": "Zu hohe Umgebungstemperatur",
|
||||||
|
"alarm_ExcessiveRadiatorTemperature": "Überhitzter Kühlkörper",
|
||||||
|
"alarm_PcbOvertemperature": "Überhitzte Leiterplatte",
|
||||||
|
"alarm_DcConverterOvertemperature": "Überhitzter DC-Wandler",
|
||||||
|
"alarm_InverterOvertemperatureAlarm": "Warnung: Überhitzung",
|
||||||
|
"alarm_InverterOvertemperature": "Wechselrichter überhitzt",
|
||||||
|
"alarm_DcConverterOvertemperatureAlarm": "Übertemperaturalarm DC-Wandler",
|
||||||
|
"alarm_InsulationFault": "Isolationsfehler",
|
||||||
|
"alarm_LeakageProtectionFault": "Leckschutzfehler",
|
||||||
|
"alarm_AbnormalLeakageSelfCheck": "Anomaler Leckstrom-Selbsttest",
|
||||||
|
"alarm_PoorGrounding": "Schlechte Erdung",
|
||||||
|
"alarm_FanFault": "Lüfterfehler",
|
||||||
|
"alarm_AuxiliaryPowerFault": "Hilfsstromversorgung Fehler",
|
||||||
|
"alarm_ModelCapacityFault": "Modellkapazitätsfehler",
|
||||||
|
"alarm_AbnormalLightningArrester": "Überspannungsschutz Fehler",
|
||||||
|
"alarm_IslandProtection": "Inselbetrieb Schutz",
|
||||||
|
"alarm_Battery1NotConnected": "Batterie 1 nicht verbunden",
|
||||||
|
"alarm_Battery1Overvoltage": "Batterie 1 Überspannung",
|
||||||
|
"alarm_Battery1Undervoltage": "Batterie 1 Unterspannung",
|
||||||
|
"alarm_Battery1DischargeEnd": "Batterie 1 Entladung beendet",
|
||||||
|
"alarm_Battery1Inverted": "Batterie 1 Polarität vertauscht",
|
||||||
|
"alarm_Battery1OverloadTimeout": "Batterie 1 Überlastung",
|
||||||
|
"alarm_Battery1SoftStartFailure": "Batterie 1 Startfehler",
|
||||||
|
"alarm_Battery1PowerTubeFault": "Batterie 1 Leistungsteil defekt",
|
||||||
|
"alarm_Battery1InsufficientPower": "Batterie 1 Leistung unzureichend",
|
||||||
|
"alarm_Battery1BackupProhibited": "Batterie 1 Backup gesperrt",
|
||||||
|
"alarm_Battery2NotConnected": "Batterie 2 nicht verbunden",
|
||||||
|
"alarm_Battery2Overvoltage": "Batterie 2 Überspannung",
|
||||||
|
"alarm_Battery2Undervoltage": "Batterie 2 Unterspannung",
|
||||||
|
"alarm_Battery2DischargeEnd": "Batterie 2 Entladung beendet",
|
||||||
|
"alarm_Battery2Inverted": "Batterie 2 falsch angeschlossen",
|
||||||
|
"alarm_Battery2OverloadTimeout": "Batterie 2 Überlastung",
|
||||||
|
"alarm_Battery2SoftStartFailure": "Batterie 2 Startfehler",
|
||||||
|
"alarm_Battery2PowerTubeFault": "Batterie 2 Leistungsteil defekt",
|
||||||
|
"alarm_Battery2InsufficientPower": "Batterie 2 Leistung unzureichend",
|
||||||
|
"alarm_Battery2BackupProhibited": "Batterie 2 Backup gesperrt",
|
||||||
|
"alarm_LithiumBattery1ChargeForbidden": "Lithium-Batterie 1 Ladeverbot",
|
||||||
|
"alarm_LithiumBattery1DischargeForbidden": "Lithium-Batterie 1 Entladeverbot",
|
||||||
|
"alarm_LithiumBattery2ChargeForbidden": "Lithium-Batterie 2 Ladeverbot",
|
||||||
|
"alarm_LithiumBattery2DischargeForbidden": "Lithium-Batterie 2 Entladeverbot",
|
||||||
|
"alarm_LithiumBattery1Full": "Lithium-Batterie 1 voll",
|
||||||
|
"alarm_LithiumBattery1DischargeEnd": "Lithium-Batterie 1 entladen",
|
||||||
|
"alarm_LithiumBattery2Full": "Lithium-Batterie 2 voll",
|
||||||
|
"alarm_LithiumBattery2DischargeEnd": "Lithium-Batterie 2 entladen",
|
||||||
|
"alarm_LeadBatteryTemperatureAbnormality": "Batterietemperatur abnormal",
|
||||||
|
"alarm_BatteryAccessMethodError": "Batteriezugriffsfehler",
|
||||||
|
"alarm_Pv1NotAccessed": "PV1 nicht erreichbar",
|
||||||
|
"alarm_Pv1Overvoltage": "PV1 Überspannung",
|
||||||
|
"alarm_AbnormalPv1CurrentSharing": "Ungleichmäßiger PV1-Strom",
|
||||||
|
"alarm_Pv1PowerTubeFault": "PV1 Leistungstubus defekt",
|
||||||
|
"alarm_Pv1SoftStartFailure": "PV1 Soft-Start fehlgeschlagen",
|
||||||
|
"alarm_Pv1OverloadTimeout": "PV1-Überlastung",
|
||||||
|
"alarm_Pv1InsufficientPower": "PV1-Schwacher Strom",
|
||||||
|
"alarm_Photovoltaic1Overcurrent": "PV1-Überstrom",
|
||||||
|
"alarm_Pv2NotAccessed": "PV2-Nicht erkannt",
|
||||||
|
"alarm_Pv2Overvoltage": "PV2-Überspannung",
|
||||||
|
"alarm_AbnormalPv2CurrentSharing": "Ungewöhnliche Stromverteilung PV2",
|
||||||
|
"alarm_Pv2PowerTubeFault": "PV2-Leistungsrohrfehler",
|
||||||
|
"alarm_Pv2SoftStartFailure": "PV2-Softstart fehlgeschlagen",
|
||||||
|
"alarm_Pv2OverloadTimeout": "PV2-Überlastung Timeout",
|
||||||
|
"alarm_Pv2InsufficientPower": "Unzureichende Leistung PV2",
|
||||||
|
"alarm_Pv3NotConnected": "PV3 nicht verbunden",
|
||||||
|
"alarm_Pv3Overvoltage": "PV3 Überspannung",
|
||||||
|
"alarm_Pv3AverageCurrentAnomaly": "PV3 Stromanomalie",
|
||||||
|
"alarm_Pv3PowerTubeFailure": "PV3 Leistungselektronik defekt",
|
||||||
|
"alarm_Pv3SoftStartFailure": "PV3 Startfehler",
|
||||||
|
"alarm_Pv3OverloadTimeout": "PV3-Überlastung",
|
||||||
|
"alarm_Pv3ReverseConnection": "PV3-Falschpolung",
|
||||||
|
"alarm_Pv4NotConnected": "PV4 Nicht Verbunden",
|
||||||
|
"alarm_Pv4Overvoltage": "PV4 Überspannung",
|
||||||
|
"alarm_Pv4AverageCurrentAnomaly": "PV4 Stromanomalie",
|
||||||
|
"alarm_Pv4PowerTubeFailure": "PV4-Leistungsrohr defekt",
|
||||||
|
"alarm_Pv4SoftStartFailure": "PV4-Softstart fehlgeschlagen",
|
||||||
|
"alarm_Pv4OverloadTimeout": "PV4-Überlastung",
|
||||||
|
"alarm_Pv4ReverseConnection": "PV4 falsch angeschlossen",
|
||||||
|
"alarm_InsufficientPhotovoltaicPower": "Zu wenig Solarstrom",
|
||||||
|
"alarm_DcBusOvervoltage": "DC-Bus Überspannung",
|
||||||
|
"alarm_DcBusUndervoltage": "DC-Bus Unterspannung",
|
||||||
|
"alarm_DcBusVoltageUnbalance": "DC-Bus Spannungsungleichgewicht",
|
||||||
|
"alarm_BusSlowOvervoltage": "Langsame DC-Bus Überspannung",
|
||||||
|
"alarm_HardwareBusOvervoltage": "Hardware DC-Bus Überspannung",
|
||||||
|
"alarm_BusSoftStartFailure": "Fehler beim sanften Start",
|
||||||
|
"alarm_InverterPowerTubeFault": "Wechselrichter-Leistungshalbleiter defekt",
|
||||||
|
"alarm_HardwareOvercurrent": "Hardware-Überstrom",
|
||||||
|
"alarm_DcConverterOvervoltage": "DC-Wandler Überspannung",
|
||||||
|
"alarm_DcConverterHardwareOvervoltage": "DC-Wandler Hardware-Überspannung",
|
||||||
|
"alarm_DcConverterOvercurrent": "DC-Wandler Überstrom",
|
||||||
|
"alarm_DcConverterHardwareOvercurrent": "DC-Wandler Hardware-Überstrom",
|
||||||
|
"alarm_DcConverterResonatorOvercurrent": "DC-Wandler Resonanz-Überstrom",
|
||||||
|
"alarm_SystemOutputOverload": "Systemausgang überlastet",
|
||||||
|
"alarm_InverterOverload": "Wechselrichter überlastet",
|
||||||
|
"alarm_InverterOverloadTimeout": "Wechselrichter-Überlastung",
|
||||||
|
"alarm_LoadPowerOverload": "Überlastung der Lastleistung",
|
||||||
|
"alarm_BalancedCircuitOverloadTimeout": "Phasenausgleich-Überlastung",
|
||||||
|
"alarm_InverterSoftStartFailure": "Wechselrichter-Softstart-Fehler",
|
||||||
|
"alarm_Dsp1ParameterSettingFault": "DSP-Parameter-Fehler",
|
||||||
|
"alarm_Dsp2ParameterSettingFault": "DSP2 Parameterfehler",
|
||||||
|
"alarm_DspVersionCompatibilityFault": "DSP-Versionen nicht kompatibel",
|
||||||
|
"alarm_CpldVersionCompatibilityFault": "CPLD-Version nicht kompatibel",
|
||||||
|
"alarm_CpldCommunicationFault": "CPLD-Kommunikationsfehler",
|
||||||
|
"alarm_DspCommunicationFault": "DSP-Kommunikationsfehler",
|
||||||
|
"alarm_OutputVoltageDcOverlimit": "DC-Spannung zu hoch",
|
||||||
|
"alarm_OutputCurrentDcOverlimit": "DC-Strom zu hoch",
|
||||||
|
"alarm_RelaySelfCheckFails": "Relais-Selbsttest fehlgeschlagen",
|
||||||
|
"alarm_InverterRelayOpen": "Wechselrichter-Relais offen",
|
||||||
|
"alarm_InverterRelayShortCircuit": "Wechselrichter-Relais Kurzschluss",
|
||||||
|
"alarm_OpenCircuitOfPowerGridRelay": "Netzrelais offen",
|
||||||
|
"alarm_ShortCircuitOfPowerGridRelay": "Netzrelais kurzgeschlossen",
|
||||||
|
"alarm_GeneratorRelayOpenCircuit": "Generatorrelais offen",
|
||||||
|
"alarm_GeneratorRelayShortCircuit": "Generatorrelais kurzgeschlossen",
|
||||||
|
"alarm_AbnormalInverter": "Wechselrichter abnormal",
|
||||||
|
"alarm_ParallelCommunicationAlarm": "Parallelkommunikationsalarm",
|
||||||
|
"alarm_ParallelModuleMissing": "Parallelmodul fehlt",
|
||||||
|
"alarm_DuplicateMachineNumbersForParallelModules": "Doppelte Gerätenummern",
|
||||||
|
"alarm_ParameterConflictInParallelModule": "Parameterkonflikt im Parallelmodul",
|
||||||
|
"alarm_SystemDerating": "Systemleistung reduziert",
|
||||||
|
"alarm_PvAccessMethodErrorAlarm": "PV-Zugriffsfehler",
|
||||||
|
"alarm_ReservedAlarms4": "Reservierter Alarm 4",
|
||||||
|
"alarm_ReservedAlarms5": "Reservierter Alarm 5",
|
||||||
|
"alarm_ReverseMeterConnection": "Zähler falsch angeschlossen",
|
||||||
|
"alarm_InverterSealPulse": "Wechselrichter-Leistungsbegrenzung",
|
||||||
|
"alarm_AbnormalDieselGeneratorVoltage": "Ungewöhnliche Dieselgenerator-Spannung",
|
||||||
|
"alarm_AbnormalDieselGeneratorFrequency": "Ungewöhnliche Dieselgenerator-Frequenz",
|
||||||
|
"alarm_DieselGeneratorVoltageReverseSequence": "Falsche Phasenfolge des Generators",
|
||||||
|
"alarm_DieselGeneratorVoltageOutOfPhase": "Generator nicht synchronisiert",
|
||||||
|
"alarm_GeneratorOverload": "Generator überlastet",
|
||||||
|
"alarm_StringFault": "PV-String-Fehler",
|
||||||
|
"alarm_PvStringPidQuickConnectAbnormal": "PV-String-Anschluss defekt",
|
||||||
|
"alarm_DcSpdFunctionAbnormal": "DC-Überspannungsschutz defekt",
|
||||||
|
"alarm_PvShortCircuited": "PV-String kurzgeschlossen",
|
||||||
|
"alarm_PvBoostDriverAbnormal": "PV-Boost-Treiber defekt",
|
||||||
|
"alarm_AcSpdFunctionAbnormal": "AC-Überspannungsschutz defekt",
|
||||||
|
"alarm_DcFuseBlown": "DC-Sicherung durchgebrannt",
|
||||||
|
"alarm_DcInputVoltageTooHigh": "DC-Eingangsspannung zu hoch",
|
||||||
|
"alarm_PvReversed": "PV-Polarität vertauscht",
|
||||||
|
"alarm_PidFunctionAbnormal": "PID-Schutzfunktion gestört",
|
||||||
|
"alarm_PvStringDisconnected": "PV-String getrennt",
|
||||||
|
"alarm_PvStringCurrentUnbalanced": "PV-String Strom unausgeglichen",
|
||||||
|
"alarm_NoUtilityGrid": "Kein Stromnetz",
|
||||||
|
"alarm_GridVoltageOutOfRange": "Netzspannung außerhalb des Bereichs",
|
||||||
|
"alarm_GridFrequencyOutOfRange": "Netzfrequenz außerhalb des Bereichs",
|
||||||
|
"alarm_Overload": "Überlastung",
|
||||||
|
"alarm_MeterDisconnected": "Stromzähler getrennt",
|
||||||
|
"alarm_MeterReverselyConnected": "Zähler falsch angeschlossen",
|
||||||
|
"alarm_LinePeVoltageAbnormal": "Abnormale PE-Spannung",
|
||||||
|
"alarm_PhaseSequenceError": "Phasenfolgefehler",
|
||||||
|
"alarm_FanFailure": "Lüfterausfall",
|
||||||
|
"alarm_MeterAbnormal": "Störungsanzeige Zähler",
|
||||||
|
"alarm_OptimizerCommunicationAbnormal": "Kommunikationsstörung Optimierer",
|
||||||
|
"alarm_OverTemperature": "Überhitzung",
|
||||||
|
"alarm_OverTemperatureAlarm": "Überhitzungswarnung",
|
||||||
|
"alarm_NtcTemperatureSensorBroken": "Temperatursensor defekt",
|
||||||
|
"alarm_SyncSignalAbnormal": "Synchronisationsfehler",
|
||||||
|
"alarm_GridStartupConditionsNotMet": "Netzstartbedingungen nicht erfüllt",
|
||||||
|
"alarm_BatteryCommunicationFailure": "Batteriekommunikation fehlgeschlagen",
|
||||||
|
"alarm_BatteryDisconnected": "Batterie getrennt",
|
||||||
|
"alarm_BatteryVoltageTooHigh": "Batteriespannung zu hoch",
|
||||||
|
"alarm_BatteryVoltageTooLow": "Batteriespannung zu niedrig",
|
||||||
|
"alarm_BatteryReverseConnected": "Batterie falsch angeschlossen",
|
||||||
|
"alarm_LeadAcidTempSensorDisconnected": "Temperatursensor nicht angeschlossen",
|
||||||
|
"alarm_BatteryTemperatureOutOfRange": "Batterietemperatur außerhalb des Bereichs",
|
||||||
|
"alarm_BmsFault": "BMS-Fehler",
|
||||||
|
"alarm_LithiumBatteryOverload": "Batterie-Überlastung",
|
||||||
|
"alarm_BmsCommunicationAbnormal": "BMS-Kommunikationsfehler",
|
||||||
|
"alarm_BatterySpdAbnormal": "Batterie-Überspannungsschutz",
|
||||||
|
"alarm_OutputDcComponentBiasAbnormal": "DC-Versatz im Ausgang",
|
||||||
|
"alarm_DcComponentOverHighOutputVoltage": "DC-Komponente zu hohe Ausgangsspannung",
|
||||||
|
"alarm_OffGridOutputVoltageTooLow": "Netzunabhängige Ausgangsspannung zu niedrig",
|
||||||
|
"alarm_OffGridOutputVoltageTooHigh": "Netzunabhängige Ausgangsspannung zu hoch",
|
||||||
|
"alarm_OffGridOutputOverCurrent": "Netzunabhängiger Ausgangsüberstrom",
|
||||||
|
"alarm_OffGridOutputOverload": "Netzunabhängiger Ausgang überlastet",
|
||||||
|
"alarm_BalancedCircuitAbnormal": "Phasenausgleich gestört",
|
||||||
|
"alarm_ExportLimitationFailSafe": "Exportbegrenzung Notaus",
|
||||||
|
"alarm_DcBiasAbnormal": "DC-Vorspannung abnormal",
|
||||||
|
"alarm_HighDcComponentOutputCurrent": "Hohe DC-Komponente im Ausgangsstrom",
|
||||||
|
"alarm_BusVoltageSamplingAbnormal": "Spannungsmessung defekt",
|
||||||
|
"alarm_RelayFault": "Relaisfehler",
|
||||||
|
"alarm_BusVoltageAbnormal": "Gleichspannung abnormal",
|
||||||
|
"alarm_InternalCommunicationFailure": "Interne Kommunikation ausgefallen",
|
||||||
|
"alarm_TemperatureSensorDisconnected": "Temperatursensor getrennt",
|
||||||
|
"alarm_IgbtDriveFault": "IGBT-Ansteuerungsfehler",
|
||||||
|
"alarm_EepromError": "EEPROM-Fehler",
|
||||||
|
"alarm_AuxiliaryPowerAbnormal": "Hilfsstromversorgung abnormal",
|
||||||
|
"alarm_DcAcOvercurrentProtection": "Überstromschutz aktiviert",
|
||||||
|
"alarm_CommunicationProtocolMismatch": "Kommunikationsprotokoll-Fehler",
|
||||||
|
"alarm_DspComFirmwareMismatch": "Firmware-Inkompatibilität DSP/COM",
|
||||||
|
"alarm_DspSoftwareHardwareMismatch": "DSP-Software-Hardware-Inkompatibilität",
|
||||||
|
"alarm_CpldAbnormal": "CPLD-Fehler",
|
||||||
|
"alarm_RedundancySamplingInconsistent": "Inkonsistente redundante Messungen",
|
||||||
|
"alarm_PwmPassThroughSignalFailure": "PWM-Signalweg ausgefallen",
|
||||||
|
"alarm_AfciSelfTestFailure": "AFCI-Selbsttest fehlgeschlagen",
|
||||||
|
"alarm_PvCurrentSamplingAbnormal": "PV-Strommessung abnormal",
|
||||||
|
"alarm_AcCurrentSamplingAbnormal": "AC-Strommessung abnormal",
|
||||||
|
"alarm_BusSoftbootFailure": "DC-Bus-Vorstart fehlgeschlagen",
|
||||||
|
"alarm_EpoFault": "EPO-Fehler (Notaus)",
|
||||||
|
"alarm_MonitoringChipBootVerificationFailed": "Überwachungs-Chip Startfehler",
|
||||||
|
"alarm_BmsCommunicationFailure": "BMS-Kommunikationsfehler",
|
||||||
|
"alarm_BmsChargeDischargeFailure": "BMS-Lade-/Entladefehler",
|
||||||
|
"alarm_BatteryVoltageLow": "Batteriespannung zu niedrig",
|
||||||
|
"alarm_BatteryVoltageHigh": "Batteriespannung zu hoch",
|
||||||
|
"alarm_BatteryTemperatureAbnormal": "Batterietemperatur ungewöhnlich",
|
||||||
|
"alarm_BatteryReversed": "Batterie verkehrt herum",
|
||||||
|
"alarm_BatteryOpenCircuit": "Batteriekreis offen",
|
||||||
|
"alarm_BatteryOverloadProtection": "Batterieüberlastungsschutz",
|
||||||
|
"alarm_Bus2VoltageAbnormal": "Bus2-Spannung ungewöhnlich",
|
||||||
|
"alarm_BatteryChargeOcp": "Batterieladung Überstrom",
|
||||||
|
"alarm_BatteryDischargeOcp": "Batterieentladung Überstrom",
|
||||||
|
"alarm_BatterySoftStartFailed": "Batterie-Softstart fehlgeschlagen",
|
||||||
|
"alarm_EpsOutputShortCircuited": "EPS-Ausgang kurzgeschlossen",
|
||||||
|
"alarm_OffGridBusVoltageLow": "Netzunabhängige Busspannung zu niedrig",
|
||||||
|
"alarm_OffGridTerminalVoltageAbnormal": "Abnormale Spannung am Netzausgang",
|
||||||
|
"alarm_SoftStartFailed": "Sanfter Start fehlgeschlagen",
|
||||||
|
"alarm_OffGridOutputVoltageAbnormal": "Abnormale Ausgangsspannung im Netzmodus",
|
||||||
|
"alarm_BalancedCircuitSelfTestFailed": "Ausgleichsschaltungstest fehlgeschlagen",
|
||||||
|
"alarm_HighDcComponentOutputVoltage": "Hohe Gleichspannungskomponente im Ausgang",
|
||||||
|
"alarm_OffGridParallelSignalAbnormal": "Parallelsignalstörung",
|
||||||
|
"alarm_AFCIFault": "Lichtbogenfehler",
|
||||||
|
"alarm_GFCIHigh": "Erhöhter Fehlerstrom",
|
||||||
|
"alarm_PVVoltageHigh": "PV-Spannung zu hoch",
|
||||||
|
"alarm_OffGridBusVoltageTooLow": "Off-Grid-Busspannung zu niedrig"
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,5 +138,234 @@
|
||||||
"demo_custom_group": "Personnalisé (peut utiliser Mistral IA)",
|
"demo_custom_group": "Personnalisé (peut utiliser Mistral IA)",
|
||||||
"demo_custom_option": "Saisir une alarme personnalisée…",
|
"demo_custom_option": "Saisir une alarme personnalisée…",
|
||||||
"demo_custom_placeholder": "ex. UnknownBatteryFault",
|
"demo_custom_placeholder": "ex. UnknownBatteryFault",
|
||||||
"demo_diagnose_button": "Diagnostiquer"
|
"demo_diagnose_button": "Diagnostiquer",
|
||||||
|
"alarm_AbnormalGridVoltage": "Tension réseau anormale",
|
||||||
|
"alarm_AbnormalGridFrequency": "Fréquence réseau anormale",
|
||||||
|
"alarm_InvertedSequenceOfGridVoltage": "Séquence de tension inversée",
|
||||||
|
"alarm_GridVoltagePhaseLoss": "Perte de phase réseau",
|
||||||
|
"alarm_AbnormalGridCurrent": "Courant réseau anormal",
|
||||||
|
"alarm_AbnormalOutputVoltage": "Tension de sortie anormale",
|
||||||
|
"alarm_AbnormalOutputFrequency": "Fréquence de sortie anormale",
|
||||||
|
"alarm_AbnormalNullLine": "Ligne neutre anormale",
|
||||||
|
"alarm_AbnormalOffGridOutputVoltage": "Tension de sortie hors réseau anormale",
|
||||||
|
"alarm_ExcessivelyHighAmbientTemperature": "Température ambiante trop élevée",
|
||||||
|
"alarm_ExcessiveRadiatorTemperature": "Température excessive du radiateur",
|
||||||
|
"alarm_PcbOvertemperature": "Température excessive PCB",
|
||||||
|
"alarm_DcConverterOvertemperature": "Température excessive convertisseur DC",
|
||||||
|
"alarm_InverterOvertemperatureAlarm": "Alarme température onduleur",
|
||||||
|
"alarm_InverterOvertemperature": "Température onduleur excessive",
|
||||||
|
"alarm_DcConverterOvertemperatureAlarm": "Alarme surchauffe convertisseur DC",
|
||||||
|
"alarm_InsulationFault": "Défaut d'isolation",
|
||||||
|
"alarm_LeakageProtectionFault": "Défaut protection fuite",
|
||||||
|
"alarm_AbnormalLeakageSelfCheck": "Auto-test fuite anormale",
|
||||||
|
"alarm_PoorGrounding": "Mise à la terre insuffisante",
|
||||||
|
"alarm_FanFault": "Défaut du ventilateur",
|
||||||
|
"alarm_AuxiliaryPowerFault": "Défaut d'alimentation auxiliaire",
|
||||||
|
"alarm_ModelCapacityFault": "Défaut de configuration",
|
||||||
|
"alarm_AbnormalLightningArrester": "Paratonnerre défectueux",
|
||||||
|
"alarm_IslandProtection": "Protection d'îlotage",
|
||||||
|
"alarm_Battery1NotConnected": "Batterie 1 non connectée",
|
||||||
|
"alarm_Battery1Overvoltage": "Tension batterie 1 trop élevée",
|
||||||
|
"alarm_Battery1Undervoltage": "Tension batterie 1 trop basse",
|
||||||
|
"alarm_Battery1DischargeEnd": "Fin de décharge batterie 1",
|
||||||
|
"alarm_Battery1Inverted": "Polarité batterie 1 inversée",
|
||||||
|
"alarm_Battery1OverloadTimeout": "Dépassement de charge Batterie 1",
|
||||||
|
"alarm_Battery1SoftStartFailure": "Échec démarrage Batterie 1",
|
||||||
|
"alarm_Battery1PowerTubeFault": "Défaut électronique Batterie 1",
|
||||||
|
"alarm_Battery1InsufficientPower": "Puissance insuffisante Batterie 1",
|
||||||
|
"alarm_Battery1BackupProhibited": "Sauvegarde interdite Batterie 1",
|
||||||
|
"alarm_Battery2NotConnected": "Batterie 2 non connectée",
|
||||||
|
"alarm_Battery2Overvoltage": "Tension batterie 2 élevée",
|
||||||
|
"alarm_Battery2Undervoltage": "Tension batterie 2 basse",
|
||||||
|
"alarm_Battery2DischargeEnd": "Fin décharge batterie 2",
|
||||||
|
"alarm_Battery2Inverted": "Polarité batterie 2 inversée",
|
||||||
|
"alarm_Battery2OverloadTimeout": "Dépassement de charge Batterie 2",
|
||||||
|
"alarm_Battery2SoftStartFailure": "Échec démarrage Batterie 2",
|
||||||
|
"alarm_Battery2PowerTubeFault": "Défaut électronique Batterie 2",
|
||||||
|
"alarm_Battery2InsufficientPower": "Puissance insuffisante Batterie 2",
|
||||||
|
"alarm_Battery2BackupProhibited": "Sauvegarde interdite Batterie 2",
|
||||||
|
"alarm_LithiumBattery1ChargeForbidden": "Charge batterie lithium 1 interdite",
|
||||||
|
"alarm_LithiumBattery1DischargeForbidden": "Décharge batterie lithium 1 interdite",
|
||||||
|
"alarm_LithiumBattery2ChargeForbidden": "Charge batterie lithium 2 interdite",
|
||||||
|
"alarm_LithiumBattery2DischargeForbidden": "Décharge batterie lithium 2 interdite",
|
||||||
|
"alarm_LithiumBattery1Full": "Batterie lithium 1 pleine",
|
||||||
|
"alarm_LithiumBattery1DischargeEnd": "Fin de décharge batterie lithium 1",
|
||||||
|
"alarm_LithiumBattery2Full": "Batterie lithium 2 pleine",
|
||||||
|
"alarm_LithiumBattery2DischargeEnd": "Fin de décharge batterie lithium 2",
|
||||||
|
"alarm_LeadBatteryTemperatureAbnormality": "Température anormale batterie plomb",
|
||||||
|
"alarm_BatteryAccessMethodError": "Erreur de méthode d'accès batterie",
|
||||||
|
"alarm_Pv1NotAccessed": "Chaîne PV1 non accessible",
|
||||||
|
"alarm_Pv1Overvoltage": "Survoltage PV1",
|
||||||
|
"alarm_AbnormalPv1CurrentSharing": "Partage de courant PV1 anormal",
|
||||||
|
"alarm_Pv1PowerTubeFault": "Défaut du tube de puissance PV1",
|
||||||
|
"alarm_Pv1SoftStartFailure": "Échec de démarrage doux PV1",
|
||||||
|
"alarm_Pv1OverloadTimeout": "Dépassement de charge PV1",
|
||||||
|
"alarm_Pv1InsufficientPower": "Puissance PV1 insuffisante",
|
||||||
|
"alarm_Photovoltaic1Overcurrent": "Surintensité PV1",
|
||||||
|
"alarm_Pv2NotAccessed": "Chaîne PV2 inaccessible",
|
||||||
|
"alarm_Pv2Overvoltage": "Survoltage PV2",
|
||||||
|
"alarm_AbnormalPv2CurrentSharing": "Partage de courant anormal PV2",
|
||||||
|
"alarm_Pv2PowerTubeFault": "Défaillance du tube de puissance PV2",
|
||||||
|
"alarm_Pv2SoftStartFailure": "Échec de démarrage progressif PV2",
|
||||||
|
"alarm_Pv2OverloadTimeout": "Dépassement de charge PV2",
|
||||||
|
"alarm_Pv2InsufficientPower": "Puissance insuffisante PV2",
|
||||||
|
"alarm_Pv3NotConnected": "PV3 non connecté",
|
||||||
|
"alarm_Pv3Overvoltage": "Survoltage PV3",
|
||||||
|
"alarm_Pv3AverageCurrentAnomaly": "Anomalie courant PV3",
|
||||||
|
"alarm_Pv3PowerTubeFailure": "Défaillance tube PV3",
|
||||||
|
"alarm_Pv3SoftStartFailure": "Échec démarrage PV3",
|
||||||
|
"alarm_Pv3OverloadTimeout": "Dépassement de charge PV3",
|
||||||
|
"alarm_Pv3ReverseConnection": "Connexion inversée PV3",
|
||||||
|
"alarm_Pv4NotConnected": "Chaîne PV4 non connectée",
|
||||||
|
"alarm_Pv4Overvoltage": "Survoltage PV4",
|
||||||
|
"alarm_Pv4AverageCurrentAnomaly": "Anomalie de courant PV4",
|
||||||
|
"alarm_Pv4PowerTubeFailure": "Défaillance du tube de puissance PV4",
|
||||||
|
"alarm_Pv4SoftStartFailure": "Échec du démarrage progressif PV4",
|
||||||
|
"alarm_Pv4OverloadTimeout": "Dépassement de charge PV4",
|
||||||
|
"alarm_Pv4ReverseConnection": "Connexion inversée PV4",
|
||||||
|
"alarm_InsufficientPhotovoltaicPower": "Puissance photovoltaïque insuffisante",
|
||||||
|
"alarm_DcBusOvervoltage": "Tension DC trop élevée",
|
||||||
|
"alarm_DcBusUndervoltage": "Tension DC trop basse",
|
||||||
|
"alarm_DcBusVoltageUnbalance": "Déséquilibre tension DC",
|
||||||
|
"alarm_BusSlowOvervoltage": "Tension DC lente excessive",
|
||||||
|
"alarm_HardwareBusOvervoltage": "Tension DC critique",
|
||||||
|
"alarm_BusSoftStartFailure": "Échec démarrage progressif",
|
||||||
|
"alarm_InverterPowerTubeFault": "Défaut tube de puissance",
|
||||||
|
"alarm_HardwareOvercurrent": "Surintensité matérielle",
|
||||||
|
"alarm_DcConverterOvervoltage": "Survoltage convertisseur DC",
|
||||||
|
"alarm_DcConverterHardwareOvervoltage": "Survoltage matériel convertisseur DC",
|
||||||
|
"alarm_DcConverterOvercurrent": "Surintensité convertisseur CC",
|
||||||
|
"alarm_DcConverterHardwareOvercurrent": "Surintensité matérielle convertisseur CC",
|
||||||
|
"alarm_DcConverterResonatorOvercurrent": "Surintensité résonateur convertisseur CC",
|
||||||
|
"alarm_SystemOutputOverload": "Surcharge de sortie système",
|
||||||
|
"alarm_InverterOverload": "Surcharge onduleur",
|
||||||
|
"alarm_InverterOverloadTimeout": "Dépassement de charge de l'onduleur",
|
||||||
|
"alarm_LoadPowerOverload": "Surcharge de puissance de charge",
|
||||||
|
"alarm_BalancedCircuitOverloadTimeout": "Dépassement de charge du circuit équilibré",
|
||||||
|
"alarm_InverterSoftStartFailure": "Échec de démarrage progressif de l'onduleur",
|
||||||
|
"alarm_Dsp1ParameterSettingFault": "Défaillance de paramétrage DSP 1",
|
||||||
|
"alarm_Dsp2ParameterSettingFault": "Paramètre DSP2 incorrect",
|
||||||
|
"alarm_DspVersionCompatibilityFault": "Incompatibilité version DSP",
|
||||||
|
"alarm_CpldVersionCompatibilityFault": "Incompatibilité version CPLD",
|
||||||
|
"alarm_CpldCommunicationFault": "Échec communication CPLD",
|
||||||
|
"alarm_DspCommunicationFault": "Échec communication DSP",
|
||||||
|
"alarm_OutputVoltageDcOverlimit": "Tension de sortie DC excessive",
|
||||||
|
"alarm_OutputCurrentDcOverlimit": "Courant de sortie DC excessif",
|
||||||
|
"alarm_RelaySelfCheckFails": "Auto-test relais échoué",
|
||||||
|
"alarm_InverterRelayOpen": "Relais de l'onduleur ouvert",
|
||||||
|
"alarm_InverterRelayShortCircuit": "Relais de l'onduleur en court-circuit",
|
||||||
|
"alarm_OpenCircuitOfPowerGridRelay": "Relais du réseau ouvert",
|
||||||
|
"alarm_ShortCircuitOfPowerGridRelay": "Court-circuit du relais réseau",
|
||||||
|
"alarm_GeneratorRelayOpenCircuit": "Relais du générateur ouvert",
|
||||||
|
"alarm_GeneratorRelayShortCircuit": "Court-circuit du relais générateur",
|
||||||
|
"alarm_AbnormalInverter": "Onduleur anormal",
|
||||||
|
"alarm_ParallelCommunicationAlarm": "Alarme de communication parallèle",
|
||||||
|
"alarm_ParallelModuleMissing": "Module parallèle manquant",
|
||||||
|
"alarm_DuplicateMachineNumbersForParallelModules": "Numéros de machine en double",
|
||||||
|
"alarm_ParameterConflictInParallelModule": "Conflit de paramètres parallèle",
|
||||||
|
"alarm_SystemDerating": "Réduction de puissance du système",
|
||||||
|
"alarm_PvAccessMethodErrorAlarm": "Erreur méthode d'accès PV",
|
||||||
|
"alarm_ReservedAlarms4": "Alarme réservée 4",
|
||||||
|
"alarm_ReservedAlarms5": "Alarme réservée 5",
|
||||||
|
"alarm_ReverseMeterConnection": "Connexion du compteur inversée",
|
||||||
|
"alarm_InverterSealPulse": "Impulsion de scellement de l'onduleur",
|
||||||
|
"alarm_AbnormalDieselGeneratorVoltage": "Tension anormale du générateur diesel",
|
||||||
|
"alarm_AbnormalDieselGeneratorFrequency": "Fréquence anormale du générateur diesel",
|
||||||
|
"alarm_DieselGeneratorVoltageReverseSequence": "Séquence de phase inversée du générateur",
|
||||||
|
"alarm_DieselGeneratorVoltageOutOfPhase": "Déphasage du générateur",
|
||||||
|
"alarm_GeneratorOverload": "Surcharge du générateur",
|
||||||
|
"alarm_StringFault": "Défaut de chaîne",
|
||||||
|
"alarm_PvStringPidQuickConnectAbnormal": "Connexion rapide anormale",
|
||||||
|
"alarm_DcSpdFunctionAbnormal": "Problème de protection DC",
|
||||||
|
"alarm_PvShortCircuited": "Court-circuit PV",
|
||||||
|
"alarm_PvBoostDriverAbnormal": "Problème de convertisseur",
|
||||||
|
"alarm_AcSpdFunctionAbnormal": "Problème de protection contre les surtensions AC",
|
||||||
|
"alarm_DcFuseBlown": "Fusible DC grillé",
|
||||||
|
"alarm_DcInputVoltageTooHigh": "Tension DC d'entrée trop élevée",
|
||||||
|
"alarm_PvReversed": "Polarité PV inversée",
|
||||||
|
"alarm_PidFunctionAbnormal": "Problème de fonction PID",
|
||||||
|
"alarm_PvStringDisconnected": "Chaîne PV déconnectée",
|
||||||
|
"alarm_PvStringCurrentUnbalanced": "Déséquilibre de courant PV",
|
||||||
|
"alarm_NoUtilityGrid": "Réseau électrique absent",
|
||||||
|
"alarm_GridVoltageOutOfRange": "Tension réseau hors plage",
|
||||||
|
"alarm_GridFrequencyOutOfRange": "Fréquence réseau hors plage",
|
||||||
|
"alarm_Overload": "Surcharge",
|
||||||
|
"alarm_MeterDisconnected": "Compteur déconnecté",
|
||||||
|
"alarm_MeterReverselyConnected": "Compteur inversé",
|
||||||
|
"alarm_LinePeVoltageAbnormal": "Tension anormale",
|
||||||
|
"alarm_PhaseSequenceError": "Séquence de phase erronée",
|
||||||
|
"alarm_FanFailure": "Défaillance du ventilateur",
|
||||||
|
"alarm_MeterAbnormal": "Compteur anormal",
|
||||||
|
"alarm_OptimizerCommunicationAbnormal": "Communication optimiseur anormale",
|
||||||
|
"alarm_OverTemperature": "Température excessive",
|
||||||
|
"alarm_OverTemperatureAlarm": "Alarme température élevée",
|
||||||
|
"alarm_NtcTemperatureSensorBroken": "Capteur de température défectueux",
|
||||||
|
"alarm_SyncSignalAbnormal": "Signal de synchronisation anormal",
|
||||||
|
"alarm_GridStartupConditionsNotMet": "Conditions de démarrage réseau non remplies",
|
||||||
|
"alarm_BatteryCommunicationFailure": "Échec de communication batterie",
|
||||||
|
"alarm_BatteryDisconnected": "Batterie déconnectée",
|
||||||
|
"alarm_BatteryVoltageTooHigh": "Tension batterie trop élevée",
|
||||||
|
"alarm_BatteryVoltageTooLow": "Tension batterie trop basse",
|
||||||
|
"alarm_BatteryReverseConnected": "Batterie branchée à l'envers",
|
||||||
|
"alarm_LeadAcidTempSensorDisconnected": "Capteur température batterie plomb désactivé",
|
||||||
|
"alarm_BatteryTemperatureOutOfRange": "Température batterie hors plage",
|
||||||
|
"alarm_BmsFault": "Défaillance BMS",
|
||||||
|
"alarm_LithiumBatteryOverload": "Surcharge batterie lithium",
|
||||||
|
"alarm_BmsCommunicationAbnormal": "Communication BMS anormale",
|
||||||
|
"alarm_BatterySpdAbnormal": "Défaillance SPD batterie",
|
||||||
|
"alarm_OutputDcComponentBiasAbnormal": "Biais DC de sortie anormal",
|
||||||
|
"alarm_DcComponentOverHighOutputVoltage": "Tension de sortie trop élevée",
|
||||||
|
"alarm_OffGridOutputVoltageTooLow": "Tension de sortie hors réseau trop basse",
|
||||||
|
"alarm_OffGridOutputVoltageTooHigh": "Tension de sortie hors réseau trop élevée",
|
||||||
|
"alarm_OffGridOutputOverCurrent": "Courant de sortie hors réseau trop élevé",
|
||||||
|
"alarm_OffGridOutputOverload": "Surcharge sortie hors réseau",
|
||||||
|
"alarm_BalancedCircuitAbnormal": "Circuit équilibré anormal",
|
||||||
|
"alarm_ExportLimitationFailSafe": "Sécurité limite d'exportation",
|
||||||
|
"alarm_DcBiasAbnormal": "Biais DC anormal",
|
||||||
|
"alarm_HighDcComponentOutputCurrent": "Composante DC élevée courant de sortie",
|
||||||
|
"alarm_BusVoltageSamplingAbnormal": "Tension d'alimentation anormale",
|
||||||
|
"alarm_RelayFault": "Défaillance du relais",
|
||||||
|
"alarm_BusVoltageAbnormal": "Tension d'alimentation anormale",
|
||||||
|
"alarm_InternalCommunicationFailure": "Échec de communication interne",
|
||||||
|
"alarm_TemperatureSensorDisconnected": "Capteur de température déconnecté",
|
||||||
|
"alarm_IgbtDriveFault": "Défaillance de l'IGBT",
|
||||||
|
"alarm_EepromError": "Erreur EEPROM",
|
||||||
|
"alarm_AuxiliaryPowerAbnormal": "Alimentation auxiliaire anormale",
|
||||||
|
"alarm_DcAcOvercurrentProtection": "Protection contre les surintensités",
|
||||||
|
"alarm_CommunicationProtocolMismatch": "Incompatibilité de protocole",
|
||||||
|
"alarm_DspComFirmwareMismatch": "Incompatibilité firmware DSP/COM",
|
||||||
|
"alarm_DspSoftwareHardwareMismatch": "Incompatibilité logiciel DSP/matériel",
|
||||||
|
"alarm_CpldAbnormal": "CPLD anormal",
|
||||||
|
"alarm_RedundancySamplingInconsistent": "Échantillonnage redondant incohérent",
|
||||||
|
"alarm_PwmPassThroughSignalFailure": "Échec signal PWM",
|
||||||
|
"alarm_AfciSelfTestFailure": "Échec auto-test AFCI",
|
||||||
|
"alarm_PvCurrentSamplingAbnormal": "Mesure PV anormale",
|
||||||
|
"alarm_AcCurrentSamplingAbnormal": "Mesure AC anormale",
|
||||||
|
"alarm_BusSoftbootFailure": "Échec démarrage DC",
|
||||||
|
"alarm_EpoFault": "Défaillance EPO",
|
||||||
|
"alarm_MonitoringChipBootVerificationFailed": "Échec vérification démarrage",
|
||||||
|
"alarm_BmsCommunicationFailure": "Échec communication BMS",
|
||||||
|
"alarm_BmsChargeDischargeFailure": "Échec charge/décharge BMS",
|
||||||
|
"alarm_BatteryVoltageLow": "Tension batterie faible",
|
||||||
|
"alarm_BatteryVoltageHigh": "Tension batterie élevée",
|
||||||
|
"alarm_BatteryTemperatureAbnormal": "Température anormale de la batterie",
|
||||||
|
"alarm_BatteryReversed": "Batterie inversée",
|
||||||
|
"alarm_BatteryOpenCircuit": "Circuit batterie ouvert",
|
||||||
|
"alarm_BatteryOverloadProtection": "Protection contre la surcharge",
|
||||||
|
"alarm_Bus2VoltageAbnormal": "Tension anormale Bus2",
|
||||||
|
"alarm_BatteryChargeOcp": "Surintensité charge batterie",
|
||||||
|
"alarm_BatteryDischargeOcp": "Surintensité décharge batterie",
|
||||||
|
"alarm_BatterySoftStartFailed": "Démarrage en douceur échoué",
|
||||||
|
"alarm_EpsOutputShortCircuited": "Circuit de secours en court-circuit",
|
||||||
|
"alarm_OffGridBusVoltageLow": "Tension bus hors réseau basse",
|
||||||
|
"alarm_OffGridTerminalVoltageAbnormal": "Tension anormale terminal hors réseau",
|
||||||
|
"alarm_SoftStartFailed": "Démarrage progressif échoué",
|
||||||
|
"alarm_OffGridOutputVoltageAbnormal": "Tension de sortie hors réseau anormale",
|
||||||
|
"alarm_BalancedCircuitSelfTestFailed": "Autotest circuit équilibré échoué",
|
||||||
|
"alarm_HighDcComponentOutputVoltage": "Tension de sortie à composante CC élevée",
|
||||||
|
"alarm_OffGridParallelSignalAbnormal": "Signal parallèle hors réseau anormal",
|
||||||
|
"alarm_AFCIFault": "Défaillance AFCI",
|
||||||
|
"alarm_GFCIHigh": "Courant de défaut élevé",
|
||||||
|
"alarm_PVVoltageHigh": "Tension PV élevée",
|
||||||
|
"alarm_OffGridBusVoltageTooLow": "Tension du bus hors réseau trop faible"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -149,5 +149,234 @@
|
||||||
"demo_custom_group": "Personalizzato (potrebbe usare Mistral IA)",
|
"demo_custom_group": "Personalizzato (potrebbe usare Mistral IA)",
|
||||||
"demo_custom_option": "Inserisci allarme personalizzato…",
|
"demo_custom_option": "Inserisci allarme personalizzato…",
|
||||||
"demo_custom_placeholder": "es. UnknownBatteryFault",
|
"demo_custom_placeholder": "es. UnknownBatteryFault",
|
||||||
"demo_diagnose_button": "Diagnostica"
|
"demo_diagnose_button": "Diagnostica",
|
||||||
|
"alarm_AbnormalGridVoltage": "Tensione di rete anomala",
|
||||||
|
"alarm_AbnormalGridFrequency": "Frequenza di rete anomala",
|
||||||
|
"alarm_InvertedSequenceOfGridVoltage": "Sequenza di fase invertita",
|
||||||
|
"alarm_GridVoltagePhaseLoss": "Fase di rete mancante",
|
||||||
|
"alarm_AbnormalGridCurrent": "Corrente di rete anomala",
|
||||||
|
"alarm_AbnormalOutputVoltage": "Tensione di uscita anomala",
|
||||||
|
"alarm_AbnormalOutputFrequency": "Frequenza di uscita anomala",
|
||||||
|
"alarm_AbnormalNullLine": "Linea neutra anomala",
|
||||||
|
"alarm_AbnormalOffGridOutputVoltage": "Tensione di uscita off-grid anomala",
|
||||||
|
"alarm_ExcessivelyHighAmbientTemperature": "Temperatura ambiente eccessivamente alta",
|
||||||
|
"alarm_ExcessiveRadiatorTemperature": "Temperatura radiatore eccessiva",
|
||||||
|
"alarm_PcbOvertemperature": "Temperatura PCB eccessiva",
|
||||||
|
"alarm_DcConverterOvertemperature": "Temperatura convertitore DC eccessiva",
|
||||||
|
"alarm_InverterOvertemperatureAlarm": "Allarme temperatura inverter elevata",
|
||||||
|
"alarm_InverterOvertemperature": "Temperatura inverter eccessiva",
|
||||||
|
"alarm_DcConverterOvertemperatureAlarm": "Allarme sovratemperatura convertitore DC",
|
||||||
|
"alarm_InsulationFault": "Guasto isolamento",
|
||||||
|
"alarm_LeakageProtectionFault": "Guasto protezione dispersione",
|
||||||
|
"alarm_AbnormalLeakageSelfCheck": "Autocontrollo dispersione anomalo",
|
||||||
|
"alarm_PoorGrounding": "Messa a terra insufficiente",
|
||||||
|
"alarm_FanFault": "Guasto Ventola",
|
||||||
|
"alarm_AuxiliaryPowerFault": "Guasto Alimentazione Ausiliaria",
|
||||||
|
"alarm_ModelCapacityFault": "Guasto Configurazione Modello",
|
||||||
|
"alarm_AbnormalLightningArrester": "Parasurtense Anomalo",
|
||||||
|
"alarm_IslandProtection": "Protezione Isola",
|
||||||
|
"alarm_Battery1NotConnected": "Batteria 1 non collegata",
|
||||||
|
"alarm_Battery1Overvoltage": "Batteria 1 sovratensione",
|
||||||
|
"alarm_Battery1Undervoltage": "Batteria 1 sottotensione",
|
||||||
|
"alarm_Battery1DischargeEnd": "Batteria 1 scarica",
|
||||||
|
"alarm_Battery1Inverted": "Batteria 1 polarità invertita",
|
||||||
|
"alarm_Battery1OverloadTimeout": "Timeout sovraccarico batteria 1",
|
||||||
|
"alarm_Battery1SoftStartFailure": "Avvio morbido fallito batteria 1",
|
||||||
|
"alarm_Battery1PowerTubeFault": "Guasto modulo potenza batteria 1",
|
||||||
|
"alarm_Battery1InsufficientPower": "Potenza insufficiente batteria 1",
|
||||||
|
"alarm_Battery1BackupProhibited": "Backup vietato batteria 1",
|
||||||
|
"alarm_Battery2NotConnected": "Batteria 2 non collegata",
|
||||||
|
"alarm_Battery2Overvoltage": "Sovratensione batteria 2",
|
||||||
|
"alarm_Battery2Undervoltage": "Sottotensione batteria 2",
|
||||||
|
"alarm_Battery2DischargeEnd": "Fine scarica batteria 2",
|
||||||
|
"alarm_Battery2Inverted": "Polarità invertita batteria 2",
|
||||||
|
"alarm_Battery2OverloadTimeout": "Timeout sovraccarico Batteria 2",
|
||||||
|
"alarm_Battery2SoftStartFailure": "Avvio morbido fallito Batteria 2",
|
||||||
|
"alarm_Battery2PowerTubeFault": "Guasto modulo potenza Batteria 2",
|
||||||
|
"alarm_Battery2InsufficientPower": "Potenza insufficiente Batteria 2",
|
||||||
|
"alarm_Battery2BackupProhibited": "Backup vietato Batteria 2",
|
||||||
|
"alarm_LithiumBattery1ChargeForbidden": "Carica Batteria Litio 1 Bloccata",
|
||||||
|
"alarm_LithiumBattery1DischargeForbidden": "Scarica Batteria Litio 1 Bloccata",
|
||||||
|
"alarm_LithiumBattery2ChargeForbidden": "Carica Batteria Litio 2 Bloccata",
|
||||||
|
"alarm_LithiumBattery2DischargeForbidden": "Scarica Batteria Litio 2 Bloccata",
|
||||||
|
"alarm_LithiumBattery1Full": "Batteria Litio 1 Piena",
|
||||||
|
"alarm_LithiumBattery1DischargeEnd": "Fine scarica batteria litio 1",
|
||||||
|
"alarm_LithiumBattery2Full": "Batteria litio 2 piena",
|
||||||
|
"alarm_LithiumBattery2DischargeEnd": "Fine scarica batteria litio 2",
|
||||||
|
"alarm_LeadBatteryTemperatureAbnormality": "Temperatura batteria piombo anomala",
|
||||||
|
"alarm_BatteryAccessMethodError": "Errore metodo accesso batteria",
|
||||||
|
"alarm_Pv1NotAccessed": "PV1 non accessibile",
|
||||||
|
"alarm_Pv1Overvoltage": "Sovratensione PV1",
|
||||||
|
"alarm_AbnormalPv1CurrentSharing": "Corrente PV1 anomala",
|
||||||
|
"alarm_Pv1PowerTubeFault": "Guasto tubo di potenza PV1",
|
||||||
|
"alarm_Pv1SoftStartFailure": "Avvio morbido PV1 fallito",
|
||||||
|
"alarm_Pv1OverloadTimeout": "Sovraccarico PV1",
|
||||||
|
"alarm_Pv1InsufficientPower": "Bassa potenza PV1",
|
||||||
|
"alarm_Photovoltaic1Overcurrent": "Sovracorrente PV1",
|
||||||
|
"alarm_Pv2NotAccessed": "PV2 non rilevato",
|
||||||
|
"alarm_Pv2Overvoltage": "Sovratensione PV2",
|
||||||
|
"alarm_AbnormalPv2CurrentSharing": "Condivisione Corrente PV2 Anomala",
|
||||||
|
"alarm_Pv2PowerTubeFault": "Guasto Tubo di Potenza PV2",
|
||||||
|
"alarm_Pv2SoftStartFailure": "Avvio Morbido PV2 Fallito",
|
||||||
|
"alarm_Pv2OverloadTimeout": "Sovraccarico PV2 Timeout",
|
||||||
|
"alarm_Pv2InsufficientPower": "Potenza Insufficiente PV2",
|
||||||
|
"alarm_Pv3NotConnected": "PV3 non connesso",
|
||||||
|
"alarm_Pv3Overvoltage": "Sovratensione PV3",
|
||||||
|
"alarm_Pv3AverageCurrentAnomaly": "Corrente PV3 anomala",
|
||||||
|
"alarm_Pv3PowerTubeFailure": "Guasto tubo di potenza PV3",
|
||||||
|
"alarm_Pv3SoftStartFailure": "Avvio morbido PV3 fallito",
|
||||||
|
"alarm_Pv3OverloadTimeout": "Sovraccarico PV3",
|
||||||
|
"alarm_Pv3ReverseConnection": "Connessione Inversa PV3",
|
||||||
|
"alarm_Pv4NotConnected": "PV4 Non Collegato",
|
||||||
|
"alarm_Pv4Overvoltage": "Sovratensione PV4",
|
||||||
|
"alarm_Pv4AverageCurrentAnomaly": "Anomalia Corrente PV4",
|
||||||
|
"alarm_Pv4PowerTubeFailure": "Guasto Tubo di Potenza PV4",
|
||||||
|
"alarm_Pv4SoftStartFailure": "Avvio Morbido PV4 Fallito",
|
||||||
|
"alarm_Pv4OverloadTimeout": "Sovraccarico PV4",
|
||||||
|
"alarm_Pv4ReverseConnection": "Connessione Inversa PV4",
|
||||||
|
"alarm_InsufficientPhotovoltaicPower": "Potenza Fotovoltaica Insufficiente",
|
||||||
|
"alarm_DcBusOvervoltage": "Sovratensione Bus DC",
|
||||||
|
"alarm_DcBusUndervoltage": "Sottotensione Bus DC",
|
||||||
|
"alarm_DcBusVoltageUnbalance": "Squilibrio Tensione Bus DC",
|
||||||
|
"alarm_BusSlowOvervoltage": "Sovratensione Lenta Bus",
|
||||||
|
"alarm_HardwareBusOvervoltage": "Sovratensione Critica Bus",
|
||||||
|
"alarm_BusSoftStartFailure": "Avvio morbido fallito",
|
||||||
|
"alarm_InverterPowerTubeFault": "Guasto al modulo di potenza",
|
||||||
|
"alarm_HardwareOvercurrent": "Sovracorrente hardware",
|
||||||
|
"alarm_DcConverterOvervoltage": "Sovratensione convertitore DC",
|
||||||
|
"alarm_DcConverterHardwareOvervoltage": "Sovratensione hardware convertitore",
|
||||||
|
"alarm_DcConverterOvercurrent": "Sovraccarico convertitore DC",
|
||||||
|
"alarm_DcConverterHardwareOvercurrent": "Sovraccarico hardware convertitore DC",
|
||||||
|
"alarm_DcConverterResonatorOvercurrent": "Sovraccarico risonatore convertitore DC",
|
||||||
|
"alarm_SystemOutputOverload": "Sovraccarico uscita sistema",
|
||||||
|
"alarm_InverterOverload": "Sovraccarico inverter",
|
||||||
|
"alarm_InverterOverloadTimeout": "Sovraccarico Inverter",
|
||||||
|
"alarm_LoadPowerOverload": "Sovraccarico Carico",
|
||||||
|
"alarm_BalancedCircuitOverloadTimeout": "Sovraccarico Circuito Bilanciato",
|
||||||
|
"alarm_InverterSoftStartFailure": "Avvio Inverter Fallito",
|
||||||
|
"alarm_Dsp1ParameterSettingFault": "Parametri DSP Errati",
|
||||||
|
"alarm_Dsp2ParameterSettingFault": "Errore configurazione parametri DSP 2",
|
||||||
|
"alarm_DspVersionCompatibilityFault": "Errore compatibilità versione DSP",
|
||||||
|
"alarm_CpldVersionCompatibilityFault": "Errore compatibilità versione CPLD",
|
||||||
|
"alarm_CpldCommunicationFault": "Errore comunicazione CPLD",
|
||||||
|
"alarm_DspCommunicationFault": "Errore comunicazione DSP",
|
||||||
|
"alarm_OutputVoltageDcOverlimit": "Tensione DC in uscita eccessiva",
|
||||||
|
"alarm_OutputCurrentDcOverlimit": "Corrente DC in uscita eccessiva",
|
||||||
|
"alarm_RelaySelfCheckFails": "Autotest relè fallito",
|
||||||
|
"alarm_InverterRelayOpen": "Relè inverter aperto",
|
||||||
|
"alarm_InverterRelayShortCircuit": "Relè inverter in cortocircuito",
|
||||||
|
"alarm_OpenCircuitOfPowerGridRelay": "Relè di rete aperto",
|
||||||
|
"alarm_ShortCircuitOfPowerGridRelay": "Relè di rete in cortocircuito",
|
||||||
|
"alarm_GeneratorRelayOpenCircuit": "Relè del generatore aperto",
|
||||||
|
"alarm_GeneratorRelayShortCircuit": "Relè del generatore in cortocircuito",
|
||||||
|
"alarm_AbnormalInverter": "Inverter anomalo",
|
||||||
|
"alarm_ParallelCommunicationAlarm": "Allarme Comunicazione Parallela",
|
||||||
|
"alarm_ParallelModuleMissing": "Modulo Parallelo Mancante",
|
||||||
|
"alarm_DuplicateMachineNumbersForParallelModules": "Numeri Duplicati Moduli Paralleli",
|
||||||
|
"alarm_ParameterConflictInParallelModule": "Conflitto Parametri Modulo Parallelo",
|
||||||
|
"alarm_SystemDerating": "Riduzione Prestazioni Sistema",
|
||||||
|
"alarm_PvAccessMethodErrorAlarm": "Errore Metodo Accesso PV",
|
||||||
|
"alarm_ReservedAlarms4": "Allarme Riservato 4",
|
||||||
|
"alarm_ReservedAlarms5": "Allarme Riservato 5",
|
||||||
|
"alarm_ReverseMeterConnection": "Contatore Inverso",
|
||||||
|
"alarm_InverterSealPulse": "Impulso Sigillo Inverter",
|
||||||
|
"alarm_AbnormalDieselGeneratorVoltage": "Tensione anomala del generatore",
|
||||||
|
"alarm_AbnormalDieselGeneratorFrequency": "Frequenza anomala del generatore",
|
||||||
|
"alarm_DieselGeneratorVoltageReverseSequence": "Sequenza di fase invertita",
|
||||||
|
"alarm_DieselGeneratorVoltageOutOfPhase": "Generatore fuori fase",
|
||||||
|
"alarm_GeneratorOverload": "Sovraccarico del generatore",
|
||||||
|
"alarm_StringFault": "Guasto Stringa",
|
||||||
|
"alarm_PvStringPidQuickConnectAbnormal": "Connessione Rapida Anomala",
|
||||||
|
"alarm_DcSpdFunctionAbnormal": "Protezione SPD Anomala",
|
||||||
|
"alarm_PvShortCircuited": "Cortocircuito PV",
|
||||||
|
"alarm_PvBoostDriverAbnormal": "Driver di Boost Anomalo",
|
||||||
|
"alarm_AcSpdFunctionAbnormal": "Funzione SPD AC anomala",
|
||||||
|
"alarm_DcFuseBlown": "Fusibile DC saltato",
|
||||||
|
"alarm_DcInputVoltageTooHigh": "Tensione DC in ingresso troppo alta",
|
||||||
|
"alarm_PvReversed": "Polarità PV invertita",
|
||||||
|
"alarm_PidFunctionAbnormal": "Funzione PID anomala",
|
||||||
|
"alarm_PvStringDisconnected": "Stringa PV disconnessa",
|
||||||
|
"alarm_PvStringCurrentUnbalanced": "Corrente stringa PV squilibrata",
|
||||||
|
"alarm_NoUtilityGrid": "Nessuna rete elettrica",
|
||||||
|
"alarm_GridVoltageOutOfRange": "Tensione rete fuori limite",
|
||||||
|
"alarm_GridFrequencyOutOfRange": "Frequenza rete fuori limite",
|
||||||
|
"alarm_Overload": "Sovraccarico",
|
||||||
|
"alarm_MeterDisconnected": "Contatore scollegato",
|
||||||
|
"alarm_MeterReverselyConnected": "Contatore collegato al contrario",
|
||||||
|
"alarm_LinePeVoltageAbnormal": "Tensione anomala PE",
|
||||||
|
"alarm_PhaseSequenceError": "Errore sequenza fase",
|
||||||
|
"alarm_FanFailure": "Guasto Ventilatore",
|
||||||
|
"alarm_MeterAbnormal": "Contatore Anomalo",
|
||||||
|
"alarm_OptimizerCommunicationAbnormal": "Comunicazione Ottimizzatore Anomala",
|
||||||
|
"alarm_OverTemperature": "Temperatura Eccessiva",
|
||||||
|
"alarm_OverTemperatureAlarm": "Allarme Temperatura Eccessiva",
|
||||||
|
"alarm_NtcTemperatureSensorBroken": "Sensore temperatura guasto",
|
||||||
|
"alarm_SyncSignalAbnormal": "Segnale di sincronizzazione anomalo",
|
||||||
|
"alarm_GridStartupConditionsNotMet": "Condizioni di avvio rete non soddisfatte",
|
||||||
|
"alarm_BatteryCommunicationFailure": "Comunicazione batteria fallita",
|
||||||
|
"alarm_BatteryDisconnected": "Batteria scollegata",
|
||||||
|
"alarm_BatteryVoltageTooHigh": "Tensione batteria troppo alta",
|
||||||
|
"alarm_BatteryVoltageTooLow": "Tensione batteria troppo bassa",
|
||||||
|
"alarm_BatteryReverseConnected": "Batteria collegata al contrario",
|
||||||
|
"alarm_LeadAcidTempSensorDisconnected": "Sensore temperatura piombo acido scollegato",
|
||||||
|
"alarm_BatteryTemperatureOutOfRange": "Temperatura batteria fuori range",
|
||||||
|
"alarm_BmsFault": "Guasto BMS",
|
||||||
|
"alarm_LithiumBatteryOverload": "Sovraccarico Batteria Litio",
|
||||||
|
"alarm_BmsCommunicationAbnormal": "Comunicazione BMS Anomala",
|
||||||
|
"alarm_BatterySpdAbnormal": "SPD Batteria Anomalo",
|
||||||
|
"alarm_OutputDcComponentBiasAbnormal": "Bias DC di Uscita Anomalo",
|
||||||
|
"alarm_DcComponentOverHighOutputVoltage": "Tensione di uscita DC troppo alta",
|
||||||
|
"alarm_OffGridOutputVoltageTooLow": "Tensione di uscita off-grid troppo bassa",
|
||||||
|
"alarm_OffGridOutputVoltageTooHigh": "Tensione di uscita off-grid troppo alta",
|
||||||
|
"alarm_OffGridOutputOverCurrent": "Corrente di uscita off-grid troppo alta",
|
||||||
|
"alarm_OffGridOutputOverload": "Sovraccarico Uscita Off-Grid",
|
||||||
|
"alarm_BalancedCircuitAbnormal": "Circuiti Squilibrati Anomali",
|
||||||
|
"alarm_ExportLimitationFailSafe": "Limite Esportazione Sicurezza",
|
||||||
|
"alarm_DcBiasAbnormal": "Bias DC Anomalo",
|
||||||
|
"alarm_HighDcComponentOutputCurrent": "Alta Componente DC Corrente",
|
||||||
|
"alarm_BusVoltageSamplingAbnormal": "Campionamento tensione anomalo",
|
||||||
|
"alarm_RelayFault": "Guasto al relè",
|
||||||
|
"alarm_BusVoltageAbnormal": "Tensione bus anomala",
|
||||||
|
"alarm_InternalCommunicationFailure": "Comunicazione interna guasta",
|
||||||
|
"alarm_TemperatureSensorDisconnected": "Sensore temperatura scollegato",
|
||||||
|
"alarm_IgbtDriveFault": "Guasto guida IGBT",
|
||||||
|
"alarm_EepromError": "Errore EEPROM",
|
||||||
|
"alarm_AuxiliaryPowerAbnormal": "Alimentazione ausiliaria anomala",
|
||||||
|
"alarm_DcAcOvercurrentProtection": "Protezione sovracorrente DC/AC",
|
||||||
|
"alarm_CommunicationProtocolMismatch": "Protocollo di comunicazione non corrispondente",
|
||||||
|
"alarm_DspComFirmwareMismatch": "Incompatibilità firmware DSP/COM",
|
||||||
|
"alarm_DspSoftwareHardwareMismatch": "Incompatibilità software/hardware DSP",
|
||||||
|
"alarm_CpldAbnormal": "Anomalia CPLD",
|
||||||
|
"alarm_RedundancySamplingInconsistent": "Campionamento ridondante inconsistente",
|
||||||
|
"alarm_PwmPassThroughSignalFailure": "Guasto segnale PWM",
|
||||||
|
"alarm_AfciSelfTestFailure": "Test AFCI fallito",
|
||||||
|
"alarm_PvCurrentSamplingAbnormal": "Corrente PV anomala",
|
||||||
|
"alarm_AcCurrentSamplingAbnormal": "Corrente AC anomala",
|
||||||
|
"alarm_BusSoftbootFailure": "Avvio bus fallito",
|
||||||
|
"alarm_EpoFault": "Guasto EPO",
|
||||||
|
"alarm_MonitoringChipBootVerificationFailed": "Verifica avvio chip monitoraggio fallita",
|
||||||
|
"alarm_BmsCommunicationFailure": "Comunicazione BMS fallita",
|
||||||
|
"alarm_BmsChargeDischargeFailure": "Carica/scarica BMS bloccata",
|
||||||
|
"alarm_BatteryVoltageLow": "Tensione batteria bassa",
|
||||||
|
"alarm_BatteryVoltageHigh": "Tensione batteria alta",
|
||||||
|
"alarm_BatteryTemperatureAbnormal": "Temperatura batteria anomala",
|
||||||
|
"alarm_BatteryReversed": "Batteria invertita",
|
||||||
|
"alarm_BatteryOpenCircuit": "Circolazione batteria aperta",
|
||||||
|
"alarm_BatteryOverloadProtection": "Protezione sovraccarico batteria",
|
||||||
|
"alarm_Bus2VoltageAbnormal": "Tensione Bus2 anomala",
|
||||||
|
"alarm_BatteryChargeOcp": "Sovraccarico carica batteria",
|
||||||
|
"alarm_BatteryDischargeOcp": "Sovraccarico scarica batteria",
|
||||||
|
"alarm_BatterySoftStartFailed": "Avvio batteria fallito",
|
||||||
|
"alarm_EpsOutputShortCircuited": "Uscita EPS in cortocircuito",
|
||||||
|
"alarm_OffGridBusVoltageLow": "Tensione bus off-grid bassa",
|
||||||
|
"alarm_OffGridTerminalVoltageAbnormal": "Tensione terminale anomala",
|
||||||
|
"alarm_SoftStartFailed": "Avvio morbido fallito",
|
||||||
|
"alarm_OffGridOutputVoltageAbnormal": "Tensione di uscita anomala",
|
||||||
|
"alarm_BalancedCircuitSelfTestFailed": "Autotest circuito bilanciato fallito",
|
||||||
|
"alarm_HighDcComponentOutputVoltage": "Tensione di uscita DC elevata",
|
||||||
|
"alarm_OffGridParallelSignalAbnormal": "Segnale parallelo off-grid anomalo",
|
||||||
|
"alarm_AFCIFault": "Guasto AFCI",
|
||||||
|
"alarm_GFCIHigh": "Corrente di guasto a terra elevata",
|
||||||
|
"alarm_PVVoltageHigh": "Tensione PV elevata",
|
||||||
|
"alarm_OffGridBusVoltageTooLow": "Tensione Bus Fuori Rete Troppo Bassa"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue