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]); Inverter<> *iv = mSys->findInverter(&p->packet[1]);
if(NULL != iv) { if(NULL != iv) {
uint8_t *pid = &p->packet[9]; uint8_t *pid = &p->packet[9];
if((*pid & 0x7F) < 5) { if (*pid == 0x00) {
memcpy(mPayload[iv->id].data[(*pid & 0x7F) - 1], &p->packet[10], len-11); DPRINT(DBG_DEBUG, "fragment number zero received and ignored");
mPayload[iv->id].len[(*pid & 0x7F) - 1] = len-11; } 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 & 0x80) == 0x80) {
if((*pid & 0x7f) > mPayload[iv->id].maxPackId) { if((*pid & 0x7f) > mPayload[iv->id].maxPackId) {
mPayload[iv->id].maxPackId = (*pid & 0x7f); mPayload[iv->id].maxPackId = (*pid & 0x7f);
if(*pid > 0x81) if(*pid > 0x81)
mLastPacketId = *pid; mLastPacketId = *pid;
}
} }
} }
} }

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

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

Loading…
Cancel
Save