Interface OpenemsComponent

All Known Subinterfaces:
AnalogOutput, AnalogVoltageOutput, AppManager, AsymmetricEss, Battery, BatteryFeneconCommercial, BatteryFeneconHome, BatteryInverterKacoBlueplanetGridsave, BatteryInverterRefuStore88k, BatteryInverterSinexcel, BatterySoltaroClusterVersionB, BatterySoltaroClusterVersionC, BatterySoltaroSingleRackVersionA, BatterySoltaroSingleRackVersionB, BatterySoltaroSingleRackVersionC, BmwBattery, BoschBpts5HybridCore, BoschBpts5HybridEss, BoschBpts5HybridMeter, BoschBpts5HybridPv, BridgeModbus, BridgeModbusSerial, BridgeModbusTcp, BridgeOnewire, BydBatteryBoxCommercialC130, ComponentManager, ComponentManagerProvider, Controller, ControllerApiBackend, ControllerApiModbusTcpReadOnly, ControllerApiModbusTcpReadWrite, ControllerApiMqtt, ControllerApiRestReadOnly, ControllerApiRestReadWrite, ControllerApiWebsocket, ControllerAsymmetricBalancingCosPhi, ControllerAsymmetricFixReactivePower, ControllerAsymmetricPeakShaving, ControllerAsymmetricPhaseRectification, ControllerChannelThreshold, ControllerChpSoc, ControllerDebugDetailedLog, ControllerDebugLog, ControllerEssAcIsland, ControllerEssActivePowerVoltageCharacteristic, ControllerEssBalancing, ControllerEssBalancingSchedule, ControllerEssCycle, ControllerEssDelayCharge, ControllerEssDelayedSellToGrid, ControllerEssEmergencyCapacityReserve, ControllerEssFixActivePower, ControllerEssFixReactivePower, ControllerEssGridOptimizedCharge, ControllerEssHybridSurplusFeedToGrid, ControllerEssLimitActivePower, ControllerEssLimitTotalDischarge, ControllerEssLinearPowerBand, ControllerEssMinimumDischargePower, ControllerEssPeakShaving, ControllerEssRandomPower, ControllerEssReactivePowerVoltageCharacteristic, ControllerEssSellToGridLimit, ControllerEssStandby, ControllerEssTimeslotPeakshaving, ControllerEvcsFixActivePower, ControllerGenericJsonLogic, ControllerHighLoadTimeslot, ControllerIoAlarm, ControllerIoAnalog, ControllerIoChannelSingleThreshold, ControllerIoFixDigitalOutput, ControllerIoHeatPumpSgReady, ControllerMrFundamentalFrequency, ControllerMrSetBalancing, ControllerPvInverterFixPowerLimit, ControllerPvInverterSellToGridLimit, Cycle, DigitalInput, DigitalOutput, Edge2Edge, Edge2EdgeEss, ElectricityMeter, EssCluster, EssDcCharger, EssFeneconBydContainer, EssFeneconBydContainerWatchdogController, EssFeneconCommercial40, EssFeneconCommercial40Pv, EssGenericManagedSymmetric, EssGenericOffGrid, EssPower, EssSmaSunnyIsland, Evcs, EvcsAlpitronicHypercharger, EvcsClusterPeakShaving, EvcsGoeChargerHome, EvcsKebaKeContact, EvcsOcppAbl, EvcsOcppIesKeywattSingle, EvcsSpelsbergSmart, EvcsWebastoNext, EvcsWebastoUnite, FeneconDessCharger, FeneconDessEss, FeneconDessGridMeter, FeneconDessPvMeter, FeneconMiniEss, FeneconMiniGridMeter, FeneconMiniPvMeter, FeneconProEss, FeneconProPvMeter, FixStateOfCharge, GenericManagedEss, GoodWe, GoodWeBatteryInverter, GoodWeCharger, GoodWeChargerTwoString, GoodWeEmergencyPowerMeter, GoodWeEss, GoodWeGridMeter, Host, HybridEss, HybridManagedSymmetricBatteryInverter, IoFilipowskiMrAo1, IoGpio, IoKmtronicRelay4Port, IoKmtronicRelay8Port, IoOffGridSwitch, IoRevolutionPiDigitalIo, IoShelly25, IoShelly3Em, IoShellyPlug, IoWago, IoWeidmuellerUr20, KacoBlueplanetHybrid10Charger, KacoBlueplanetHybrid10Core, KacoBlueplanetHybrid10Ess, KacoBlueplanetHybrid10GridMeter, KacoBlueplanetHybrid10PvInverter, KostalPikoCharger, KostalPikoEss, KostalPikoGridMeter, ManagedAsymmetricEss, ManagedEvcs, ManagedSinglePhaseEss, ManagedSymmetricBatteryInverter, ManagedSymmetricEss, ManagedSymmetricPvInverter, MeasuringEvcs, Meta, MetaEss, MetaEvcs, MeterAbbB23, MeterArtemesAM2, MeterBControlEM300, MeterBgeTechDrt428M2, MeterCamillebauerAplus, MeterCarloGavazziEm300, MeterDiscovergy, MeterGridcon, MeterJanitzaUmg511, MeterJanitzaUmg604, MeterJanitzaUmg96rme, MeterKdk2puct, MeterMicrocareSdm630, MeterPlexlogDatalogger, MeterPqplusUmd96, MeterPqplusUmd97, MeterSchneiderActi9Smartlink, MeterSiemensPac1600, MeterSiemensPac2200, MeterSmaShm20, MeterSocomecSinglephase, MeterSocomecThreephase, MeterVirtualAdd, MeterWeidmueller525, MeterZiehlEfr4001Ip, ModbusComponent, ModbusSlave, ModbusTcpApi, MrGridconOngrid, MrGridconOnOffgrid, OffGridBatteryInverter, OffGridEss, OffGridSwitch, OneWireThermometer, PhoenixContactMeter, Predictor, PredictorManager, PredictorPersistenceModel, PredictorSimilardayModel, PvInverterCluster, PvInverterFronius, PvInverterKacoBlueplanet, PvInverterKostal, PvInverterSmaSunnyTripower, PvInverterSolarlog, RestApi, Scheduler, SchedulerAllAlphabetically, SchedulerDaily, SchedulerFixedOrder, SimulatorApp, SimulatorBattery, SimulatorDatasourceCsvDirect, SimulatorDatasourceCsvPredefined, SimulatorDatasourceSingleDirect, SimulatorEssAsymmetricReacting, SimulatorEssSinglePhaseReacting, SimulatorEssSymmetricReacting, SimulatorEvcs, SimulatorGridMeterActing, SimulatorGridMeterReacting, SimulatorIoDigitalInputOutput, SimulatorModbus, SimulatorNrcMeterActing, SimulatorProductionMeterActing, SimulatorPvInverter, SimulatorThermometer, SimulatorTimedata, SinglePhaseEss, SinglePhaseMeter, SocEvcs, SocomecMeter, SolarEdgeGridMeter, SolarEdgePvInverter, SoltaroBatteryVersionC, SoltaroCluster, StartStoppable, Sum, SymmetricBatteryInverter, SymmetricEss, TeslaPowerwall2Battery, TeslaPowerwall2Core, Thermometer, Timedata, TimedataInfluxDb, TimedataProvider, TimedataRrd4j, TimeOfUseTariffAwattar, TimeOfUseTariffController, TimeOfUseTariffCorrently, TimeOfUseTariffTibber, TouEntsoe, VirtualMeter, VirtualSubtractMeter
All Known Implementing Classes:
AbstractCsvDatasource, AbstractDummyBattery, AbstractDummyElectricityMeter, AbstractDummyManagedSymmetricEss, AbstractDummyOpenemsComponent, AbstractDummySymmetricEss, AbstractEdge2Edge, AbstractEssFeneconCommercial40Pv, AbstractFeneconDessCharger, AbstractFixStateOfCharge, AbstractGenericManagedEss, AbstractGoodWe, AbstractGoodWeEtCharger, AbstractKmtronicRelay, AbstractManagedEvcsComponent, AbstractManagedOcppEvcsComponent, AbstractModbusBridge, AbstractModbusTcpApi, AbstractOpenemsComponent, AbstractOpenemsMbusComponent, AbstractOpenemsModbusComponent, AbstractOpenemsSunSpecComponent, AbstractPredictor, AbstractRestApi, AbstractSocomecMeter, AbstractSunSpecBatteryInverter, AbstractSunSpecMeter, AbstractSunSpecPvInverter, AppManagerImpl, BatteryFeneconCommercialImpl, BatteryFeneconHomeImpl, BatteryInverterKacoBlueplanetGridsaveImpl, BatteryInverterRefuStore88kImpl, BatteryInverterSinexcelImpl, BatterySoltaroClusterVersionBImpl, BatterySoltaroClusterVersionCImpl, BatterySoltaroSingleRackVersionAImpl, BatterySoltaroSingleRackVersionBImpl, BatterySoltaroSingleRackVersionCImpl, BmwBatteryImpl, BoschBpts5HybridCoreImpl, BoschBpts5HybridEssImpl, BoschBpts5HybridMeterImpl, BoschBpts5HybridPvImpl, BridgeMbusImpl, BridgeModbusSerialImpl, BridgeModbusTcpImpl, BridgeOnewireImpl, BydBatteryBoxCommercialC130Impl, ComponentManagerImpl, ControllerApiBackendImpl, ControllerApiModbusTcpReadOnlyImpl, ControllerApiModbusTcpReadWriteImpl, ControllerApiMqttImpl, ControllerApiRestReadOnlyImpl, ControllerApiRestReadWriteImpl, ControllerApiWebsocketImpl, ControllerAsymmetricBalancingCosPhiImpl, ControllerAsymmetricFixReactivePowerImpl, ControllerAsymmetricPeakShavingImpl, ControllerAsymmetricPhaseRectificationImpl, ControllerChannelThresholdImpl, ControllerChpSocImpl, ControllerDebugDetailedLogImpl, ControllerDebugLogImpl, ControllerEssAcIslandImpl, ControllerEssActivePowerVoltageCharacteristicImpl, ControllerEssBalancingImpl, ControllerEssBalancingScheduleImpl, ControllerEssCycleImpl, ControllerEssDelayChargeImpl, ControllerEssDelayedSellToGridImpl, ControllerEssEmergencyCapacityReserveImpl, ControllerEssFixActivePowerImpl, ControllerEssFixReactivePowerImpl, ControllerEssFixStateOfChargeImpl, ControllerEssGridOptimizedChargeImpl, ControllerEssHybridSurplusFeedToGridImpl, ControllerEssLimitActivePowerImpl, ControllerEssLimitTotalDischargeImpl, ControllerEssLinearPowerBandImpl, ControllerEssMinimumDischargePowerImpl, ControllerEssPeakShavingImpl, ControllerEssPrepareBatteryExtensionImpl, ControllerEssRandomPowerImpl, ControllerEssReactivePowerVoltageCharacteristicImpl, ControllerEssSellToGridLimitImpl, ControllerEssStandbyImpl, ControllerEssTimeslotPeakshavingImpl, ControllerEvcsFixActivePowerImpl, ControllerEvcsImpl, ControllerGenericJsonLogicImpl, ControllerHighLoadTimeslotImpl, ControllerIoAlarmImpl, ControllerIoAnalogImpl, ControllerIoChannelSingleThresholdImpl, ControllerIoFixDigitalOutputImpl, ControllerIoHeatingElementImpl, ControllerIoHeatPumpSgReadyImpl, ControllerMrFundamentalFrequencyImpl, ControllerMrSetBalancingImpl, ControllerPvInverterFixPowerLimitImpl, ControllerPvInverterSellToGridLimitImpl, CycleImpl, DummyAnalogVoltageOutput, DummyBattery, DummyComponentManager, DummyController, DummyCycle, DummyElectricityMeter, DummyHost, DummyHybridEss, DummyInputOutput, DummyManagedAsymmetricEss, DummyManagedEvcs, DummyManagedSymmetricBatteryInverter, DummyManagedSymmetricEss, DummyManagedSymmetricPvInverter, DummyMeta, DummyMetaEss, DummyModbusBridge, DummyOffGridBatteryInverter, DummyOffGridSwitch, DummyPredictor, DummyPredictorManager, DummySinglePhaseElectricityMeter, DummySum, DummySymmetricEss, DummyTimedata, Edge2EdgeEssImpl, EssAdstecStoraxeImpl, EssClusterImpl, EssFeneconBydContainerImpl, EssFeneconBydContainerWatchdogControllerImpl, EssFeneconCommercial40Impl, EssFeneconCommercial40Pv1Impl, EssFeneconCommercial40Pv2Impl, EssGenericManagedSymmetricImpl, EssGenericOffGridImpl, EssGridcon, EssPowerImpl, EssSmaSunnyIslandImpl, EvcsAlpitronicHyperchargerImpl, EvcsClusterPeakShavingImpl, EvcsDezonyImpl, EvcsGoeChargerHomeImpl, EvcsHardyBarthImpl, EvcsKebaKeContactImpl, EvcsOcppAblImpl, EvcsOcppIesKeywattSingleImpl, EvcsOcppServer, EvcsPowerComponent, EvcsSpelsbergSmartImpl, EvcsWebastoNextImpl, EvcsWebastoUniteImpl, FeneconDessCharger1, FeneconDessCharger2, FeneconDessEssImpl, FeneconDessGridMeterImpl, FeneconDessPvMeterImpl, FeneconMiniEssImpl, FeneconMiniGridMeterImpl, FeneconMiniPvMeterImpl, FeneconProEssImpl, FeneconProPvMeterImpl, GoodWeBatteryInverterImpl, GoodWeChargerPv1, GoodWeChargerPv2, GoodWeChargerTwoStringImpl, GoodWeEmergencyPowerMeterImpl, GoodWeEssImpl, GoodWeGridMeterImpl, GridconPcsImpl, HostImpl, IoFilipowskiMrAo1Impl, IoGpioImpl, IoKmtronicRelay4PortImpl, IoKmtronicRelay8PortImpl, IoOffGridSwitchImpl, IoRevolutionPiDigitalIoImpl, IoShelly25Impl, IoShelly3EmImpl, IoShellyPlugImpl, IoWagoImpl, IoWeidmuellerUr20Impl, KacoBlueplanetHybrid10ChargerImpl, KacoBlueplanetHybrid10CoreImpl, KacoBlueplanetHybrid10EssImpl, KacoBlueplanetHybrid10GridMeterImpl, KacoBlueplanetHybrid10PvInverterImpl, KostalPikoChargerImpl, KostalPikoCoreImpl, KostalPikoEssImpl, KostalPikoGridMeterImpl, MetaImpl, MeterAbbB23Impl, MeterArtemesAM2Impl, MeterBControlEM300Impl, MeterBgeTechDrt428M2Impl, MeterCamillebauerAplusImpl, MeterCarloGavazziEm300Impl, MeterDiscovergyImpl, MeterGridconImpl, MeterJanitzaUmg511Impl, MeterJanitzaUmg604Impl, MeterJanitzaUmg96rmeImpl, MeterKdk2puctImpl, MeterMicrocareSdm630Impl, MeterPlexlogDataloggerImpl, MeterPqplusUmd96Impl, MeterPqplusUmd97Impl, MeterSchneiderActi9SmartlinkImpl, MeterSiemensPac1600Impl, MeterSiemensPac2200Impl, MeterSmaShm20Impl, MeterSocomecSinglephaseImpl, MeterSocomecThreephaseImpl, MeterVirtualAddImpl, MeterWeidmueller525Impl, MeterZiehlEfr4001IpImpl, MrGridconOngridImpl, MrGridconOnOffgridImpl, OneWireThermometerImpl, PhoenixContactMeterImpl, PredictorManagerImpl, PredictorPersistenceModelImpl, PredictorSimilardayModelImpl, PvInverterClusterImpl, PvInverterFroniusImpl, PvInverterKacoBlueplanetImpl, PvInverterKostalImpl, PvInverterSmaSunnyTripowerImpl, PvInverterSolarlogImpl, SchedulerAllAlphabeticallyImpl, SchedulerDailyImpl, SchedulerFixedOrderImpl, SimulatorAppImpl, SimulatorBatteryImpl, SimulatorDatasourceCsvDirectImpl, SimulatorDatasourceCsvPredefinedImpl, SimulatorDatasourceSingleDirectImpl, SimulatorEssAsymmetricReactingImpl, SimulatorEssSinglePhaseReactingImpl, SimulatorEssSymmetricReactingImpl, SimulatorEvcsImpl, SimulatorGridMeterActingImpl, SimulatorGridMeterReactingImpl, SimulatorIoDigitalInputOutputImpl, SimulatorModbusImpl, SimulatorNrcMeterActingImpl, SimulatorProductionMeterActingImpl, SimulatorPvInverterImpl, SimulatorThermometerImpl, SimulatorTimedataImpl, SolarEdgeGridMeterImpl, SolarEdgePvInverterImpl, SumImpl, TeslaPowerwall2BatteryImpl, TeslaPowerwall2CoreImpl, TimedataInfluxDbImpl, TimedataRrd4jImpl, TimeOfUseTariffAwattarImpl, TimeOfUseTariffControllerImpl, TimeOfUseTariffCorrentlyImpl, TimeOfUseTariffTibberImpl, TouEntsoeImpl, VirtualSubtractMeterImpl

