UNPKG

iobroker.sun2000

Version:
92 lines (85 loc) 4.93 kB
const alarmLevel = { Major: 'major', Minor: 'minor', Warning: 'warning', }; const inverterAlarms1 = new Map() .set('0', { id: 2001, name: 'High String Input Voltage', level: alarmLevel.Major }) .set('1', { id: 2002, name: 'DC Arc Fault', level: alarmLevel.Major }) .set('2', { id: 2011, name: 'String Reverse Connection', level: alarmLevel.Major }) .set('3', { id: 2012, name: 'String Current Backfeed', level: alarmLevel.Warning }) .set('4', { id: 2913, name: 'Abnormal String Power', level: alarmLevel.Warning }) .set('5', { id: 2021, name: 'AFCI Self-Check Fail', level: alarmLevel.Major }) .set('6', { id: 2031, name: 'Phase Wire Short-Circuited to PE', level: alarmLevel.Major }) .set('7', { id: 2032, name: 'Grid Loss', level: alarmLevel.Major }) .set('8', { id: 2033, name: 'Grid Undervoltage', level: alarmLevel.Major }) .set('9', { id: 2034, name: 'Grid Overvoltage', level: alarmLevel.Major }) .set('10', { id: 2035, name: 'Grid Volt. Imbalance', level: alarmLevel.Major }) .set('11', { id: 2036, name: 'Grid Overfrequency', level: alarmLevel.Major }) .set('12', { id: 2037, name: 'Grid Underfrequency', level: alarmLevel.Major }) .set('13', { id: 2038, name: 'Unstable Grid Frequency', level: alarmLevel.Major }) .set('14', { id: 2039, name: 'Output Overcurrent', level: alarmLevel.Major }) .set('15', { id: 2040, name: 'Output DC Component Overhigh', level: alarmLevel.Major }); const inverterAlarms2 = new Map() .set('0', { id: 2051, name: 'Abnormal Residual Current', level: alarmLevel.Major }) .set('1', { id: 2061, name: 'Abnormal Grounding', level: alarmLevel.Major }) .set('2', { id: 2062, name: 'Low Insulation Resistance', level: alarmLevel.Major }) .set('3', { id: 2063, name: 'Overtemperature', level: alarmLevel.Minor }) .set('4', { id: 2064, name: 'Device Fault', level: alarmLevel.Major }) .set('5', { id: 2065, name: 'Upgrade Failed or Version Mismatch', level: alarmLevel.Minor }) .set('6', { id: 2066, name: 'License Expired', level: alarmLevel.Warning }) .set('7', { id: 61440, name: 'Faulty Monitoring Unit', level: alarmLevel.Minor }) .set('8', { id: 2067, name: 'Faulty Power Collector', level: alarmLevel.Major }) .set('9', { id: 2068, name: 'Battery abnormal', level: alarmLevel.Minor }) .set('10', { id: 2070, name: 'Active Islanding', level: alarmLevel.Major }) .set('11', { id: 2071, name: 'Passive Islanding', level: alarmLevel.Major }) .set('12', { id: 2072, name: 'Transient AC Overvoltage', level: alarmLevel.Major }) .set('13', { id: 2075, name: 'Peripheral port short circuit', level: alarmLevel.Warning }) .set('14', { id: 2077, name: 'Churn output overload', level: alarmLevel.Major }) .set('15', { id: 2080, name: 'Abnormal PV module configuration', level: alarmLevel.Major }); const inverterAlarms3 = new Map() .set('0', { id: 2081, name: 'Optimizer fault', level: alarmLevel.Warning }) .set('1', { id: 2085, name: 'Built-in PID operation abnormal', level: alarmLevel.Minor }) .set('2', { id: 2014, name: 'High input string voltage to ground', level: alarmLevel.Major }) .set('3', { id: 2086, name: 'External Fan Abnormal', level: alarmLevel.Major }) .set('4', { id: 2069, name: 'Battery Reverse Connection', level: alarmLevel.Major }) .set('5', { id: 2082, name: 'On-grid /Off-grid controller abnormal', level: alarmLevel.Major }) .set('6', { id: 2015, name: 'PV String Loss', level: alarmLevel.Warning }) .set('7', { id: 2087, name: 'Internal Fan Abnormal', level: alarmLevel.Major }) .set('8', { id: 2088, name: 'DC Protection Unit Abnormal', level: alarmLevel.Major }) .set('9', { id: 2089, name: 'EL Unit Abnormal', level: alarmLevel.Minor }) .set('10', { id: 2090, name: 'Active Adjustment Instruction Abnormal', level: alarmLevel.Major }) .set('11', { id: 2091, name: 'Reactive Adjustment Instruction Abnormal', level: alarmLevel.Major }) .set('12', { id: 2092, name: 'CT Wiring Abnormal', level: alarmLevel.Major }) .set('13', { id: 2003, name: 'DC Arc Fault(ADMC Alarm to be clear manually)', level: alarmLevel.Major }) .set('14', { id: 2093, name: 'DC Switch Abnormal', level: alarmLevel.Minor }) .set('15', { id: 2094, name: 'Allowable discharge capacity of the battery is low', level: alarmLevel.Warning }); function fromBitfield(alarmString, lot) { const result = []; for (let i = 0; i < alarmString.length; i++) { if (alarmString[alarmString.length - 1 - i] === '1') { const alarmText = lot.get(String(i)); if (alarmText) { result.push(alarmText); } } } return result; } function getAlarmInfo(alarmCode, alarmNo) { if (alarmCode !== null) { const alarmString = (alarmCode >>> 0).toString(2).padStart(16, '0'); switch (alarmNo) { case 1: return fromBitfield(alarmString, inverterAlarms1); case 2: return fromBitfield(alarmString, inverterAlarms2); case 3: return fromBitfield(alarmString, inverterAlarms3); } } return []; } module.exports = { getAlarmInfo, };