stefan123t 2 years ago
parent
commit
dbb6ffa7f7
  1. 22
      tools/esp8266/app.cpp
  2. 138
      tools/rpi/hoymiles/decoders/__init__.py

22
tools/esp8266/app.cpp

@ -232,16 +232,20 @@ void app::loop(void) {
Inverter<> *iv = mSys->findInverter(&p->packet[1]);
if(NULL != iv) {
uint8_t *pid = &p->packet[9];
if((*pid & 0x7F) < 5) {
memcpy(mPayload[iv->id].data[(*pid & 0x7F) - 1], &p->packet[10], len-11);
mPayload[iv->id].len[(*pid & 0x7F) - 1] = len-11;
}
if (*pid == 0x00) {
DPRINT(DBG_DEBUG, "fragment number zero received and ignored");
} else {
if((*pid & 0x7F) < 5) {
memcpy(mPayload[iv->id].data[(*pid & 0x7F) - 1], &p->packet[10], len-11);
mPayload[iv->id].len[(*pid & 0x7F) - 1] = len-11;
}
if((*pid & 0x80) == 0x80) {
if((*pid & 0x7f) > mPayload[iv->id].maxPackId) {
mPayload[iv->id].maxPackId = (*pid & 0x7f);
if(*pid > 0x81)
mLastPacketId = *pid;
if((*pid & 0x80) == 0x80) {
if((*pid & 0x7f) > mPayload[iv->id].maxPackId) {
mPayload[iv->id].maxPackId = (*pid & 0x7f);
if(*pid > 0x81)
mLastPacketId = *pid;
}
}
}
}

138
tools/rpi/hoymiles/decoders/__init__.py

@ -217,74 +217,76 @@ class EventsResponse(UnknownResponse):
""" Hoymiles micro-inverter event log decode helper """
alarm_codes = {
1: 'Inverter start',
2: 'DTU command failed',
121: 'Over temperature protection',
125: 'Grid configuration parameter error',
126: 'Software error code 126',
127: 'Firmware error',
128: 'Software error code 128',
129: 'Software error code 129',
130: 'Offline',
141: 'Grid overvoltage',
142: 'Average grid overvoltage',
143: 'Grid undervoltage',
144: 'Grid overfrequency',
145: 'Grid underfrequency',
146: 'Rapid grid frequency change',
147: 'Power grid outage',
148: 'Grid disconnection',
149: 'Island detected',
205: 'Input port 1 & 2 overvoltage',
206: 'Input port 3 & 4 overvoltage',
207: 'Input port 1 & 2 undervoltage',
208: 'Input port 3 & 4 undervoltage',
209: 'Port 1 no input',
210: 'Port 2 no input',
211: 'Port 3 no input',
212: 'Port 4 no input',
213: 'PV-1 & PV-2 abnormal wiring',
214: 'PV-3 & PV-4 abnormal wiring',
215: 'PV-1 Input overvoltage',
216: 'PV-1 Input undervoltage',
217: 'PV-2 Input overvoltage',
218: 'PV-2 Input undervoltage',
219: 'PV-3 Input overvoltage',
220: 'PV-3 Input undervoltage',
221: 'PV-4 Input overvoltage',
222: 'PV-4 Input undervoltage',
301: 'Hardware error code 301',
302: 'Hardware error code 302',
303: 'Hardware error code 303',
304: 'Hardware error code 304',
305: 'Hardware error code 305',
306: 'Hardware error code 306',
307: 'Hardware error code 307',
308: 'Hardware error code 308',
309: 'Hardware error code 309',
310: 'Hardware error code 310',
311: 'Hardware error code 311',
312: 'Hardware error code 312',
313: 'Hardware error code 313',
314: 'Hardware error code 314',
5041: 'Error code-04 Port 1',
5042: 'Error code-04 Port 2',
5043: 'Error code-04 Port 3',
5044: 'Error code-04 Port 4',
5051: 'PV Input 1 Overvoltage/Undervoltage',
5052: 'PV Input 2 Overvoltage/Undervoltage',
5053: 'PV Input 3 Overvoltage/Undervoltage',
5054: 'PV Input 4 Overvoltage/Undervoltage',
5060: 'Abnormal bias',
5070: 'Over temperature protection',
5080: 'Grid Overvoltage/Undervoltage',
5090: 'Grid Overfrequency/Underfrequency',
5100: 'Island detected',
5120: 'EEPROM reading and writing error',
5150: '10 min value grid overvoltage',
5200: 'Firmware error',
8310: 'Shut down',
9000: 'Microinverter is suspected of being stolen'
// HM Error Codes
1: 'Inverter start', // 0x01
2: 'DTU command failed', // 0x02
121: 'Over temperature protection', // 0x79
125: 'Grid configuration parameter error', // 0x7D
126: 'Software error code 126', // 0x7E
127: 'Firmware error', // 0x7F
128: 'Software error code 128', // 0x80
129: 'Software error code 129', // 0x81
130: 'Offline', // 0x82
141: 'Grid overvoltage', // 0x8D
142: 'Average grid overvoltage', // 0x8E
143: 'Grid undervoltage', // 0x8F
144: 'Grid overfrequency', // 0x90
145: 'Grid underfrequency', // 0x91
146: 'Rapid grid frequency change', // 0x92
147: 'Power grid outage', // 0x93
148: 'Grid disconnection', // 0x94
149: 'Island detected', // 0x95
205: 'Input port 1 & 2 overvoltage', // 0xCD
206: 'Input port 3 & 4 overvoltage', // 0xCE
207: 'Input port 1 & 2 undervoltage', // 0xCF
208: 'Input port 3 & 4 undervoltage', // 0xD0
209: 'Port 1 no input', // 0xD1
210: 'Port 2 no input', // 0xD2
211: 'Port 3 no input', // 0xD3
212: 'Port 4 no input', // 0xD4
213: 'PV-1 & PV-2 abnormal wiring', // 0xD5
214: 'PV-3 & PV-4 abnormal wiring', // 0xD6
215: 'PV-1 Input overvoltage', // 0xD7
216: 'PV-1 Input undervoltage', // 0xD8
217: 'PV-2 Input overvoltage', // 0xD9
218: 'PV-2 Input undervoltage', // 0xDA
219: 'PV-3 Input overvoltage', // 0xDB
220: 'PV-3 Input undervoltage', // 0xDC
221: 'PV-4 Input overvoltage', // 0xDD
222: 'PV-4 Input undervoltage', // 0xDE
301: 'Hardware error code 301', // 0x012D
302: 'Hardware error code 302', // 0x012E
303: 'Hardware error code 303', // 0x012F
304: 'Hardware error code 304', // 0x0130
305: 'Hardware error code 305', // 0x0131
306: 'Hardware error code 306', // 0x0132
307: 'Hardware error code 307', // 0x0133
308: 'Hardware error code 308', // 0x0134
309: 'Hardware error code 309', // 0x0135
310: 'Hardware error code 310', // 0x0136
311: 'Hardware error code 311', // 0x0137
312: 'Hardware error code 312', // 0x0138
313: 'Hardware error code 313', // 0x0139
314: 'Hardware error code 314', // 0x013A
// MI Error Codes
5041: 'Error code-04 Port 1', // 0x13B1
5042: 'Error code-04 Port 2', // 0x13B2
5043: 'Error code-04 Port 3', // 0x13B3
5044: 'Error code-04 Port 4', // 0x13B4
5051: 'PV Input 1 Overvoltage/Undervoltage', // 0x13BB
5052: 'PV Input 2 Overvoltage/Undervoltage', // 0x13BC
5053: 'PV Input 3 Overvoltage/Undervoltage', // 0x13BD
5054: 'PV Input 4 Overvoltage/Undervoltage', // 0x13BE
5060: 'Abnormal bias', // 0x13C4
5070: 'Over temperature protection', // 0x13CE
5080: 'Grid Overvoltage/Undervoltage', // 0x13D8
5090: 'Grid Overfrequency/Underfrequency', // 0x13E2
5100: 'Island detected', // 0x13EC
5120: 'EEPROM reading and writing error', // 0x1400
5150: '10 min value grid overvoltage', // 0x141E
5200: 'Firmware error', // 0x1450
8310: 'Shut down', // 0x2076
9000: 'Microinverter is suspected of being stolen' // 0x2328
}
def __init__(self, *args, **params):

Loading…
Cancel
Save