Class GoodWeBatteryInverterImpl
java.lang.Object
io.openems.edge.common.component.AbstractOpenemsComponent
io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent
io.openems.edge.goodwe.common.AbstractGoodWe
io.openems.edge.goodwe.batteryinverter.GoodWeBatteryInverterImpl
- All Implemented Interfaces:
HybridManagedSymmetricBatteryInverter
,ManagedSymmetricBatteryInverter
,SymmetricBatteryInverter
,ModbusComponent
,OpenemsComponent
,StartStoppable
,GoodWeBatteryInverter
,GoodWe
,TimedataProvider
,org.osgi.service.event.EventHandler
public class GoodWeBatteryInverterImpl
extends AbstractGoodWe
implements GoodWeBatteryInverter, GoodWe, HybridManagedSymmetricBatteryInverter, ManagedSymmetricBatteryInverter, SymmetricBatteryInverter, ModbusComponent, OpenemsComponent, org.osgi.service.event.EventHandler
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static final record
Nested classes/interfaces inherited from class io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent
AbstractOpenemsModbusComponent.BitConverter, AbstractOpenemsModbusComponent.ChannelMapper<ELEMENT extends ModbusElement>
Nested classes/interfaces inherited from interface io.openems.edge.goodwe.common.GoodWe
GoodWe.ChannelId
Nested classes/interfaces inherited from interface io.openems.edge.goodwe.batteryinverter.GoodWeBatteryInverter
GoodWeBatteryInverter.ChannelId
Nested classes/interfaces inherited from interface io.openems.edge.batteryinverter.api.HybridManagedSymmetricBatteryInverter
HybridManagedSymmetricBatteryInverter.ChannelId
Nested classes/interfaces inherited from interface io.openems.edge.batteryinverter.api.ManagedSymmetricBatteryInverter
ManagedSymmetricBatteryInverter.ChannelId
Nested classes/interfaces inherited from interface io.openems.edge.bridge.modbus.api.ModbusComponent
ModbusComponent.ChannelId
Nested classes/interfaces inherited from interface io.openems.edge.common.component.OpenemsComponent
OpenemsComponent.ChannelId
Nested classes/interfaces inherited from interface io.openems.edge.batteryinverter.api.SymmetricBatteryInverter
SymmetricBatteryInverter.ChannelId
-
Field Summary
Fields inherited from class io.openems.edge.goodwe.common.AbstractGoodWe
chargers
Fields inherited from interface io.openems.edge.batteryinverter.api.SymmetricBatteryInverter
POWER_DOC_TEXT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected static Integer
calculateSurplusPower
(GoodWeBatteryInverterImpl.BatteryData battery, Integer productionPower, int maxDcCurrent) protected void
Handles @Deactivate of implementations.debugLog()
Gets some output that is suitable for a continuous Debug log.Gets the DC-PV Power, i.e.int
Gets the smallest positive power that can be set (in W, VA or var).Gets static Constraints for this Battery-Inverter.Gets Surplus Power.Gets theTimedata
service.void
handleEvent
(org.osgi.service.event.Event event) boolean
Gets a boolean if the battery inverter is managed or not.boolean
Gets a boolean if the battery inverter is able to build a micro-grid in off-grid.protected static int
preprocessAmpereValue47900
(Value<Integer> v, int maxDcCurrent) void
Run the Battery-Inverter.protected void
setModbus
(BridgeModbus modbus) Set the Modbus bridge.void
setStartStop
(StartStop value) Starts or stops the device or service represented by this OpenEMS Component.Methods inherited from class io.openems.edge.goodwe.common.AbstractGoodWe
addCharger, calculateMaxAcPower, calculatePvProduction, defineModbusProtocol, detectDiagStatesH, getGoodWeTypeFromSerialNr, getGoodWeTypeFromStringValue, getSocModbusElement, removeCharger, updatePowerAndEnergyChannels
Methods inherited from class io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent
activate, activate, activate, getBridgeModbus, getModbusProtocol, getUnitId, m, m, m, m, m, m, modified, modified, retryModbusCommunication, unsetModbus
Methods inherited from class io.openems.edge.common.component.AbstractOpenemsComponent
_channel, addChannel, addChannels, addChannels, alias, channels, getComponentContext, id, isEnabled, logDebug, logError, logInfo, logWarn, removeChannel
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.openems.edge.goodwe.common.GoodWe
_setBmsChargeMaxCurrent, _setBmsChargeMaxVoltage, _setBmsDischargeMaxCurrent, _setBmsDischargeMinVoltage, _setGoodweType, _setImpossibleFeneconHomeCombination, _setMaxAcExport, _setMaxAcImport, addCharger, getBatteryProtocolArm, getBatteryProtocolArmChannel, getBmsChargeMaxCurrent, getBmsChargeMaxCurrentChannel, getBmsChargeMaxVoltage, getBmsChargeMaxVoltageChannel, getBmsDischargeMaxCurrent, getBmsDischargeMaxCurrentChannel, getBmsDischargeMinVoltage, getBmsDischargeMinVoltageChannel, getGoodweType, getGoodweTypeChannel, getImpossibleFeneconHomeCombinationChannel, getMaxAcExport, getMaxAcExportChannel, getMaxAcImport, getMaxAcImportChannel, getSocStartToForceCharge, getSocStartToForceChargeChannel, getSocStopToForceCharge, getSocStopToForceChargeChannel, getWbmsChargeMaxCurrent, getWbmsChargeMaxCurrentChannel, getWbmsDischargeMaxCurrent, getWbmsDischargeMaxCurrentChannel, getWbmsVoltage, getWbmsVoltageChannel, removeCharger, setBmsChargeMaxCurrent, setBmsChargeMaxVoltage, setBmsDischargeMaxCurrent, setBmsDischargeMinVoltage
Methods inherited from interface io.openems.edge.batteryinverter.api.HybridManagedSymmetricBatteryInverter
_setDcChargeEnergy, _setDcChargeEnergy, _setDcDischargeEnergy, _setDcDischargeEnergy, _setDcDischargePower, getDcChargeEnergy, getDcChargeEnergyChannel, getDcDischargeEnergy, getDcDischargeEnergyChannel, getDcDischargePower, getDcDischargePowerChannel
Methods inherited from interface io.openems.edge.bridge.modbus.api.ModbusComponent
_setModbusCommunicationFailed, getModbusCommunicationFailed, getModbusCommunicationFailedChannel, retryModbusCommunication
Methods inherited from interface io.openems.edge.common.component.OpenemsComponent
_channel, _getChannelAs, alias, channel, channel, channels, getComponentContext, getState, getStateChannel, hasFaults, id, isEnabled, serviceFactoryPid, servicePid
Methods inherited from interface io.openems.edge.common.startstop.StartStoppable
_setStartStop, getStartStop, getStartStopChannel, isStarted, isStopped, start, stop
Methods inherited from interface io.openems.edge.batteryinverter.api.SymmetricBatteryInverter
_setActiveChargeEnergy, _setActiveChargeEnergy, _setActiveDischargeEnergy, _setActiveDischargeEnergy, _setActivePower, _setActivePower, _setGridMode, _setMaxApparentPower, _setMaxApparentPower, _setReactivePower, _setReactivePower, getActiveChargeEnergy, getActiveChargeEnergyChannel, getActiveDischargeEnergy, getActiveDischargeEnergyChannel, getActivePower, getActivePowerChannel, getGridMode, getGridModeChannel, getMaxApparentPower, getMaxApparentPowerChannel, getReactivePower, getReactivePowerChannel
-
Constructor Details
-
GoodWeBatteryInverterImpl
-
-
Method Details
-
setModbus
Description copied from class:AbstractOpenemsModbusComponent
Set the Modbus bridge. Should be called by @Reference- Overrides:
setModbus
in classAbstractOpenemsModbusComponent
- Parameters:
modbus
- the BridgeModbus Reference
-
deactivate
protected void deactivate()Description copied from class:AbstractOpenemsComponent
Handles @Deactivate of implementations. Prints log output.- Overrides:
deactivate
in classAbstractOpenemsModbusComponent
-
handleEvent
public void handleEvent(org.osgi.service.event.Event event) - Specified by:
handleEvent
in interfaceorg.osgi.service.event.EventHandler
- Overrides:
handleEvent
in classAbstractGoodWe
-
preprocessAmpereValue47900
-
getPowerPrecision
public int getPowerPrecision()Description copied from interface:ManagedSymmetricBatteryInverter
Gets the smallest positive power that can be set (in W, VA or var). Example:- FENECON Commercial 40 allows setting of power in 100 W steps. It should return 100.
- KACO blueplanet gridsave 50 allows setting of power in 0.1 % of 52 VA. It should return 52 (= 52000 * 0.001)
- Specified by:
getPowerPrecision
in interfaceManagedSymmetricBatteryInverter
- Returns:
- the power precision
-
getTimedata
Description copied from interface:TimedataProvider
Gets theTimedata
service.- Specified by:
getTimedata
in interfaceTimedataProvider
- Returns:
- the service or null if it is not (yet) available.
-
getDcPvPower
Description copied from interface:HybridManagedSymmetricBatteryInverter
Gets the DC-PV Power, i.e. the sum of theEssDcCharger
s of thisHybridManagedSymmetricBatteryInverter
.- Specified by:
getDcPvPower
in interfaceHybridManagedSymmetricBatteryInverter
- Returns:
- the DC-PV power, or 'null' if there is no
EssDcCharger
-
getSurplusPower
Description copied from class:AbstractGoodWe
Gets Surplus Power.- Specified by:
getSurplusPower
in interfaceHybridManagedSymmetricBatteryInverter
- Specified by:
getSurplusPower
in classAbstractGoodWe
- Returns:
Integer
-
calculateSurplusPower
protected static Integer calculateSurplusPower(GoodWeBatteryInverterImpl.BatteryData battery, Integer productionPower, int maxDcCurrent) -
setStartStop
Description copied from interface:StartStoppable
Starts or stops the device or service represented by this OpenEMS Component.- Specified by:
setStartStop
in interfaceStartStoppable
- Parameters:
value
- targetStartStop
state- Throws:
OpenemsError.OpenemsNamedException
- on error
-
run
public void run(Battery battery, int setActivePower, int setReactivePower) throws OpenemsError.OpenemsNamedException Description copied from interface:ManagedSymmetricBatteryInverter
Run the Battery-Inverter.- bring the Battery-Inverter in the desired state
- apply information from
Battery
as required - set the target Active and Reactive Power.
This is called on ManagedSymmetricEss::applyPower()
- Specified by:
run
in interfaceManagedSymmetricBatteryInverter
- Parameters:
battery
- theBattery
setActivePower
- the active power setpointsetReactivePower
- the reactive power setpoint- Throws:
OpenemsError.OpenemsNamedException
- on error
-
getStaticConstraints
Description copied from interface:ManagedSymmetricBatteryInverter
Gets static Constraints for this Battery-Inverter. Override this method to provide specific Constraints for this Battery-Inverter on every Cycle.- Specified by:
getStaticConstraints
in interfaceManagedSymmetricBatteryInverter
- Returns:
- the Constraints
- Throws:
OpenemsError.OpenemsNamedException
-
debugLog
Description copied from interface:OpenemsComponent
Gets some output that is suitable for a continuous Debug log. Returns 'null' by default which causes no output.- Specified by:
debugLog
in interfaceOpenemsComponent
- Returns:
- the debug log output
-
isManaged
public boolean isManaged()Description copied from interface:ManagedSymmetricBatteryInverter
Gets a boolean if the battery inverter is managed or not.Returns false if the battery inverter itself is not managed or in a read only mode.
- Specified by:
isManaged
in interfaceManagedSymmetricBatteryInverter
- Returns:
- is managed or not
-
isOffGridPossible
public boolean isOffGridPossible()Description copied from interface:ManagedSymmetricBatteryInverter
Gets a boolean if the battery inverter is able to build a micro-grid in off-grid.Returns false if the battery inverter is not able to build a micro-grid.
- Specified by:
isOffGridPossible
in interfaceManagedSymmetricBatteryInverter
- Returns:
- is managed or not
-