Skip to content

Commit

Permalink
Merge branch 'release/2018.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
sfeilmeier committed Mar 1, 2018
2 parents c1ec101 + 0f94742 commit f6b0c0e
Show file tree
Hide file tree
Showing 24 changed files with 946 additions and 56 deletions.
2 changes: 1 addition & 1 deletion backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<url>http://openems.io</url>
<groupId>io.openems</groupId>
<artifactId>edge</artifactId>
<version>2018.1.1</version>
<version>2018.2.0</version>
<packaging>jar</packaging>
<scm>
<url>https://github.com/OpenEMS/openems</url>
Expand Down
2 changes: 1 addition & 1 deletion common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<url>http://openems.io</url>
<groupId>io.openems</groupId>
<artifactId>common</artifactId>
<version>2018.1.1</version>
<version>2018.2.0</version>
<packaging>jar</packaging>
<scm>
<url>https://github.com/OpenEMS/openems</url>
Expand Down
2 changes: 1 addition & 1 deletion edge/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<url>http://openems.io</url>
<groupId>io.openems</groupId>
<artifactId>edge</artifactId>
<version>2018.1.1</version>
<version>2018.2.0</version>
<packaging>jar</packaging>
<scm>
<url>https://github.com/OpenEMS/openems</url>
Expand Down
1 change: 1 addition & 0 deletions edge/src/io/openems/api/device/nature/ess/EssNature.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public interface EssNature extends DeviceNature {
/*
* Read Channels
*/
@ChannelInfo(type = Long.class)
public ReadChannel<Long> gridMode();

@ChannelInfo(type = Long.class)
Expand Down
4 changes: 2 additions & 2 deletions edge/src/io/openems/impl/controller/debuglog/Ess.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,11 @@ public Ess(EssNature ess) {
List<ThingStateChannel> faultChannels = ess.getStateChannel().getFaultChannels().stream().filter(c -> c.isValuePresent() && c.getValue()).collect(Collectors.toList());
if(warningChannels.size() > 0) {
b.append("|Warn:");
b.append(warningChannels.stream().map(c -> c.name()).collect(Collectors.joining()));
b.append(warningChannels.stream().map(c -> c.name()).collect(Collectors.joining(",")));
}
if(faultChannels.size() > 0) {
b.append("|Fault:");
b.append(faultChannels.stream().map(c -> c.name()).collect(Collectors.joining()));
b.append(faultChannels.stream().map(c -> c.name()).collect(Collectors.joining(",")));
}
b.append("]");
return b.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import io.openems.api.doc.ChannelInfo;
import io.openems.api.doc.ThingInfo;
import io.openems.api.exception.OpenemsException;
import io.openems.impl.device.mini.FeneconMiniEss;
import io.openems.impl.protocol.modbus.ModbusDevice;

@ThingInfo(title = "FENECON Mini")
Expand Down
142 changes: 138 additions & 4 deletions edge/src/io/openems/impl/device/pro/FaultEss.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,144 @@
import io.openems.api.channel.thingstate.FaultEnum;

public enum FaultEss implements FaultEnum {
ControlCurrentOverload100PercentL1(0), ControlCurrentOverload110PercentL1(1), ControlCurrentOverload150PercentL1(2), ControlCurrentOverload200PercentL1(3), ControlCurrentOverload120PercentL1(4), ControlCurrentOverload300PercentL1(5), ControlTransientLoad300PercentL1(6), GridOverCurrentL1(7), LockingWaveformTooManyTimesL1(8), InverterVoltageZeroDriftErrorL1(9), GridVoltageZeroDriftErrorL1(10), ControlCurrentZeroDriftErrorL1(11), InverterCurrentZeroDriftErrorL1(12), GridCurrentZeroDriftErrorL1(13), PDPProtectionL1(14), HardwareControlCurrentProtectionL1(15), HardwareACVoltageProtectionL1(16), HardwareDCCurrentProtectionL1(17), HardwareTemperatureProtectionL1(18), NoCapturingSignalL1(19), DCOvervoltageL1(20), DCDisconnectedL1(21), InverterUndervoltageL1(22), InverterOvervoltageL1(23), CurrentSensorFailL1(24), VoltageSensorFailL1(25), PowerUncontrollableL1(26), CurrentUncontrollableL1(27), FanErrorL1(28), PhaseLackL1(29), InverterRelayFaultL1(30), GridRealyFaultL1(31), ControlPanelOvertempL1(32), PowerPanelOvertempL1(33), DCInputOvercurrentL1(34), CapacitorOvertempL1(35), RadiatorOvertempL1(36), TransformerOvertempL1(37), CombinationCommErrorL1(38), EEPROMErrorL1(39), LoadCurrentZeroDriftErrorL1(40), CurrentLimitRErrorL1(41), PhaseSyncErrorL1(42), ExternalPVCurrentZeroDriftErrorL1(43), ExternalGridCurrentZeroDriftErrorL1(44),
ControlCurrentOverload100PercentL2(45), ControlCurrentOverload110PercentL2(46), ControlCurrentOverload150PercentL2(47), ControlCurrentOverload200PercentL2(48), ControlCurrentOverload120PercentL2(49), ControlCurrentOverload300PercentL2(50), ControlTransientLoad300PercentL2(51), GridOverCurrentL2(52), LockingWaveformTooManyTimesL2(53), InverterVoltageZeroDriftErrorL2(54), GridVoltageZeroDriftErrorL2(55), ControlCurrentZeroDriftErrorL2(56), InverterCurrentZeroDriftErrorL2(57), GridCurrentZeroDriftErrorL2(58), PDPProtectionL2(59), HardwareControlCurrentProtectionL2(60), HardwareACVoltageProtectionL2(61), HardwareDCCurrentProtectionL2(62), HardwareTemperatureProtectionL2(63), NoCapturingSignalL2(64), DCOvervoltageL2(65), DCDisconnectedL2(66), InverterUndervoltageL2(67), InverterOvervoltageL2(68), CurrentSensorFailL2(69), VoltageSensorFailL2(70), PowerUncontrollableL2(71), CurrentUncontrollableL2(72), FanErrorL2(73), PhaseLackL2(74), InverterRelayFaultL2(75), GridRealyFaultL2(76), ControlPanelOvertempL2(77), PowerPanelOvertempL2(78), DCInputOvercurrentL2(79), CapacitorOvertempL2(80), RadiatorOvertempL2(81), TransformerOvertempL2(82), CombinationCommErrorL2(83), EEPROMErrorL2(84), LoadCurrentZeroDriftErrorL2(85), CurrentLimitRErrorL2(86), PhaseSyncErrorL2(87), ExternalPVCurrentZeroDriftErrorL2(88), ExternalGridCurrentZeroDriftErrorL2(89),
ControlCurrentOverload100PercentL3(90), ControlCurrentOverload110PercentL3(91), ControlCurrentOverload150PercentL3(92), ControlCurrentOverload200PercentL3(93), ControlCurrentOverload120PercentL3(94), ControlCurrentOverload300PercentL3(95), ControlTransientLoad300PercentL3(96), GridOverCurrentL3(97), LockingWaveformTooManyTimesL3(98), InverterVoltageZeroDriftErrorL3(99), GridVoltageZeroDriftErrorL3(100), ControlCurrentZeroDriftErrorL3(101), InverterCurrentZeroDriftErrorL3(102), GridCurrentZeroDriftErrorL3(103), PDPProtectionL3(104), HardwareControlCurrentProtectionL3(105), HardwareACVoltageProtectionL3(106), HardwareDCCurrentProtectionL3(107), HardwareTemperatureProtectionL3(108), NoCapturingSignalL3(109), DCOvervoltageL3(110), DCDisconnectedL3(111), InverterUndervoltageL3(112), InverterOvervoltageL3(113), CurrentSensorFailL3(114), VoltageSensorFailL3(115), PowerUncontrollableL3(116), CurrentUncontrollableL3(117), FanErrorL3(118), PhaseLackL3(119), InverterRelayFaultL3(120), GridRealyFaultL3(121), ControlPanelOvertempL3(122), PowerPanelOvertempL3(123), DCInputOvercurrentL3(124), CapacitorOvertempL3(125), RadiatorOvertempL3(126), TransformerOvertempL3(127), CombinationCommErrorL3(128), EEPROMErrorL3(129), LoadCurrentZeroDriftErrorL3(130), CurrentLimitRErrorL3(131), PhaseSyncErrorL3(132), ExternalPVCurrentZeroDriftErrorL3(133), ExternalGridCurrentZeroDriftErrorL3(134),
SystemFault(135), BatteryFault(136), PCSFault(137);
ControlCurrentOverload100PercentL1(0), //
ControlCurrentOverload110PercentL1(1), //
ControlCurrentOverload150PercentL1(2), //
ControlCurrentOverload200PercentL1(3), //
ControlCurrentOverload120PercentL1(4), //
ControlCurrentOverload300PercentL1(5), //
ControlTransientLoad300PercentL1(6), //
GridOverCurrentL1(7), //
LockingWaveformTooManyTimesL1(8), //
InverterVoltageZeroDriftErrorL1(9), //
GridVoltageZeroDriftErrorL1(10), //
ControlCurrentZeroDriftErrorL1(11), //
InverterCurrentZeroDriftErrorL1(12), //
GridCurrentZeroDriftErrorL1(13), //
PDPProtectionL1(14), //
HardwareControlCurrentProtectionL1(15), //
HardwareACVoltageProtectionL1(16), //
HardwareDCCurrentProtectionL1(17), //
HardwareTemperatureProtectionL1(18), //
NoCapturingSignalL1(19), //
DCOvervoltageL1(20), //
DCDisconnectedL1(21), //
InverterUndervoltageL1(22), //
InverterOvervoltageL1(23), //
CurrentSensorFailL1(24), //
VoltageSensorFailL1(25), //
PowerUncontrollableL1(26), //
CurrentUncontrollableL1(27), //
FanErrorL1(28), //
PhaseLackL1(29), //
InverterRelayFaultL1(30), //
GridRealyFaultL1(31), //
ControlPanelOvertempL1(32), //
PowerPanelOvertempL1(33), //
DCInputOvercurrentL1(34), //
CapacitorOvertempL1(35), //
RadiatorOvertempL1(36), //
TransformerOvertempL1(37), //
CombinationCommErrorL1(38), //
EEPROMErrorL1(39), //
LoadCurrentZeroDriftErrorL1(40), //
CurrentLimitRErrorL1(41), //
PhaseSyncErrorL1(42), //
ExternalPVCurrentZeroDriftErrorL1(43), //
ExternalGridCurrentZeroDriftErrorL1(44), //
ControlCurrentOverload100PercentL2(45), //
ControlCurrentOverload110PercentL2(46), //
ControlCurrentOverload150PercentL2(47), //
ControlCurrentOverload200PercentL2(48), //
ControlCurrentOverload120PercentL2(49), //
ControlCurrentOverload300PercentL2(50), //
ControlTransientLoad300PercentL2(51), //
GridOverCurrentL2(52), //
LockingWaveformTooManyTimesL2(53), //
InverterVoltageZeroDriftErrorL2(54), //
GridVoltageZeroDriftErrorL2(55), //
ControlCurrentZeroDriftErrorL2(56), //
InverterCurrentZeroDriftErrorL2(57), //
GridCurrentZeroDriftErrorL2(58), //
PDPProtectionL2(59), //
HardwareControlCurrentProtectionL2(60), //
HardwareACVoltageProtectionL2(61), //
HardwareDCCurrentProtectionL2(62), //
HardwareTemperatureProtectionL2(63), //
NoCapturingSignalL2(64), //
DCOvervoltageL2(65), //
DCDisconnectedL2(66), //
InverterUndervoltageL2(67), //
InverterOvervoltageL2(68), //
CurrentSensorFailL2(69), //
VoltageSensorFailL2(70), //
PowerUncontrollableL2(71), //
CurrentUncontrollableL2(72), //
FanErrorL2(73), //
PhaseLackL2(74), //
InverterRelayFaultL2(75), //
GridRealyFaultL2(76), //
ControlPanelOvertempL2(77), //
PowerPanelOvertempL2(78), //
DCInputOvercurrentL2(79), //
CapacitorOvertempL2(80), //
RadiatorOvertempL2(81), //
TransformerOvertempL2(82), //
CombinationCommErrorL2(83), //
EEPROMErrorL2(84), //
LoadCurrentZeroDriftErrorL2(85), //
CurrentLimitRErrorL2(86), //
PhaseSyncErrorL2(87), //
ExternalPVCurrentZeroDriftErrorL2(88), //
ExternalGridCurrentZeroDriftErrorL2(89), //
ControlCurrentOverload100PercentL3(90), //
ControlCurrentOverload110PercentL3(91), //
ControlCurrentOverload150PercentL3(92), //
ControlCurrentOverload200PercentL3(93), //
ControlCurrentOverload120PercentL3(94), //
ControlCurrentOverload300PercentL3(95), //
ControlTransientLoad300PercentL3(96), //
GridOverCurrentL3(97), //
LockingWaveformTooManyTimesL3(98), //
InverterVoltageZeroDriftErrorL3(99), //
GridVoltageZeroDriftErrorL3(100), //
ControlCurrentZeroDriftErrorL3(101), //
InverterCurrentZeroDriftErrorL3(102), //
GridCurrentZeroDriftErrorL3(103), //
PDPProtectionL3(104), //
HardwareControlCurrentProtectionL3(105), //
HardwareACVoltageProtectionL3(106), //
HardwareDCCurrentProtectionL3(107), //
HardwareTemperatureProtectionL3(108), //
NoCapturingSignalL3(109), //
DCOvervoltageL3(110), //
DCDisconnectedL3(111), //
InverterUndervoltageL3(112), //
InverterOvervoltageL3(113), //
CurrentSensorFailL3(114), //
VoltageSensorFailL3(115), //
PowerUncontrollableL3(116), //
CurrentUncontrollableL3(117), //
FanErrorL3(118), //
PhaseLackL3(119), //
InverterRelayFaultL3(120), //
GridRealyFaultL3(121), //
ControlPanelOvertempL3(122), //
PowerPanelOvertempL3(123), //
DCInputOvercurrentL3(124), //
CapacitorOvertempL3(125), //
RadiatorOvertempL3(126), //
TransformerOvertempL3(127), //
CombinationCommErrorL3(128), //
EEPROMErrorL3(129), //
LoadCurrentZeroDriftErrorL3(130), //
CurrentLimitRErrorL3(131), //
PhaseSyncErrorL3(132), //
ExternalPVCurrentZeroDriftErrorL3(133), //
ExternalGridCurrentZeroDriftErrorL3(134), //
SystemFault(135), //
BatteryFault(136), //
PCSFault(137);

private final int value;

Expand Down
56 changes: 56 additions & 0 deletions edge/src/io/openems/impl/device/pro/FeneconProEss.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import io.openems.api.device.nature.ess.AsymmetricEssNature;
import io.openems.api.device.nature.ess.EssNature;
import io.openems.api.device.nature.realtimeclock.RealTimeClockNature;
import io.openems.api.doc.ChannelInfo;
import io.openems.api.doc.ThingInfo;
import io.openems.api.exception.ConfigException;
import io.openems.api.exception.InvalidValueException;
Expand Down Expand Up @@ -242,60 +243,115 @@ public WriteChannel<Long> rtcSecond() {
/*
* This Channels
*/
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel phaseAllowedApparent;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel frequencyL3;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel frequencyL2;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel frequencyL1;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel currentL1;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel currentL2;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel currentL3;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel voltageL1;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel voltageL2;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel voltageL3;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel pcsOperationState;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryPower;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryCurrent;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltage;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection1;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection2;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection3;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection4;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection5;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection6;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection7;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection8;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection9;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection10;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection11;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection12;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection13;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection14;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection15;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryVoltageSection16;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection1;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection2;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection3;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection4;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection5;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection6;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection7;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection8;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection9;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection10;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection11;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection12;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection13;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection14;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection15;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryTemperatureSection16;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel batteryGroupState;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel totalBatteryDischargeEnergy;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel totalBatteryChargeEnergy;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel workMode;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel controlMode;
@ChannelInfo(type = Long.class)
public ModbusWriteLongChannel setPcsMode;
@ChannelInfo(type = Long.class)
public ModbusWriteLongChannel setSetupMode;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel setupMode;
@ChannelInfo(type = Long.class)
public ModbusReadLongChannel pcsMode;

/*
Expand Down
45 changes: 41 additions & 4 deletions edge/src/io/openems/impl/device/pro/WarningEss.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,48 @@
import io.openems.api.channel.thingstate.WarningEnum;

public enum WarningEss implements WarningEnum {
FailTheSystemShouldBeStopped(0), CommonLowVoltageAlarm(1), CommonHighVoltageAlarm(2), ChargingOverCurrentAlarm(
3), DischargingOverCurrentAlarm(4), OverTemperatureAlarm(5), InteralCommunicationAbnormal(6), GridUndervoltageL1(7), GridOvervoltageL1(8), GridUnderFrequencyL1(9), GridOverFrequencyL1(10), GridPowerSupplyOffL1(11), GridConditionUnmeetL1(12), DCUnderVoltageL1(13), InputOverResistanceL1(14), CombinationErrorL1(15), CommWithInverterErrorL1(16), TmeErrorL1(17),
GridUndervoltageL2(18), GridOvervoltageL2(19), GridUnderFrequencyL2(20), GridOverFrequencyL2(21), GridPowerSupplyOffL2(22), GridConditionUnmeetL2(23), DCUnderVoltageL2(24), InputOverResistanceL2(25), CombinationErrorL2(26), CommWithInverterErrorL2(27), TmeErrorL2(28),
GridUndervoltageL3(29), GridOvervoltageL3(30), GridUnderFrequencyL3(31), GridOverFrequencyL3(32), GridPowerSupplyOffL3(33), GridConditionUnmeetL3(34), DCUnderVoltageL3(35), InputOverResistanceL3(36), CombinationErrorL3(37), CommWithInverterErrorL3(38), TmeErrorL3(39),
FailTheSystemShouldBeStopped(0), //
CommonLowVoltageAlarm(1), //
CommonHighVoltageAlarm(2), //
ChargingOverCurrentAlarm(3), //
DischargingOverCurrentAlarm(4), //
OverTemperatureAlarm(5), //
InteralCommunicationAbnormal(6), //
GridUndervoltageL1(7), //
GridOvervoltageL1(8), //
GridUnderFrequencyL1(9), //
GridOverFrequencyL1(10), //
GridPowerSupplyOffL1(11), //
GridConditionUnmeetL1(12), //
DCUnderVoltageL1(13), //
InputOverResistanceL1(14), //
CombinationErrorL1(15), //
CommWithInverterErrorL1(16), //
TmeErrorL1(17), //
GridUndervoltageL2(18), //
GridOvervoltageL2(19), //
GridUnderFrequencyL2(20), //
GridOverFrequencyL2(21), //
GridPowerSupplyOffL2(22), //
GridConditionUnmeetL2(23), //
DCUnderVoltageL2(24), //
InputOverResistanceL2(25), //
CombinationErrorL2(26), //
CommWithInverterErrorL2(27), //
TmeErrorL2(28), //
GridUndervoltageL3(29), //
GridOvervoltageL3(30), //
GridUnderFrequencyL3(31), //
GridOverFrequencyL3(32), //
GridPowerSupplyOffL3(33), //
GridConditionUnmeetL3(34), //
DCUnderVoltageL3(35), //
InputOverResistanceL3(36), //
CombinationErrorL3(37), //
CommWithInverterErrorL3(38), //
TmeErrorL3(39), //
OFFGrid(40);

public final int value;

private WarningEss(int value) {
Expand Down
4 changes: 3 additions & 1 deletion edge/src/io/openems/impl/device/pro/WarningPvMeter.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import io.openems.api.channel.thingstate.WarningEnum;

public enum WarningPvMeter implements WarningEnum {
NegativePowerL1(0),NegativePowerL2(1),NegativePowerL3(2);
NegativePowerL1(0), //
NegativePowerL2(1), //
NegativePowerL3(2);

public final int value;

Expand Down
Loading

0 comments on commit f6b0c0e

Please sign in to comment.