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 Dec 31, 2024
1 parent 06910d2 commit e41ef56
Show file tree
Hide file tree
Showing 10 changed files with 460 additions and 6 deletions.
7 changes: 7 additions & 0 deletions bms-to-inverter-main/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,13 @@
<version>${project.version}</version>
</dependency>

<!-- #################### GROWATT HV (CAN) ################### -->
<dependency>
<groupId>com.ai-republic.bms-to-inverter</groupId>
<artifactId>inverter-growatt-hv-can</artifactId>
<version>${project.version}</version>
</dependency>

<!-- #################### GROWATT (MODBUS) ################### -->
<dependency>
<groupId>com.ai-republic.bms-to-inverter</groupId>
Expand Down
7 changes: 7 additions & 0 deletions configurator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,13 @@
<version>${project.version}</version>
</dependency>

<!-- #################### GROWATT HV (CAN) ################### -->
<dependency>
<groupId>com.ai-republic.bms-to-inverter</groupId>
<artifactId>inverter-growatt-hv-can</artifactId>
<version>${project.version}</version>
</dependency>

<!-- #################### GROWATT (MODBUS) ################### -->
<dependency>
<groupId>com.ai-republic.bms-to-inverter</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ com.airepublic.bmstoinverter.inverter.deye.can.DeyeInverterCANDescriptor
com.airepublic.bmstoinverter.inverter.huawei.modbus.HuaweiInverterModbusDescriptor
com.airepublic.bmstoinverter.inverter.goodwe.can.GoodweInverterCANDescriptor
com.airepublic.bmstoinverter.inverter.growatt.can.GrowattInverterCANDescriptor
com.airepublic.bmstoinverter.inverter.growatthv.can.GrowattHVInverterCANProcessor
com.airepublic.bmstoinverter.inverter.growatt.modbus.GrowattInverterModbusDescriptor
com.airepublic.bmstoinverter.inverter.pylon.can.PylonInverterCANDescriptor
com.airepublic.bmstoinverter.inverter.pylonhv.can.PylonHVInverterCANDescriptor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,25 @@
*/
public class BatteryPack {
public final Map<Alarm, AlarmLevel> alarms = new HashMap<>();
// data from 0x53
/** Battery type: 0=lithium iron, 1=ternary lithium, 2=lithium titanate */
public int type;
// data from 0x50
/** Capacity of each cell (1mAh) */
public int ratedCapacitymAh;
/** Nominal cell voltage (1mV) */
public int ratedCellmV;

// data from 0x5A
/** Maximum total voltage (0.1V) */
public int maxPackVoltageLimit;
/** Minimum total voltage (0.1V) */
public int minPackVoltageLimit;

// data from 0x5B
/** Maximum total charge current (0.1A) */
public int maxPackChargeCurrent;
/** Maximum total discharge current (-0.1A) */
public int maxPackDischargeCurrent;
/** Maximum total charge voltage (0.1V) */
public int maxChargeVoltage;

// data from 0x90
/** Total pack voltage (0.1 V) */
public int packVoltage;
/** Current in (+) or out (-) of pack (0.1 A) */
Expand Down Expand Up @@ -193,6 +190,12 @@ public final void setAlarm(final Alarm alarm, final AlarmLevel level) {
* @return the {@link AlarmLevel} or null if not present
*/
public AlarmLevel getAlarmLevel(final Alarm alarm) {
return alarms.get(alarm);
final AlarmLevel level = alarms.get(alarm);

if (level == null) {
return AlarmLevel.NONE;
}

return level;
}
}
35 changes: 35 additions & 0 deletions inverter-growatt-hv-can/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ai-republic.bms-to-inverter</groupId>
<artifactId>bms-to-inverter-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>inverter-growatt-hv-can</artifactId>

<name>${project.artifactId}-${project.version}</name>
<description>Module for the Growatt high voltage inverter CAN support</description>

<properties>
<encoding>UTF-8</encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>com.ai-republic.bms-to-inverter</groupId>
<artifactId>core-api</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>com.ai-republic.bms-to-inverter</groupId>
<artifactId>protocol-can</artifactId>
<version>${project.version}</version>
</dependency>

</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This software is free to use and to distribute in its unchanged form for private use.
* Commercial use is prohibited without an explicit license agreement of the copyright holder.
* Any changes to this software must be made solely in the project repository at https://github.com/ai-republic/bms-to-inverter.
* The copyright holder is not liable for any damages in whatever form that may occur by using this software.
*
* (c) Copyright 2022 and onwards - Torsten Oltmanns
*
* @author Torsten Oltmanns - bms-to-inverter''AT''gmail.com
*/
package com.airepublic.bmstoinverter.inverter.growatthv.can;

import com.airepublic.bmstoinverter.core.Inverter;
import com.airepublic.bmstoinverter.core.InverterConfig;
import com.airepublic.bmstoinverter.core.InverterDescriptor;
import com.airepublic.bmstoinverter.core.Port;
import com.airepublic.bmstoinverter.protocol.can.JavaCANPort;

/**
* The {@link InverterDescriptor} for the Growatt HV {@link Inverter} using the CAN protocol.
*/
public class GrowattHVInverterCANDescriptor implements InverterDescriptor {
@Override
public String getName() {
return "GROWATT_HV_CAN";
}


@Override
public int getDefaultBaudRate() {
return 500000;
}


@Override
public Class<? extends Inverter> getInverterClass() {
return GrowattHVInverterCANProcessor.class;
}


@Override
public Port createPort(final InverterConfig config) {
final Port port = new JavaCANPort(config.getPortLocator(), config.getBaudRate());
return port;
}

}
Loading

0 comments on commit e41ef56

Please sign in to comment.