public interface OpenemsComponent
This is the base interface for and should be implemented by every service component in OpenEMS Edge.

Every OpenEMS service has:

The recommended implementation of an OpenEMS component is via AbstractOpenemsComponent.

  • Method Details

    • id

      String id()
      Returns a unique ID for this OpenEMS component.
      Returns:
      the unique ID
    • alias

      String alias()
      Returns a human-readable name of this Component..
      Returns:
      the human-readable name
    • isEnabled

      boolean isEnabled()
      Returns whether this component is enabled.
      Returns:
      true if the component is enabled
    • servicePid

      default String servicePid()
      Returns the Service PID.
      Returns:
      the OSGi Service PID
    • serviceFactoryPid

      default String serviceFactoryPid()
      Returns the Service Factory-PID.
      Returns:
      the OSGi Service Factory-PID
    • getComponentContext

      org.osgi.service.component.ComponentContext getComponentContext()
      Returns the ComponentContext.
      Returns:
      the OSGi ComponentContext
    • _channel

      @Deprecated Channel<?> _channel(String channelName)
      Deprecated.
      Returns an undefined Channel defined by its ChannelId string representation.

      Note: It is preferred to use the typed channel()-method, that's why it is marked as @Deprecated.

      Parameters:
      channelName - the Channel-ID as a string
      Returns:
      the Channel or null
    • channel

      default <T extends Channel<?>> T channel(String channelName) throws IllegalArgumentException
      Returns a Channel defined by its ChannelId string representation.
      Type Parameters:
      T - the expected typed Channel
      Parameters:
      channelName - the Channel-ID as a string
      Returns:
      the Channel or throw Exception
      Throws:
      IllegalArgumentException - on error
    • channel

      default <T extends Channel<?>> T channel(ChannelId channelId) throws IllegalArgumentException
      Returns a Channel defined by its ChannelId.
      Type Parameters:
      T - the Type of the Channel. See Doc.getType()
      Parameters:
      channelId - the Channel-ID
      Returns:
      the Channel
      Throws:
      IllegalArgumentException - on error
    • channels

      Collection<Channel<?>> channels()
      Returns all Channels.
      Returns:
      a Collection of Channels
    • getModbusSlaveNatureTable

      static ModbusSlaveNatureTable getModbusSlaveNatureTable(AccessMode accessMode)
      Used for Modbus/TCP Api Controller. Provides a Modbus table for the Channels of this Component.
      Parameters:
      accessMode - filters the Modbus-Records that should be shown
      Returns:
      the ModbusSlaveNatureTable
    • getStateChannel

      default StateCollectorChannel getStateChannel()
      Gets the Component State-Channel.
      Returns:
      the StateCollectorChannel
    • getState

      default Level getState()
      Gets the Component State Level.
      Returns:
      the StateCollectorChannel
    • _getChannelAs

      default <T extends Channel<?>> T _getChannelAs(OpenemsComponent.ChannelId channelId, Class<T> type)
      Gets the Channel as the given Type.
      Type Parameters:
      T - the expected Channel type
      Parameters:
      channelId - the Channel-ID
      type - the expected Type
      Returns:
      the Channel
    • debugLog

      default String debugLog()
      Gets some output that is suitable for a continuous Debug log. Returns 'null' by default which causes no output.
      Returns:
      the debug log output
    • hasFaults

      default boolean hasFaults()
      Does this OpenEMS Component report any Faults?

      Evaluates all StateChannels and returns true if any Channel with Level.FAULT is set.

      Returns:
      true if there is a Fault.
    • updateReferenceFilter

      static boolean updateReferenceFilter(org.osgi.service.cm.ConfigurationAdmin cm, String pid, String member, String... ids)
      Sets a target filter for a Declarative Service @Reference member.

      Usage:

       updateReferenceFilter(config.service_pid(), "Controllers", controllersIds);
       

      Generates a 'target' filter on the 'Controllers' member so, that the the expected service to be injected needs to fulfill:

      • the service must be enabled
      • the service must not have the same PID as the calling component
      • the service "id" must be one of the provided "controllersIds"
      Parameters:
      cm - a ConfigurationAdmin instance. Get one using
                     @Reference
                     ConfigurationAdmin cm;
                     
      pid - PID of the calling component (use 'config.service_pid()' or '(String)prop.get(Constants.SERVICE_PID)'; if null, PID filter is not added to the resulting target filter
      member - Name of the Method or Field with the Reference annotation
      ids - Component IDs to be filtered for; for empty list, no ids are added to the target filter
      Returns:
      true if the filter was updated. You may use it to abort the activate() method.
    • updateReferenceFilterRaw

      static boolean updateReferenceFilterRaw(org.osgi.service.cm.ConfigurationAdmin cm, String pid, String member, String filter)
      Sets a target filter for a Declarative Service @Reference member.

      Use this method only if you know what you are doing. Usually you will want to use the updateReferenceFilter(ConfigurationAdmin, String, String, String...) method instead.

      Usage:

       updateReferenceFilterRaw(config.service_pid(), "Controllers", "(enabled=true)");
       
      Parameters:
      cm - a ConfigurationAdmin instance. Get one using
                     @Reference
                     ConfigurationAdmin cm;
                     
      pid - PID of the calling component (use 'config.service_pid()' or '(String)prop.get(Constants.SERVICE_PID)'; if null, PID filter is not added to the resulting target filter
      member - Name of the Method or Field with the Reference annotation, e.g.
      filter - The filter attribute
      Returns:
      true if the filter was updated. You may use it to abort the activate() method.
    • validateSingleton

      static boolean validateSingleton(org.osgi.service.cm.ConfigurationAdmin cm, String pid, String expectedId)
      Validates and possibly fixes the Component-ID of a Singleton.

      Singleton Components are allowed to live only exactly once in an OpenEMS instance. These Components are marked with an Annotation:

       @Designate(factory = false)
       

      By design it is required for these Singleton Components to have a predefined Component-ID, like '_cycle', '_sum', etc. This method makes sure the Component-ID matches this predefined ID - and if not automatically adjusts it.

      Sidenote: ideally it would be possible to use the Component Annotation

       @Component(property = { "id=_cycle" })
       

      for this purpose. Unfortunately this is not sufficient to have the 'id' property listed in EdgeConfig, ConfigurationAdmin, etc. This is why this workaround is required.

      Usage:

       if (OpenemsComponent.validateSingletonComponentId(this.cm, this.serviceFactoryPid(), SINGLETON_COMPONENT_ID)) {
              return;
       }
       
      Parameters:
      cm - a ConfigurationAdmin instance. Get one using
                         @Reference
                         ConfigurationAdmin cm;
                         
      pid - PID of the calling component (use 'config.service_pid()' or '(String)prop.get(Constants.SERVICE_PID)'; if null, Component-ID can not be updated.
      expectedId - The expected predefined Component-ID
      Returns:
      true if the ID was updated. You may use it to abort the activate() method.
    • updateConfigurationProperty

      static void updateConfigurationProperty(org.osgi.service.cm.ConfigurationAdmin cm, String pid, String property, Object value)
      Update a configuration property.

      Usage:

       updateConfigurationProperty(cm, servicePid, "propertyName", "propertyValue");
       

      Parameters:
      cm - a ConfigurationAdmin instance. Get one using
                       @Reference
                       ConfigurationAdmin cm;
                       
      pid - PID of the calling component (use 'config.service_pid()' or '(String)prop.get(Constants.SERVICE_PID)'
      property - Name of the configuration property
      value - New configuration value
    • logDebug

      static void logDebug(OpenemsComponent component, org.slf4j.Logger log, String message)
      Log a debug message including the Component ID.
      Parameters:
      component - the OpenemsComponent
      log - the Logger instance
      message - the message
    • logInfo

      static void logInfo(OpenemsComponent component, org.slf4j.Logger log, String message)
      Log a info message including the Component ID.
      Parameters:
      component - the OpenemsComponent
      log - the Logger instance
      message - the message
    • logWarn

      static void logWarn(OpenemsComponent component, org.slf4j.Logger log, String message)
      Log a warn message including the Component ID.
      Parameters:
      component - the OpenemsComponent
      log - the Logger instance
      message - the message
    • logError

      static void logError(OpenemsComponent component, org.slf4j.Logger log, String message)
      Log a error message including the Component ID.
      Parameters:
      component - the OpenemsComponent
      log - the Logger instance
      message - the message