Skip to content

Commit

Permalink
added Growatt HV inverter binding
Browse files Browse the repository at this point in the history
  • Loading branch information
ai-republic committed Jan 1, 2025
1 parent e41ef56 commit c9d9ab9
Showing 1 changed file with 55 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,12 @@ protected List<ByteBuffer> createSendFrames(final ByteBuffer requestFrame, final
sendFrames.add(sendFaultAndVoltageNumbers(aggregatedPack));
// 0x3170
sendFrames.add(sendMinMaxCellTemperatures(aggregatedPack));

// 0x3180
sendFrames.add(sendBatteryCodeAndQuantity(aggregatedPack));
// 0x3190
sendFrames.add(sendMinMaxCellVoltages(aggregatedPack));
// 0x3200
sendFrames.add(sendManufacturerAndMaxCellVoltage(aggregatedPack));
} catch (final Throwable e) {
LOG.error("Error creating send frames: ", e);
}
Expand Down Expand Up @@ -344,4 +349,53 @@ private ByteBuffer sendMinMaxCellTemperatures(final BatteryPack pack) {
return frame;
}


// 0x3180
private ByteBuffer sendBatteryCodeAndQuantity(final BatteryPack pack) {
final ByteBuffer frame = prepareSendFrame(0x00003180);

// Manufacturer code
frame.putChar(pack.manufacturerCode.charAt(0));
// Number of packs in parallel
frame.putChar((char) getEnergyStorage().getBatteryPacks().size());
// Total number of cells
frame.putChar((char) getEnergyStorage().getBatteryPacks().stream().mapToInt(p -> p.numberOfCells).sum());

short bics = 0x0000;
bics = BitUtil.setBit(bics, 0, true); // treat all packs as one aggregated pack
frame.putShort(bics);

LOG.debug("Sending battery code and quantity: {}", Port.printBuffer(frame));

return frame;
}


// 0x3190
private ByteBuffer sendMinMaxCellVoltages(final BatteryPack pack) {
final ByteBuffer frame = prepareSendFrame(0x00003190);

// Battery status
frame.put((byte) pack.type);
// Max cell voltage (1mV)
frame.putChar((char) pack.maxCellmV);
// Min cell voltage (1mV)
frame.putChar((char) pack.minCellmV);

LOG.debug("Sending cell min/max voltages: {}", Port.printBuffer(frame));
return frame;
}


// 0x3200
private ByteBuffer sendManufacturerAndMaxCellVoltage(final BatteryPack pack) {
final ByteBuffer frame = prepareSendFrame(0x00003200);

frame.putInt(0);
frame.putChar((char) 0);
frame.putChar((char) pack.maxCellVoltageLimit);

LOG.debug("Sending cell min/max voltages: {}", Port.printBuffer(frame));
return frame;
}
}

0 comments on commit c9d9ab9

Please sign in to comment.