Open adambogocz opened 1 year ago
Yes, I am currently looking at how to refactor the library to make it much easier to add and manage inverters. If you could share your findings here I will be able to add them in. Thank you for reaching out!
You are welcome :)
3 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
PowerDc1: { value: bit16(1, t[7])},
PowerDc2: { value: bit16(1, t[8])},
BAT_Power: { value: bit16(0, t[18])},
feedInPower: { value: bit32(0, t[48], t[49])},
GridAPower: { value: bit16(0, t[2])},
FeedInEnergy: { value: .01 * bit32(1, t[50], t[51])},
ConsumeEnergy: { value: .01 * bit32(1, t[52], t[53])},
RunMode: { value: bit16(1, t[10])},
EPSAPower: { value: bit16(0, t[43])},
Vdc1: { value: .1 * bit16(1, t[3])},
Vdc2: { value: .1 * bit16(1, t[4])},
Idc1: { value: .1 * bit16(1, t[5])},
Idc2: { value: .1 * bit16(1, t[6])},
EPSAVoltage: { value: .1 * bit16(1, t[44])},
EPSACurrent: { value: .1 * bit16(0, t[45])},
BatteryCapacity: { value: bit16(1, t[20])},
BatteryVoltage: { value: .01 * bit16(1, t[16])},
BatteryTemperature: { value: bit16(0, t[19])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[9])}
},
4 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
PowerDc1: { value: bit16(1, t[7])},
PowerDc2: { value: bit16(1, t[8])},
feedInPower: { value: bit32(0, t[48], t[49])},
GridAPower: { value: bit16(0, t[2])},
FeedInEnergy: { value: .01 * bit32(1, t[50], t[51])},
ConsumeEnergy: { value: .01 * bit32(1, t[52], t[53])},
RunMode: { value: bit16(1, t[10])},
Vdc1: { value: .1 * bit16(1, t[3])},
Vdc2: { value: .1 * bit16(1, t[4])},
Idc1: { value: .1 * bit16(1, t[5])},
Idc2: { value: .1 * bit16(1, t[6])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[9])}
},
5 = {
Yield_Today: { value: .1 * bit16(1, t[21])},
Yield_Total: { value: .1 * bit32(1, t[19], t[20])},
PowerDc1: { value: bit16(1, t[13])},
PowerDc2: { value: bit16(1, t[14])},
BAT_Power: { value: bit16(0, t[26])},
feedInPower: { value: bit32(0, t[65], t[66])},
GridAPower: { value: bit16(0, t[6])},
GridBPower: { value: bit16(0, t[7])},
GridCPower: { value: bit16(0, t[8])},
FeedInEnergy: { value: .01 * bit32(1, t[67], t[68])},
ConsumeEnergy: { value: .01 * bit32(1, t[69], t[70])},
RunMode: { value: bit16(1, t[18])},
EPSAPower: { value: bit16(0, t[60])},
EPSBPower: { value: bit16(0, t[61])},
EPSCPower: { value: bit16(0, t[62])},
Vdc1: { value: .1 * bit16(1, t[9])},
Vdc2: { value: .1 * bit16(1, t[10])},
Idc1: { value: .1 * bit16(1, t[11])},
Idc2: { value: .1 * bit16(1, t[12])},
EPSAVoltage: { value: .1 * bit16(1, t[54])},
EPSBVoltage: { value: .1 * bit16(1, t[55])},
EPSCVoltage: { value: .1 * bit16(1, t[56])},
EPSACurrent: { value: .1 * bit16(0, t[57])},
EPSBCurrent: { value: .1 * bit16(0, t[58])},
EPSCCurrent: { value: .1 * bit16(0, t[59])},
BatteryCapacity: { value: bit16(1, t[28])},
BatteryVoltage: { value: .01 * bit16(1, t[24])},
BatteryTemperature: { value: bit16(0, t[27])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[1])},
GridCVoltage: { value: .1 * bit16(1, t[2])},
GridACurrent: { value: .1 * bit16(0, t[3])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
GridCCurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[15])},
FreqacB: { value: .01 * bit16(1, t[16])},
FreqacC: { value: .01 * bit16(1, t[17])}
},
6 = {
Yield_Today: { value: .1 * bit16(1, t[21])},
Yield_Total: { value: .1 * bit32(1, t[19], t[20])},
PowerDc1: { value: bit16(1, t[13])},
PowerDc2: { value: bit16(1, t[14])},
feedInPower: { value: bit32(0, t[73], t[74])},
GridAPower: { value: bit16(0, t[6])},
GridBPower: { value: bit16(0, t[7])},
GridCPower: { value: bit16(0, t[8])},
FeedInEnergy: { value: .01 * bit32(1, t[75], t[76])},
ConsumeEnergy: { value: .01 * bit32(1, t[77], t[78])},
RunMode: { value: bit16(1, t[18])},
Vdc1: { value: .1 * bit16(1, t[9])},
Vdc2: { value: .1 * bit16(1, t[10])},
Idc1: { value: .1 * bit16(1, t[11])},
Idc2: { value: .1 * bit16(1, t[12])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[1])},
GridCVoltage: { value: .1 * bit16(1, t[2])},
GridACurrent: { value: .1 * bit16(0, t[3])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
GridCCurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[15])},
FreqacB: { value: .01 * bit16(1, t[16])},
FreqacC: { value: .01 * bit16(1, t[17])}
},
7 = {
Yield_Today: { value: .1 * bit16(1, t[21])},
Yield_Total: { value: .1 * bit32(1, t[19], t[20])},
PowerDc1: { value: bit16(1, t[13])},
PowerDc2: { value: bit16(1, t[14])},
feedInPower: { value: bit32(0, t[74], t[75])},
GridAPower: { value: bit16(0, t[6])},
GridBPower: { value: bit16(0, t[7])},
GridCPower: { value: bit16(0, t[8])},
FeedInEnergy: { value: .01 * bit32(1, t[76], t[77])},
ConsumeEnergy: { value: .01 * bit32(1, t[78], t[79])},
RunMode: { value: bit16(1, t[18])},
Vdc1: { value: .1 * bit16(1, t[9])},
Vdc2: { value: .1 * bit16(1, t[10])},
Idc1: { value: .1 * bit16(1, t[11])},
Idc2: { value: .1 * bit16(1, t[12])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[1])},
GridCVoltage: { value: .1 * bit16(1, t[2])},
GridACurrent: { value: .1 * bit16(0, t[3])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
GridCCurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[15])},
FreqacB: { value: .01 * bit16(1, t[16])},
FreqacC: { value: .01 * bit16(1, t[17])}
},
8 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
PowerDc1: { value: bit16(1, t[7])},
PowerDc2: { value: bit16(1, t[8])},
feedInPower: { value: bit32(0, t[48], t[49])},
GridAPower: { value: bit16(0, t[2])},
GridBPower: { value: 0},
GridCPower: { value: 0},
FeedInEnergy: { value: .01 * bit32(1, t[50], t[51])},
ConsumeEnergy: { value: .01 * bit32(1, t[52], t[53])},
RunMode: { value: bit16(1, t[10])},
Vdc1: { value: .1 * bit16(1, t[3])},
Vdc2: { value: .1 * bit16(1, t[4])},
Idc1: { value: .1 * bit16(1, t[5])},
Idc2: { value: .1 * bit16(1, t[6])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[9])}
},
9 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
BAT_Power: { value: bit16(0, t[16])},
feedInPower: { value: bit32(0, t[44], t[45])},
GridAPower: { value: bit16(0, t[2])},
GridBPower: { value: 0},
GridCPower: { value: 0},
FeedInEnergy: { value: .01 * bit32(1, t[46], t[47])},
ConsumeEnergy: { value: .01 * bit32(1, t[48], t[49])},
RunMode: { value: bit16(1, t[10])},
BatteryCapacity: { value: bit16(1, t[18])},
BatteryVoltage: { value: .01 * bit16(1, t[14])},
BatteryTemperature: { value: bit16(0, t[17])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[9])}
},
10,11,12 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
PowerDc1: { value: bit16(1, t[7])},
PowerDc2: { value: bit16(1, t[8])},
PowerDc3: { value: bit16(1, t[126])},
PowerDc4: { value: bit16(1, t[127])},
BAT_Power: { value: bit16(0, t[18])},
feedInPower: { value: bit32(0, t[48], t[49])},
GridAPower: { value: bit16(0, t[2])},
FeedInEnergy: { value: .1 * bit32(1, t[50], t[51])},
ConsumeEnergy: { value: .1 * bit32(1, t[52], t[53])},
RunMode: { value: bit16(1, t[10])},
EPSAPower: { value: bit16(0, t[43])},
Vdc1: { value: .1 * bit16(1, t[3])},
Vdc2: { value: .1 * bit16(1, t[4])},
Vdc3: { value: .1 * bit16(1, t[122])},
Vdc4: { value: .1 * bit16(1, t[123])},
Idc1: { value: .1 * bit16(1, t[5])},
Idc2: { value: .1 * bit16(1, t[6])},
Idc3: { value: .1 * bit16(1, t[124])},
Idc4: { value: .1 * bit16(1, t[125])},
EPSAVoltage: { value: .1 * bit16(1, t[44])},
EPSACurrent: { value: .1 * bit16(0, t[45])},
BatteryCapacity: { value: bit16(1, t[20])},
BatteryVoltage: { value: .01 * bit16(1, t[16])},
BatteryTemperature: { value: bit16(0, t[19])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[9])}
},
13 = {
Yield_Today: { value: .1 * bit16(1, t[36])},
Yield_Total: { value: .1 * bit32(1, t[34], t[35])},
PowerDc1: { value: bit16(1, t[10])},
PowerDc2: { value: bit16(1, t[13])},
PowerDc3: { value: bit16(1, t[16])},
BAT_Power: { value: bit16(0, t[105])},
feedInPower: { value: bit16(0, t[29])},
GridAPower: { value: bit16(0, t[2])},
GridBPower: { value: bit16(0, t[5])},
FeedInEnergy: { value: .01 * bit32(1, t[52], t[53])},
ConsumeEnergy: { value: .01 * bit32(1, t[54], t[55])},
RunMode: { value: bit16(1, t[17])},
EPSAPower: { value: bit16(0, t[21])},
EPSBPower: { value: bit16(0, t[25])},
Vdc1: { value: .1 * bit16(1, t[8])},
Vdc2: { value: .1 * bit16(1, t[11])},
Vdc3: { value: .1 * bit16(1, t[14])},
Idc1: { value: .1 * bit16(1, t[9])},
Idc2: { value: .1 * bit16(1, t[12])},
Idc3: { value: .1 * bit16(1, t[15])},
EPSAVoltage: { value: .1 * bit16(1, t[19])},
EPSBVoltage: { value: .1 * bit16(1, t[23])},
EPSACurrent: { value: .1 * bit16(0, t[20])},
EPSBCurrent: { value: .1 * bit16(0, t[24])},
BatteryCapacity: { value: bit16(1, t[80])},
BatteryVoltage: { value: .1 * bit16(0, t[106])},
BatteryTemperature: { value: bit16(0, t[82])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[3])},
GridACurrent: { value: .1 * bit16(0, t[1])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
FreqacA: { value: .01 * bit16(1, t[7])}
},
14 = {
Yield_Today: { value: .1 * bit16(1, t[70])},
Yield_Total: { value: .1 * bit32(1, t[68], t[69])},
PowerDc1: { value: bit16(1, t[14])},
PowerDc2: { value: bit16(1, t[15])},
BAT_Power: { value: bit16(0, t[41])},
feedInPower: { value: bit32(0, t[34], t[35])},
GridAPower: { value: bit16(0, t[6])},
GridBPower: { value: bit16(0, t[7])},
GridCPower: { value: bit16(0, t[8])},
FeedInEnergy: { value: .01 * bit32(1, t[86], t[87])},
ConsumeEnergy: { value: .01 * bit32(1, t[88], t[89])},
RunMode: { value: bit16(1, t[19])},
EPSAPower: { value: bit16(0, t[29])},
EPSBPower: { value: bit16(0, t[30])},
EPSCPower: { value: bit16(0, t[31])},
Vdc1: { value: .1 * bit16(1, t[10])},
Vdc2: { value: .1 * bit16(1, t[11])},
Idc1: { value: .1 * bit16(1, t[12])},
Idc2: { value: .1 * bit16(1, t[13])},
EPSAVoltage: { value: .1 * bit16(1, t[23])},
EPSBVoltage: { value: .1 * bit16(1, t[24])},
EPSCVoltage: { value: .1 * bit16(1, t[25])},
EPSACurrent: { value: .1 * bit16(0, t[26])},
EPSBCurrent: { value: .1 * bit16(0, t[27])},
EPSCCurrent: { value: .1 * bit16(0, t[28])},
BatteryCapacity: { value: bit16(1, t[103])},
BatteryVoltage: { value: .01 * bit32(1, t[169], t[170])},
BatteryTemperature: { value: bit16(0, t[105])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[1])},
GridCVoltage: { value: .1 * bit16(1, t[2])},
GridACurrent: { value: .1 * bit16(0, t[3])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
GridCCurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[16])},
FreqacB: { value: .01 * bit16(1, t[17])},
FreqacC: { value: .01 * bit16(1, t[18])}
},
15 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
PowerDc1: { value: bit16(1, t[8])},
PowerDc2: { value: bit16(1, t[9])},
BAT_Power: { value: bit16(0, t[16])},
feedInPower: { value: bit32(0, t[32], t[33])},
GridAPower: { value: bit16(0, t[2])},
GridBPower: { value: 0},
GridCPower: { value: 0},
FeedInEnergy: { value: .01 * bit32(1, t[34], t[35])},
ConsumeEnergy: { value: .01 * bit32(1, t[36], t[37])},
RunMode: { value: bit16(1, t[10])},
EPSAPower: { value: bit16(0, t[28])},
Vdc1: { value: .1 * bit16(1, t[4])},
Vdc2: { value: .1 * bit16(1, t[5])},
Idc1: { value: .1 * bit16(1, t[6])},
Idc2: { value: .1 * bit16(1, t[7])},
EPSAVoltage: { value: .1 * bit16(1, t[29])},
EPSACurrent: { value: .1 * bit16(0, t[30])},
BatteryCapacity: { value: bit16(1, t[18])},
BatteryVoltage: { value: .01 * bit16(1, t[14])},
BatteryTemperature: { value: bit16(0, t[17])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[3])}
},
16 = {
Yield_Today: { value: .1 * bit16(1, t[24])},
Yield_Total: { value: .1 * bit32(1, t[22], t[23])},
PowerDc1: { value: bit16(1, t[15])},
PowerDc2: { value: bit16(1, t[16])},
PowerDc3: { value: bit16(1, t[17])},
feedInPower: { value: bit32(0, t[72], t[73])},
GridAPower: { value: bit16(0, t[6])},
GridBPower: { value: bit16(0, t[7])},
GridCPower: { value: bit16(0, t[8])},
FeedInEnergy: { value: .01 * bit32(1, t[74], t[75])},
ConsumeEnergy: { value: .01 * bit32(1, t[76], t[77])},
RunMode: { value: bit16(1, t[21])},
Vdc1: { value: .1 * bit16(1, t[9])},
Vdc2: { value: .1 * bit16(1, t[10])},
Vdc3: { value: .1 * bit16(1, t[11])},
Idc1: { value: .1 * bit16(1, t[12])},
Idc2: { value: .1 * bit16(1, t[13])},
Idc3: { value: .1 * bit16(1, t[14])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[1])},
GridCVoltage: { value: .1 * bit16(1, t[2])},
GridACurrent: { value: .1 * bit16(0, t[3])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
GridCCurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[18])},
FreqacB: { value: .01 * bit16(1, t[19])},
FreqacC: { value: .01 * bit16(1, t[20])}
},
17 = {
Yield_Today: { value: .1 * bit16(1, t[36])},
Yield_Total: { value: .1 * bit32(1, t[34], t[35])},
PowerDc1: { value: bit16(1, t[10])},
PowerDc2: { value: bit16(1, t[13])},
PowerDc3: { value: bit16(1, t[16])},
BAT_Power: { value: bit16(0, t[105])},
feedInPower: { value: bit16(0, t[29])},
GridAPower: { value: bit16(0, t[2])},
GridBPower: { value: bit16(0, t[5])},
FeedInEnergy: { value: .01 * bit32(1, t[52], t[53])},
ConsumeEnergy: { value: .01 * bit32(1, t[54], t[55])},
RunMode: { value: bit16(1, t[17])},
EPSAPower: { value: bit16(0, t[21])},
EPSBPower: { value: bit16(0, t[25])},
Vdc1: { value: .1 * bit16(1, t[8])},
Vdc2: { value: .1 * bit16(1, t[11])},
Vdc3: { value: .1 * bit16(1, t[14])},
Idc1: { value: .1 * bit16(1, t[9])},
Idc2: { value: .1 * bit16(1, t[12])},
Idc3: { value: .1 * bit16(1, t[15])},
EPSAVoltage: { value: .1 * bit16(1, t[19])},
EPSBVoltage: { value: .1 * bit16(1, t[23])},
EPSACurrent: { value: .1 * bit16(0, t[20])},
EPSBCurrent: { value: .1 * bit16(0, t[24])},
BatteryCapacity: { value: bit16(1, t[80])},
BatteryVoltage: { value: .1 * bit16(0, t[106])},
BatteryTemperature: { value: bit16(0, t[82])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[3])},
GridACurrent: { value: .1 * bit16(0, t[1])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
FreqacA: { value: .01 * bit16(1, t[7])}
},
18,22 = {
Yield_Today: { value: .1 * bit16(1, t[21])},
Yield_Total: { value: .1 * bit32(1, t[19], t[20])},
PowerDc1: { value: bit16(1, t[13])},
PowerDc2: { value: bit16(1, t[14])},
feedInPower: { value: bit32(0, t[72], t[73])},
GridAPower: { value: bit16(0, t[3])},
FeedInEnergy: { value: .01 * bit32(1, t[74], t[75])},
ConsumeEnergy: { value: .01 * bit32(1, t[76], t[77])},
RunMode: { value: bit16(1, t[10])},
Vdc1: { value: .1 * bit16(1, t[4])},
Vdc2: { value: .1 * bit16(1, t[5])},
Idc1: { value: .1 * bit16(1, t[8])},
Idc2: { value: .1 * bit16(1, t[9])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[2])}
},
19,20,21 = {
Yield_Today: { value: .1 * bit16(1, t[43])},
Yield_Total: { value: .1 * bit32(1, t[41], t[42])},
PowerDc1: { value: bit16(1, t[19])},
PowerDc2: { value: bit16(1, t[20])},
PowerDc3: { value: bit16(1, t[21])},
BAT_Power: { value: bit16(0, t[91])},
feedInPower: { value: bit32(0, t[28], t[29])},
GridAPower: { value: bit16(0, t[6])},
FeedInEnergy: { value: .1 * bit32(1, t[33], t[34])},
ConsumeEnergy: { value: .1 * bit32(1, t[35], t[36])},
RunMode: { value: bit8low(1, t[10])},
EPSAPower: { value: bit16(0, t[27])},
Vdc1: { value: .1 * bit16(1, t[11])},
Vdc2: { value: .1 * bit16(1, t[12])},
Vdc3: { value: .1 * bit16(1, t[13])},
Idc1: { value: .1 * bit16(1, t[15])},
Idc2: { value: .1 * bit16(1, t[16])},
Idc3: { value: .1 * bit16(1, t[17])},
EPSAVoltage: { value: .1 * bit16(1, t[24])},
EPSACurrent: { value: .1 * bit16(0, t[25])},
BatteryCapacity: { value: bit16(1, t[93])},
BatteryVoltage: { value: .01 * bit16(1, t[89])},
BatteryTemperature: { value: bit16(0, t[92])},
GridAVoltage: { value: .1 * bit16(1, t[4])},
GridACurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[7])},
ParallelStatus: { value: bit16(1, t[80])},
SlaverNum: { value: bit16(1, t[81])},
ParallelOnlineStatus: { value: bit16(1, t[82])}
},
23 = {
Yield_Today: { value: .1 * bit16(1, t[13])},
Yield_Total: { value: .1 * bit32(1, t[11], t[12])},
PowerDc1: { value: bit16(1, t[8])},
PowerDc2: { value: bit16(1, t[9])},
BAT_Power: { value: bit16(0, t[16])},
feedInPower: { value: bit32(0, t[32], t[33])},
GridAPower: { value: bit16(0, t[2])},
FeedInEnergy: { value: .01 * bit32(1, t[34], t[35])},
ConsumeEnergy: { value: .01 * bit32(1, t[36], t[37])},
RunMode: { value: bit16(1, t[10])},
EPSAPower: { value: bit16(0, t[28])},
Vdc1: { value: .1 * bit16(1, t[4])},
Vdc2: { value: .1 * bit16(1, t[5])},
Idc1: { value: .1 * bit16(1, t[6])},
Idc2: { value: .1 * bit16(1, t[7])},
EPSAVoltage: { value: .1 * bit16(1, t[29])},
EPSACurrent: { value: .1 * bit16(0, t[30])},
BatteryCapacity: { value: bit16(1, t[18])},
BatteryVoltage: { value: .01 * bit16(1, t[14])},
BatteryTemperature: { value: bit16(0, t[17])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridACurrent: { value: .1 * bit16(0, t[1])},
FreqacA: { value: .01 * bit16(1, t[3])}
},
24 = {
Yield_Today: { value: .1 * bit16(1, t[70])},
Yield_Total: { value: .1 * bit32(1, t[71], t[72])},
PowerDc1: { value: bit16(1, t[14])},
PowerDc2: { value: bit16(1, t[15])},
BAT_Power: { value: bit16(0, t[41])},
feedInPower: { value: bit32(0, t[34], t[35])},
GridAPower: { value: bit16(0, t[6])},
GridBPower: { value: bit16(0, t[7])},
GridCPower: { value: bit16(0, t[8])},
FeedInEnergy: { value: .01 * bit32(1, t[86], t[87])},
ConsumeEnergy: { value: .01 * bit32(1, t[88], t[89])},
RunMode: { value: bit16(1, t[19])},
EPSAPower: { value: bit16(0, t[29])},
EPSBPower: { value: bit16(0, t[30])},
EPSCPower: { value: bit16(0, t[31])},
Vdc1: { value: .1 * bit16(1, t[10])},
Vdc2: { value: .1 * bit16(1, t[11])},
Idc1: { value: .1 * bit16(1, t[12])},
Idc2: { value: .1 * bit16(1, t[13])},
EPSAVoltage: { value: .1 * bit16(1, t[23])},
EPSBVoltage: { value: .1 * bit16(1, t[24])},
EPSCVoltage: { value: .1 * bit16(1, t[25])},
EPSACurrent: { value: .1 * bit16(0, t[26])},
EPSBCurrent: { value: .1 * bit16(0, t[27])},
EPSCCurrent: { value: .1 * bit16(0, t[28])},
BatteryCapacity: { value: bit16(1, t[103])},
BatteryVoltage: { value: .01 * bit16(1, t[39])},
BatteryTemperature: { value: bit16(0, t[105])},
GridAVoltage: { value: .1 * bit16(1, t[0])},
GridBVoltage: { value: .1 * bit16(1, t[1])},
GridCVoltage: { value: .1 * bit16(1, t[2])},
GridACurrent: { value: .1 * bit16(0, t[3])},
GridBCurrent: { value: .1 * bit16(0, t[4])},
GridCCurrent: { value: .1 * bit16(0, t[5])},
FreqacA: { value: .01 * bit16(1, t[16])},
FreqacB: { value: .01 * bit16(1, t[17])},
FreqacC: { value: .01 * bit16(1, t[18])}
},
100,101 = {
Yield_Today: { value: .1 * bit16(0, t[48])},
Yield_Total: { value: .1 * bit32(0, t[46], t[47])},
GridAPower: { value: bit32(0, t[33], t[34])},
GridBPower: { value: bit32(0, t[35], t[36])},
GridCPower: { value: bit32(0, t[37], t[38])},
FeedInEnergy: { value: 0},
ConsumeEnergy: { value: 0},
RunMode: { value: bit16(1, t[56])},
Vdc1: { value: .1 * bit16(0, t[87])},
Vdc2: { value: .1 * bit16(0, t[89])},
Vdc3: { value: .1 * bit16(0, t[91])},
Vdc4: { value: .1 * bit16(0, t[93])},
Vdc5: { value: .1 * bit16(0, t[95])},
Vdc6: { value: .1 * bit16(0, t[97])},
Vdc7: { value: .1 * bit16(0, t[99])},
Vdc8: { value: .1 * bit16(0, t[101])},
Vdc9: { value: .1 * bit16(0, t[103])},
Vdc10: { value: .1 * bit16(0, t[105])},
Vdc11: { value: .1 * bit16(0, t[107])},
Vdc12: { value: .1 * bit16(0, t[109])},
Idc1: { value: .1 * bit16(0, t[88])},
Idc2: { value: .1 * bit16(0, t[90])},
Idc3: { value: .1 * bit16(0, t[92])},
Idc4: { value: .1 * bit16(0, t[94])},
Idc5: { value: .1 * bit16(0, t[96])},
Idc6: { value: .1 * bit16(0, t[98])},
Idc7: { value: .1 * bit16(0, t[100])},
Idc8: { value: .1 * bit16(0, t[102])},
Idc9: { value: .1 * bit16(0, t[104])},
Idc10: { value: .1 * bit16(0, t[106])},
Idc11: { value: .1 * bit16(0, t[108])},
Idc12: { value: .1 * bit16(0, t[110])},
CurrBranch1: { value: .1 * bit16(1, t[137])},
CurrBranch2: { value: .1 * bit16(1, t[138])},
CurrBranch3: { value: .1 * bit16(1, t[139])},
CurrBranch4: { value: .1 * bit16(1, t[140])},
CurrBranch5: { value: .1 * bit16(1, t[141])},
CurrBranch6: { value: .1 * bit16(1, t[142])},
CurrBranch7: { value: .1 * bit16(1, t[143])},
CurrBranch8: { value: .1 * bit16(1, t[144])},
CurrBranch9: { value: .1 * bit16(1, t[145])},
CurrBranch10: { value: .1 * bit16(1, t[146])},
CurrBranch11: { value: .1 * bit16(1, t[147])},
CurrBranch12: { value: .1 * bit16(1, t[148])},
CurrBranch13: { value: .1 * bit16(1, t[149])},
CurrBranch14: { value: .1 * bit16(1, t[150])},
CurrBranch15: { value: .1 * bit16(1, t[151])},
CurrBranch16: { value: .1 * bit16(1, t[152])},
CurrBranch17: { value: .1 * bit16(1, t[153])},
CurrBranch18: { value: .1 * bit16(1, t[154])},
CurrBranch19: { value: .1 * bit16(1, t[155])},
CurrBranch20: { value: .1 * bit16(1, t[156])},
CurrBranch21: { value: .1 * bit16(1, t[157])},
CurrBranch22: { value: .1 * bit16(1, t[158])},
CurrBranch23: { value: .1 * bit16(1, t[159])},
CurrBranch24: { value: .1 * bit16(1, t[160])},
GridAVoltage: { value: .1 * bit16(1, t[27])},
GridBVoltage: { value: .1 * bit16(1, t[28])},
GridCVoltage: { value: .1 * bit16(1, t[29])},
GridACurrent: { value: .1 * bit16(0, t[30])},
GridBCurrent: { value: .1 * bit16(0, t[31])},
GridCCurrent: { value: .1 * bit16(0, t[32])},
FreqacA: { value: .01 * bit16(1, t[39])},
derateState: { value: bit16(1, t[55])}
},
102 = {
Yield_Today:{ value: .1 * bit16(1, t[18])}
Yield_Total:{ value: .1 * bit32(1, t[14], t[15])}
PowerDc1:{ value: bit16(1, t[9])}
PowerDc2:{ value: bit16(1, t[10])}
BAT_Power:{ value: bit16(0, t[22])}
feedInPower:{ value: bit32(0, t[29], t[30])}
GridAPower:{ value: bit16(0, t[2])}
GridBPower:{ value: 0}
GridCPower:{ value: 0}
FeedInEnergy:{ value: .01 * bit32(1, t[31], t[32])}
ConsumeEnergy:{ value: .01 * bit32(1, t[33], t[34])}
RunMode:{ value: bit16(1, t[12])}
EPSAPower:{ value: bit16(0, t[43])}
Vdc1:{ value: .1 * bit16(1, t[5])}
Vdc2:{ value: .1 * bit16(1, t[7])}
Idc1:{ value: .1 * bit16(1, t[6])}
Idc2:{ value: .1 * bit16(1, t[8])}
EPSAVoltage:{ value: .1 * bit16(1, t[41])}
EPSACurrent:{ value: .1 * bit16(0, t[42])}
BatteryCapacity:{ value: bit16(1, t[18])}
BatteryVoltage:{ value: .1 * bit16(1, t[20])}
BatteryTemperature:{ value: bit16(0, t[17])}
GridAVoltage:{ value: .1 * bit16(1, t[0])}
GridACurrent:{ value: .1 * bit16(0, t[1])}
FreqacA:{ value: .01 * bit16(1, t[3])}
}
I also have conversion table for each run mode code of each inverter type
Please share it all.
BTW, can I contact you by email? I have some questions
And here is the run mode table
3 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "Standby Mode"
},
4 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode"
},
5 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "PvWakeUpBat Mode",
11: "Standby Mode"
},
6 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode"
},
7 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode"
},
8 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode"
},
9 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
8: "Self Test",
9: "Idle Mode",
10: "Standby Mode"
},
10,11,12 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "Gen Check Mmode",
11: "Gen Run Mode",
12: "RSD Standby"
},
13 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "Standby Mode"
},
14 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "Standby Mode"
},
15 = {
0: "Waiting",
1: "Checking",
2: "Normal",
3: "Fault",
4: "Permanent Fault",
5: "Upgrade",
6: "EPS Waiting",
7: "EPS",
8: "Self Testing",
9: "Idle",
10: "Standby"
},
16 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode"
},
17 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "Standby Mode"
},
18,22 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EpsCheckMode",
7: "EpsMode"
},
19,20,21 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS Check Mode",
7: "EPS Mode",
8: "Self Test",
9: "IdleMode",
10: "StandbyMode",
11: "Gen Check Mode",
12: "Gen Run Mode",
13: "RSD Standby"
},
100,101 = {
0: "InitMode",
1: "IdleMode",
2: "StartMode",
3: "RunMode",
4: "FaultMode",
5: "UpdateMode"
},
24 = {
0: "Wait Mode",
1: "Check Mode",
2: "Normal Mode",
3: "Fault Mode",
4: "Permanent Fault Mode",
5: "Update Mode",
6: "EPS check mode",
7: "EPS mode",
8: "Self Test",
9: "Idle Mode",
10: "Standby Mode"
},
23 = {
0: "Waiting",
1: "Checking",
2: "Normal",
3: "Fault",
4: "Permanent Fault",
5: "Upgrade",
6: "EPS Waiting",
7: "EPS",
8: "Self Testing",
9: "Idle",
10: "Standby"
}
ConsumeEnergy: { value: .01 * bit32(1, t[36], t[37])},
Could you also please share which inverter name is which type in the list?
I haven't got the mapping from the same source, but it can be found here https://www.solaxcloud.com/user_api/SolaxCloud_User_Monitoring_API_V6.1.pdf
Hi @squishykid, I have lookup tables to decode data for following models:
Let me know if you are interested in that, I didn't wanted to just dump it all here if you didn't wanted it.