translated all Sinexcel and Growatt Alarm now it also shows in the frontend of UI

This commit is contained in:
Yinyin Liu 2026-02-23 17:59:03 +01:00
parent 25280afb8f
commit 3bffe70a75
16 changed files with 10254 additions and 326 deletions

View File

@ -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>

View File

@ -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." });

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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

View File

@ -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>();

View File

@ -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()

View File

@ -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

View File

@ -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[];

View File

@ -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"
} }

View File

@ -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"
} }

View File

@ -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"
} }