Feature: Added additional event log descriptions and implemented i18n
This commit is contained in:
parent
dc5b5e837f
commit
f1a8c2ea82
@ -7,117 +7,166 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
const std::array<const AlarmMessage_t, ALARM_MSG_COUNT> AlarmLogParser::_alarmMessages = { {
|
const std::array<const AlarmMessage_t, ALARM_MSG_COUNT> AlarmLogParser::_alarmMessages = { {
|
||||||
{ AlarmMessageType_t::ALL, 1, "Inverter start" },
|
{ AlarmMessageType_t::ALL, 1, "Inverter start", "Wechselrichter gestartet", "L'onduleur a démarré" },
|
||||||
{ AlarmMessageType_t::ALL, 2, "Time calibration" },
|
{ AlarmMessageType_t::ALL, 2, "Time calibration", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 3, "EEPROM reading and writing error during operation" },
|
{ AlarmMessageType_t::ALL, 3, "EEPROM reading and writing error during operation", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 4, "Offline" },
|
{ AlarmMessageType_t::ALL, 4, "Offline", "Offline", "Non connecté" },
|
||||||
{ AlarmMessageType_t::ALL, 11, "Grid voltage surge" },
|
|
||||||
{ AlarmMessageType_t::ALL, 12, "Grid voltage sharp drop" },
|
{ AlarmMessageType_t::ALL, 11, "Grid voltage surge", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 13, "Grid frequency mutation" },
|
{ AlarmMessageType_t::ALL, 12, "Grid voltage sharp drop", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 14, "Grid phase mutation" },
|
{ AlarmMessageType_t::ALL, 13, "Grid frequency mutation", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 15, "Grid transient fluctuation" },
|
{ AlarmMessageType_t::ALL, 14, "Grid phase mutation", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 36, "INV overvoltage or overcurrent" },
|
{ AlarmMessageType_t::ALL, 15, "Grid transient fluctuation", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 46, "FB overvoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 47, "FB overcurrent" },
|
{ AlarmMessageType_t::ALL, 36, "INV overvoltage or overcurrent", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 48, "FB clamp overvoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 49, "FB clamp overvoltage" },
|
{ AlarmMessageType_t::ALL, 46, "FB overvoltage", "FB Überspannung", "" },
|
||||||
{ AlarmMessageType_t::ALL, 61, "Calibration parameter error" },
|
{ AlarmMessageType_t::ALL, 47, "FB overcurrent", "FB Überstrom", "" },
|
||||||
{ AlarmMessageType_t::ALL, 62, "System configuration parameter error" },
|
{ AlarmMessageType_t::ALL, 48, "FB clamp overvoltage", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 63, "Abnormal power generation data" },
|
{ AlarmMessageType_t::ALL, 49, "FB clamp overvoltage", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 71, "VW function enable" },
|
|
||||||
{ AlarmMessageType_t::ALL, 72, "FW function enable" },
|
{ AlarmMessageType_t::ALL, 61, "Calibration parameter error", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 73, "TW function enable" },
|
{ AlarmMessageType_t::ALL, 62, "System configuration parameter error", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 95, "PV module in suspected shadow" },
|
{ AlarmMessageType_t::ALL, 63, "Abnormal power generation data", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 96, "PV module in suspected shadow" },
|
|
||||||
{ AlarmMessageType_t::ALL, 97, "PV module in suspected shadow" },
|
{ AlarmMessageType_t::ALL, 71, "Grid overvoltage load reduction (VW) function enable", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 98, "PV module in suspected shadow" },
|
{ AlarmMessageType_t::ALL, 72, "Power grid over-frequency load reduction (FW) function enable", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 121, "Over temperature protection" },
|
{ AlarmMessageType_t::ALL, 73, "Over-temperature load reduction (TW) function enable", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 122, "Microinverter is suspected of being stolen" },
|
|
||||||
{ AlarmMessageType_t::ALL, 123, "Locked by remote control" },
|
{ AlarmMessageType_t::ALL, 95, "PV-1: Module in suspected shadow", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 124, "Shut down by remote control" },
|
{ AlarmMessageType_t::ALL, 96, "PV-2: Module in suspected shadow", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 125, "Grid configuration parameter error" },
|
{ AlarmMessageType_t::ALL, 97, "PV-3: Module in suspected shadow", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 126, "Software error code 126" },
|
{ AlarmMessageType_t::ALL, 98, "PV-4: Module in suspected shadow", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 127, "Firmware error" },
|
|
||||||
{ AlarmMessageType_t::ALL, 128, "Software error code 128" },
|
{ AlarmMessageType_t::ALL, 121, "Over temperature protection", "Übertemperaturschutz", "Protection antisurchauffe" },
|
||||||
{ AlarmMessageType_t::ALL, 129, "Abnormal bias" },
|
{ AlarmMessageType_t::ALL, 122, "Microinverter is suspected of being stolen", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 130, "Offline" },
|
{ AlarmMessageType_t::ALL, 123, "Locked by remote control", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 141, "Grid: Grid overvoltage" },
|
{ AlarmMessageType_t::ALL, 124, "Shut down by remote control", "Durch Fernsteuerung abgeschaltet", "Arrêt par télécommande" },
|
||||||
{ AlarmMessageType_t::ALL, 142, "Grid: 10 min value grid overvoltage" },
|
{ AlarmMessageType_t::ALL, 125, "Grid configuration parameter error", "Parameterfehler bei der Konfiguration des Elektrizitätsnetzes", "Erreur de paramètre de configuration du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 143, "Grid: Grid undervoltage" },
|
{ AlarmMessageType_t::ALL, 126, "Software error code 126", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 144, "Grid: Grid overfrequency" },
|
{ AlarmMessageType_t::ALL, 127, "Firmware error", "Firmwarefehler", "Erreur du micrologiciel" },
|
||||||
{ AlarmMessageType_t::ALL, 145, "Grid: Grid underfrequency" },
|
{ AlarmMessageType_t::ALL, 128, "Hardware configuration error", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 146, "Grid: Rapid grid frequency change rate" },
|
{ AlarmMessageType_t::ALL, 129, "Abnormal bias", "Abnormaler Trend", "Polarisation anormale" },
|
||||||
{ AlarmMessageType_t::ALL, 147, "Grid: Power grid outage" },
|
{ AlarmMessageType_t::ALL, 130, "Offline", "Offline", "Non connecté" },
|
||||||
{ AlarmMessageType_t::ALL, 148, "Grid: Grid disconnection" },
|
|
||||||
{ AlarmMessageType_t::ALL, 149, "Grid: Island detected" },
|
{ AlarmMessageType_t::ALL, 141, "Grid: Grid overvoltage", "Netz: Netzüberspannung", "Réseau: Surtension du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 150, "DCI exceeded" },
|
{ AlarmMessageType_t::ALL, 142, "Grid: 10 min value grid overvoltage", "Netz: 10 Minuten-Mittelwert der Netzüberspannung", "Réseau: Valeur de surtension du réseau pendant 10 min" },
|
||||||
{ AlarmMessageType_t::HMT, 171, "Grid: Abnormal phase difference between phase to phase" },
|
{ AlarmMessageType_t::ALL, 143, "Grid: Grid undervoltage", "Netz: Netzunterspannung", "Réseau: Sous-tension du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 181, "Abnormal insulation impedance" },
|
{ AlarmMessageType_t::ALL, 144, "Grid: Grid overfrequency", "Netz: Netzüberfrequenz", "Réseau: Surfréquence du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 182, "Abnormal grounding" },
|
{ AlarmMessageType_t::ALL, 145, "Grid: Grid underfrequency", "Netz: Netzunterfrequenz", "Réseau: Sous-fréquence du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 205, "MPPT-A: Input overvoltage" },
|
{ AlarmMessageType_t::ALL, 146, "Grid: Rapid grid frequency change rate", "Netz: Schnelle Wechselrate der Netzfrequenz", "Réseau: Taux de fluctuation rapide de la fréquence du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 206, "MPPT-B: Input overvoltage" },
|
{ AlarmMessageType_t::ALL, 147, "Grid: Power grid outage", "Netz: Eletrizitätsnetzausfall", "Réseau: Panne du réseau électrique" },
|
||||||
{ AlarmMessageType_t::ALL, 207, "MPPT-A: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 148, "Grid: Grid disconnection", "Netz: Netztrennung", "Réseau: Déconnexion du réseau" },
|
||||||
{ AlarmMessageType_t::ALL, 208, "MPPT-B: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 149, "Grid: Island detected", "Netz: Inselbetrieb festgestellt", "Réseau: Détection d’îlots" },
|
||||||
{ AlarmMessageType_t::ALL, 209, "PV-1: No input" },
|
|
||||||
{ AlarmMessageType_t::ALL, 210, "PV-2: No input" },
|
{ AlarmMessageType_t::ALL, 150, "DCI exceeded", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 211, "PV-3: No input" },
|
{ AlarmMessageType_t::HMT, 171, "Grid: Abnormal phase difference between phase to phase", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 212, "PV-4: No input" },
|
{ AlarmMessageType_t::ALL, 181, "Abnormal insulation impedance", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 213, "MPPT-A: PV-1 & PV-2 abnormal wiring" },
|
{ AlarmMessageType_t::ALL, 182, "Abnormal grounding", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 214, "MPPT-B: PV-3 & PV-4 abnormal wiring" },
|
|
||||||
{ AlarmMessageType_t::ALL, 215, "PV-1: Input overvoltage" },
|
{ AlarmMessageType_t::ALL, 205, "MPPT-A: Input overvoltage", "MPPT-A: Eingangsüberspannung", "MPPT-A: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::HMT, 215, "MPPT-C: Input overvoltage" },
|
{ AlarmMessageType_t::ALL, 206, "MPPT-B: Input overvoltage", "MPPT-B: Eingangsüberspannung", "MPPT-B: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 216, "PV-1: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 207, "MPPT-A: Input undervoltage", "MPPT-A: Eingangsunterspannung", "MPPT-A: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::HMT, 216, "MPPT-C: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 208, "MPPT-B: Input undervoltage", "MPPT-B: Eingangsunterspannung", "MPPT-B: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 217, "PV-2: Input overvoltage" },
|
|
||||||
{ AlarmMessageType_t::HMT, 217, "PV-5: No input" },
|
{ AlarmMessageType_t::ALL, 209, "PV-1: No input", "PV-1: Kein Eingang", "PV-1: Aucune entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 218, "PV-2: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 210, "PV-2: No input", "PV-2: Kein Eingang", "PV-2: Aucune entrée" },
|
||||||
{ AlarmMessageType_t::HMT, 218, "PV-6: No input" },
|
{ AlarmMessageType_t::ALL, 211, "PV-3: No input", "PV-3: Kein Eingang", "PV-3: Aucune entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 219, "PV-3: Input overvoltage" },
|
{ AlarmMessageType_t::ALL, 212, "PV-4: No input", "PV-4: Kein Eingang", "PV-4: Aucune entrée" },
|
||||||
{ AlarmMessageType_t::HMT, 219, "MPPT-C: PV-5 & PV-6 abnormal wiring" },
|
|
||||||
{ AlarmMessageType_t::ALL, 220, "PV-3: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 213, "MPPT-A: PV-1 & PV-2 abnormal wiring", "MPPT-A: Verdrahtungsfehler bei PV-1 und PV-2", "MPPT-A: Câblages photovoltaïques 1 et 2 anormaux" },
|
||||||
{ AlarmMessageType_t::ALL, 221, "PV-4: Input overvoltage" },
|
{ AlarmMessageType_t::ALL, 214, "MPPT-B: PV-3 & PV-4 abnormal wiring", "MPPT-B: Verdrahtungsfehler bei PV-3 und PV-4", "MPPT-B: Câblages photovoltaïques 3 et 4 anormaux" },
|
||||||
{ AlarmMessageType_t::HMT, 221, "Abnormal wiring of grid neutral line" },
|
|
||||||
{ AlarmMessageType_t::ALL, 222, "PV-4: Input undervoltage" },
|
{ AlarmMessageType_t::ALL, 215, "PV-1: Input overvoltage", "PV-1: Eingangsüberspannung", "PV-1: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 301, "Hardware error code 301 - FB short circuit failure" },
|
{ AlarmMessageType_t::HMT, 215, "MPPT-C: Input overvoltage", "MPPT-C: Eingangsüberspannung", "MPPT-C: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 302, "Hardware error code 302 - FB short circuit failure" },
|
{ AlarmMessageType_t::ALL, 216, "PV-1: Input undervoltage", "PV-1: Eingangsunterspannung", "PV-1: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 303, "Hardware error code 303 - FB overcurrent protection failure" },
|
{ AlarmMessageType_t::HMT, 216, "MPPT-C: Input undervoltage", "MPPT-C: Eingangsunterspannung", "MPPT-C: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 304, "Hardware error code 304 - FB overcurrent protection failure" },
|
{ AlarmMessageType_t::ALL, 217, "PV-2: Input overvoltage", "PV-2: Eingangsüberspannung", "PV-2: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 305, "Hardware error code 305 - FB clamp circuit failure" },
|
{ AlarmMessageType_t::HMT, 217, "PV-5: No input", "PV-5: Kein Eingang", "PV-5: Aucune entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 306, "Hardware error code 306 - FB clamp circuit failure" },
|
{ AlarmMessageType_t::ALL, 218, "PV-2: Input undervoltage", "PV-2: Eingangsunterspannung", "PV-2: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 307, "Hardware error code 307 - INV power device failure" },
|
{ AlarmMessageType_t::HMT, 218, "PV-6: No input", "PV-6: Kein Eingang", "PV-6: Aucune entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 308, "Hardware error code 308 - INV overcurrent or overvoltage protection failure" },
|
{ AlarmMessageType_t::ALL, 219, "PV-3: Input overvoltage", "PV-3: Eingangsüberspannung", "PV-3: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 309, "Hardware error code 309" },
|
{ AlarmMessageType_t::HMT, 219, "MPPT-C: PV-5 & PV-6 abnormal wiring", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 310, "Hardware error code 310" },
|
{ AlarmMessageType_t::ALL, 220, "PV-3: Input undervoltage", "PV-3: Eingangsunterspannung", "PV-3: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 311, "Hardware error code 311" },
|
{ AlarmMessageType_t::ALL, 221, "PV-4: Input overvoltage", "PV-4: Eingangsüberspannung", "PV-4: Surtension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 312, "Hardware error code 312" },
|
{ AlarmMessageType_t::HMT, 221, "Abnormal wiring of grid neutral line", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 313, "Hardware error code 313" },
|
{ AlarmMessageType_t::ALL, 222, "PV-4: Input undervoltage", "PV-4: Eingangsunterspannung", "PV-4: Sous-tension d’entrée" },
|
||||||
{ AlarmMessageType_t::ALL, 314, "Hardware error code 314" },
|
|
||||||
{ AlarmMessageType_t::ALL, 1111, "Repeater" },
|
{ AlarmMessageType_t::ALL, 301, "FB-A: internal short circuit failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5041, "Error code-04 Port 1" },
|
{ AlarmMessageType_t::ALL, 302, "FB-B: internal short circuit failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5042, "Error code-04 Port 2" },
|
|
||||||
{ AlarmMessageType_t::ALL, 5043, "Error code-04 Port 3" },
|
{ AlarmMessageType_t::ALL, 303, "FB-A: overcurrent protection failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5044, "Error code-04 Port 4" },
|
{ AlarmMessageType_t::ALL, 304, "FB-B: overcurrent protection failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5051, "PV Input 1 Overvoltage/Undervoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 5052, "PV Input 2 Overvoltage/Undervoltage" },
|
{ AlarmMessageType_t::ALL, 305, "FB-A: clamp circuit failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5053, "PV Input 3 Overvoltage/Undervoltage" },
|
{ AlarmMessageType_t::ALL, 306, "FB-B: clamp circuit failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5054, "PV Input 4 Overvoltage/Undervoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 5060, "Abnormal bias" },
|
{ AlarmMessageType_t::ALL, 307, "INV power device failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5070, "Over temperature protection" },
|
{ AlarmMessageType_t::ALL, 308, "INV overcurrent or overvoltage protection failure", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5080, "Grid Overvoltage/Undervoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 5090, "Grid Overfrequency/Underfrequency" },
|
{ AlarmMessageType_t::ALL, 309, "Hardware error code 309", "Hardwarefehlercode 309", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5100, "Island detected" },
|
{ AlarmMessageType_t::ALL, 310, "Hardware error code 310", "Hardwarefehlercode 310", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5110, "GFDI" },
|
{ AlarmMessageType_t::ALL, 311, "Hardware error code 311", "Hardwarefehlercode 311", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5120, "EEPROM reading and writing error" },
|
{ AlarmMessageType_t::ALL, 312, "Hardware error code 312", "Hardwarefehlercode 312", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5141, "FB clamp overvoltage" },
|
{ AlarmMessageType_t::ALL, 313, "Hardware error code 313", "Hardwarefehlercode 313", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5142, "FB clamp overvoltage" },
|
{ AlarmMessageType_t::ALL, 314, "Hardware error code 314", "Hardwarefehlercode 314", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5143, "FB clamp overvoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 5144, "FB clamp overvoltage" },
|
{ AlarmMessageType_t::ALL, 1111, "Repeater", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5150, "10 min value grid overvoltage" },
|
|
||||||
{ AlarmMessageType_t::ALL, 5160, "Grid transient fluctuation" },
|
{ AlarmMessageType_t::ALL, 2000, "Standby", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 5200, "Firmware error" },
|
{ AlarmMessageType_t::ALL, 2001, "Standby", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 8310, "Shut down by remote control" },
|
{ AlarmMessageType_t::ALL, 2002, "Standby", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 8320, "Locked by remote control" },
|
{ AlarmMessageType_t::ALL, 2003, "Standby", "", "" },
|
||||||
{ AlarmMessageType_t::ALL, 9000, "Microinverter is suspected of being stolen" },
|
{ AlarmMessageType_t::ALL, 2004, "Standby", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 3001, "Reset", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 3002, "Reset", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 3003, "Reset", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 3004, "Reset", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5011, "PV-1: MOSFET overcurrent (II)", "PV-1: MOSFET Überstrom (II)", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5012, "PV-2: MOSFET overcurrent (II)", "PV-2: MOSFET Überstrom (II)", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5013, "PV-3: MOSFET overcurrent (II)", "PV-3: MOSFET Überstrom (II)", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5014, "PV-4: MOSFET overcurrent (II)", "PV-4: MOSFET Überstrom (II)", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5020, "H-bridge MOSFET overcurrent or H-bridge overvoltage", "H-Brücken-MOSFET-Überstrom oder H-Brücken-Überspannung", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5041, "PV-1: current overcurrent (II)", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5042, "PV-2: current overcurrent (II)", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5043, "PV-3: current overcurrent (II)", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5044, "PV-4: current overcurrent (II)", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5051, "PV-1: Overvoltage/Undervoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5052, "PV-2: Overvoltage/Undervoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5053, "PV-3: Overvoltage/Undervoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5054, "PV-4: Overvoltage/Undervoltage", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5060, "Abnormal bias", "Abnormaler Trend", "Polarisation anormale" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5070, "Over temperature protection", "Übertemperaturschutz", "Protection antisurchauffe" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5080, "Grid Overvoltage/Undervoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5090, "Grid Overfrequency/Underfrequency", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5100, "Island detected", "Inselbetrieb festgestellt", "Détection d’îlots" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5110, "GFDI failure", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5120, "EEPROM reading and writing error", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5141, "FB clamp overvoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5142, "FB clamp overvoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5143, "FB clamp overvoltage", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5144, "FB clamp overvoltage", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5150, "10 min value grid overvoltage", "10 Minuten-Mittelwert der Netzüberspannung", "Valeur de surtension du réseau pendant 10 min" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5160, "Grid transient fluctuation", "", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5200, "Firmware error", "Firmwarefehler", "Erreur du micrologiciel" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 5511, "PV-1: MOSFET overcurrent-H", "PV-1: MOSFET Überstrom-H", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5512, "PV-2: MOSFET overcurrent-H", "PV-2: MOSFET Überstrom-H", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5513, "PV-3: MOSFET overcurrent-H", "PV-3: MOSFET Überstrom-H", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5514, "PV-4: MOSFET overcurrent-H", "PV-4: MOSFET Überstrom-H", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 5520, "H-bridge MOSFET overcurrent or H-bridge overvoltage", "H-Brücken-MOSFET-Überstrom oder H-Brücken-Überspannung", "" },
|
||||||
|
|
||||||
|
{ AlarmMessageType_t::ALL, 8310, "Shut down by remote control", "Durch Fernsteuerung abgeschaltet", "Arrêt par télécommande" },
|
||||||
|
{ AlarmMessageType_t::ALL, 8320, "Locked by remote control", "", "" },
|
||||||
|
{ AlarmMessageType_t::ALL, 9000, "Microinverter is suspected of being stolen", "", "" },
|
||||||
} };
|
} };
|
||||||
|
|
||||||
AlarmLogParser::AlarmLogParser()
|
AlarmLogParser::AlarmLogParser()
|
||||||
@ -165,7 +214,7 @@ void AlarmLogParser::setMessageType(AlarmMessageType_t type)
|
|||||||
_messageType = type;
|
_messageType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AlarmLogParser::getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry)
|
void AlarmLogParser::getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry, AlarmMessageLocale_t locale)
|
||||||
{
|
{
|
||||||
uint8_t entryStartOffset = 2 + entryId * ALARM_LOG_ENTRY_SIZE;
|
uint8_t entryStartOffset = 2 + entryId * ALARM_LOG_ENTRY_SIZE;
|
||||||
|
|
||||||
@ -194,19 +243,42 @@ void AlarmLogParser::getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry)
|
|||||||
entry->EndTime += (endTimeOffset + timezoneOffset);
|
entry->EndTime += (endTimeOffset + timezoneOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
entry->Message = "Unknown";
|
switch (locale) {
|
||||||
|
case AlarmMessageLocale_t::DE:
|
||||||
|
entry->Message = "Unbekannt";
|
||||||
|
break;
|
||||||
|
case AlarmMessageLocale_t::FR:
|
||||||
|
entry->Message = "Inconnu";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
entry->Message = "Unknown";
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& msg : _alarmMessages) {
|
for (auto& msg : _alarmMessages) {
|
||||||
if (msg.MessageId == entry->MessageId) {
|
if (msg.MessageId == entry->MessageId) {
|
||||||
if (msg.InverterType == _messageType) {
|
if (msg.InverterType == _messageType) {
|
||||||
entry->Message = msg.Message;
|
entry->Message = getLocaleMessage(&msg, locale);
|
||||||
break;
|
break;
|
||||||
} else if (msg.InverterType == AlarmMessageType_t::ALL) {
|
} else if (msg.InverterType == AlarmMessageType_t::ALL) {
|
||||||
entry->Message = msg.Message;
|
entry->Message = getLocaleMessage(&msg, locale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String AlarmLogParser::getLocaleMessage(const AlarmMessage_t* msg, AlarmMessageLocale_t locale)
|
||||||
|
{
|
||||||
|
if (locale == AlarmMessageLocale_t::DE) {
|
||||||
|
return msg->Message_de[0] != '\0' ? msg->Message_de : msg->Message_en;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locale == AlarmMessageLocale_t::FR) {
|
||||||
|
return msg->Message_fr[0] != '\0' ? msg->Message_fr : msg->Message_en;
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg->Message_en;
|
||||||
|
}
|
||||||
|
|
||||||
int AlarmLogParser::getTimezoneOffset()
|
int AlarmLogParser::getTimezoneOffset()
|
||||||
{
|
{
|
||||||
// see: https://stackoverflow.com/questions/13804095/get-the-time-zone-gmt-offset-in-c/44063597#44063597
|
// see: https://stackoverflow.com/questions/13804095/get-the-time-zone-gmt-offset-in-c/44063597#44063597
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
#define ALARM_LOG_ENTRY_SIZE 12
|
#define ALARM_LOG_ENTRY_SIZE 12
|
||||||
#define ALARM_LOG_PAYLOAD_SIZE (ALARM_LOG_ENTRY_COUNT * ALARM_LOG_ENTRY_SIZE + 4)
|
#define ALARM_LOG_PAYLOAD_SIZE (ALARM_LOG_ENTRY_COUNT * ALARM_LOG_ENTRY_SIZE + 4)
|
||||||
|
|
||||||
#define ALARM_MSG_COUNT 111
|
#define ALARM_MSG_COUNT 130
|
||||||
|
|
||||||
struct AlarmLogEntry_t {
|
struct AlarmLogEntry_t {
|
||||||
uint16_t MessageId;
|
uint16_t MessageId;
|
||||||
@ -22,10 +22,18 @@ enum class AlarmMessageType_t {
|
|||||||
HMT
|
HMT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class AlarmMessageLocale_t {
|
||||||
|
EN,
|
||||||
|
DE,
|
||||||
|
FR
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
AlarmMessageType_t InverterType;
|
AlarmMessageType_t InverterType;
|
||||||
uint16_t MessageId;
|
uint16_t MessageId;
|
||||||
String Message;
|
char Message_en[62];
|
||||||
|
char Message_de[63];
|
||||||
|
char Message_fr[64];
|
||||||
} AlarmMessage_t;
|
} AlarmMessage_t;
|
||||||
|
|
||||||
class AlarmLogParser : public Parser {
|
class AlarmLogParser : public Parser {
|
||||||
@ -35,7 +43,7 @@ public:
|
|||||||
void appendFragment(uint8_t offset, uint8_t* payload, uint8_t len);
|
void appendFragment(uint8_t offset, uint8_t* payload, uint8_t len);
|
||||||
|
|
||||||
uint8_t getEntryCount();
|
uint8_t getEntryCount();
|
||||||
void getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry);
|
void getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry, AlarmMessageLocale_t locale = AlarmMessageLocale_t::EN);
|
||||||
|
|
||||||
void setLastAlarmRequestSuccess(LastCommandSuccess status);
|
void setLastAlarmRequestSuccess(LastCommandSuccess status);
|
||||||
LastCommandSuccess getLastAlarmRequestSuccess();
|
LastCommandSuccess getLastAlarmRequestSuccess();
|
||||||
@ -44,6 +52,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static int getTimezoneOffset();
|
static int getTimezoneOffset();
|
||||||
|
String getLocaleMessage(const AlarmMessage_t *msg, AlarmMessageLocale_t locale);
|
||||||
|
|
||||||
uint8_t _payloadAlarmLog[ALARM_LOG_PAYLOAD_SIZE];
|
uint8_t _payloadAlarmLog[ALARM_LOG_PAYLOAD_SIZE];
|
||||||
uint8_t _alarmLogLength = 0;
|
uint8_t _alarmLogLength = 0;
|
||||||
|
|||||||
@ -35,6 +35,18 @@ void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request)
|
|||||||
serial = strtoll(s.c_str(), NULL, 16);
|
serial = strtoll(s.c_str(), NULL, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AlarmMessageLocale_t locale = AlarmMessageLocale_t::EN;
|
||||||
|
if (request->hasParam("locale")) {
|
||||||
|
String s = request->getParam("locale")->value();
|
||||||
|
s.toLowerCase();
|
||||||
|
if (s == "de") {
|
||||||
|
locale = AlarmMessageLocale_t::DE;
|
||||||
|
}
|
||||||
|
if (s == "fr") {
|
||||||
|
locale = AlarmMessageLocale_t::FR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto inv = Hoymiles.getInverterBySerial(serial);
|
auto inv = Hoymiles.getInverterBySerial(serial);
|
||||||
|
|
||||||
if (inv != nullptr) {
|
if (inv != nullptr) {
|
||||||
@ -47,7 +59,7 @@ void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request)
|
|||||||
JsonObject eventsObject = eventsArray.createNestedObject();
|
JsonObject eventsObject = eventsArray.createNestedObject();
|
||||||
|
|
||||||
AlarmLogEntry_t entry;
|
AlarmLogEntry_t entry;
|
||||||
inv->EventLog()->getLogEntry(logEntry, &entry);
|
inv->EventLog()->getLogEntry(logEntry, &entry, locale);
|
||||||
|
|
||||||
eventsObject["message_id"] = entry.MessageId;
|
eventsObject["message_id"] = entry.MessageId;
|
||||||
eventsObject["message"] = entry.Message;
|
eventsObject["message"] = entry.Message;
|
||||||
|
|||||||
@ -580,7 +580,7 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
onShowEventlog(serial: number) {
|
onShowEventlog(serial: number) {
|
||||||
this.eventLogLoading = true;
|
this.eventLogLoading = true;
|
||||||
fetch("/api/eventlog/status?inv=" + serial, { headers: authHeader() })
|
fetch("/api/eventlog/status?inv=" + serial + "&locale=" + this.$i18n.locale, { headers: authHeader() })
|
||||||
.then((response) => handleResponse(response, this.$emitter, this.$router))
|
.then((response) => handleResponse(response, this.$emitter, this.$router))
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
this.eventLogList = data;
|
this.eventLogList = data;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user