Controller

Table of Contents

For the following devices driver implementations are available in OpenEMS Edge.

1. BYD Battery-Box Commercial

Implemented Natures
  • Battery

2. Battery FENECON Home

3. Soltaro Battery Rack

Implemented Natures
  • Battery

4. KACO blueplanet gridsave

  • Applies to

    • KACO blueplanet gridsave 50.0 TL3

    • KACO blueplanet gridsave 92.0 TL3

  • Implemented Natures

    • StartStoppable

    • SymmetricBatteryInverter

    • ManagedSymmetricBatteryInverter

5. REFUstore 88K

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

6. SunSpec PV inverter

Generic implementation of SunSpec PV inverters. It is tested with - KACO blueplanet TL.3 series - SolarEdge SE12.5K - SE27.6K

Implemented Natures
  • ManagedSymmetricPvInverter

  • SymmetricMeter

7. Core services for OpenEMS Edge

7.1. ComponentManager

A service that provides easy access to OpenEMS-Components and Channels. It also provides some sub-services:

DefaultConfigurationWorker

Applies a default configuration, i.e. activates certain OpenEMS Components that are to be enabled by default on deployment, like Modbus-TCP-Slave Api and JSON/REST Api.

OsgiValidateWorker

Checks if configured Components are actually enabled.

OutOfMemoryHeapDumpWorker

Checks for heap-dump files which get created if OpenEMS Edge crashed because of an OutOfMemory-Error in a previous run.

7.2. Cycle

Provides the core runtime Cycle of OpenEMS Edge

7.3. Host

A service that provides host and operating system specific commands like configuration of TCP/IP network.

7.4. Meta

A service that provides 'OpenemsConstants' as Channels so that they are available via Apis; example: _meta/Version for the current version of OpenEMS Edge.

7.5. Sum

A service that holds summed up information on the power and energy flows, like aggregated production, consumption and energy storage charge/discharge.

8. FENECON BYD Container

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

9. ESS Cluster

Combines multiple energy storage systems (ESS) to one common ESS. This way every Controller can easily work with multiple ESS in parallel. Distribution of power requests to each ESS is controlled via the Power-Class .

10. FENECON Commercial 40 AC/DC/Hybrid

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

  • EssDcCharger

11. Generic Energy Storage System

Represents an Energy Storage System consisting of a Battery-Inverter and a Battery.

12. KACO blueplanet gridsave 50.0 TL3

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

13. Maschinenfabrik Rheinhausen (MR) Gridcon

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

14. REFU Battery Inverter

Project specific implementation of a REFU inverter. This will not directly apply to all REFU battery inverters.

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

  • AsymmetricEss

  • ManagedAsymmetricEss

15. Sinexcel Battery Inverter

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

16. SMA SunnyIsland 6.0H

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

  • AsymmetricEss

  • ManagedAsymmetricEss

  • SinglePhaseEss

  • ManagedSinglePhaseEss

17. EVCS Cluster

Distributes the charging power (Depending on the implementation) to the priorized charging stations. The implementations calculate the maximum power that can be used by all charging stations.

Possible Cluster implementations:

Cluster for peak shaving
The peak shaving cluster is calculating the power depending on the grid power that can be used per phase, the maximum allowed storage power and the current values of grid, storage and EVCS consumption.

Cluster for self consumption
The self consumption cluster is calculating the power depending on the excess power.

18. EVCS Core

Core services for electric vehicle charging.

19. KEBA KeContact c-series Charging Station

This component implements the KEBA c-series charging station, which is controlled and read out using the proprietary UDP protocol. It collects all relevant information into the given Nature Channels and its own Channels and sends charging commands that have been set by another controllers.

Implemented Natures: * Evcs (Electric Vehicle Charging Station) * ManagedEvcs

20. ABL Charging Station

This component implements the ABL EMH 3 series charging station, which is controlled and read out using the OCPP protocol. It provides specific information for the AbstractOcppEvcsComponent.

Implemented Natures: * Evcs (Electric Vehicle Charging Station) * MeasuringEvcs

Extended abstract class: * AbstractOcppEvcsComponent

21. Electric Vehicle Charging Station OCPP Common

The Open Charge Point Protocol (OCPP) is an application protocol for communication between Electric vehicle charging stations (EVCS) and a central management system.

The whole bundle contains a library of the OCPP functions. It also provides a default abstract ocpp EVCS component that can be used by every specific charging station and a OcppServer interface that provides a minimum functionality, to be able to send data to a charging station.

Implemented Natures: * Evcs (Electric Vehicle Charging Station * MeasuringEvcs (Can get measured information)

22. IES KeyWatt Charging Station

This component implements the IES KeyWatt CCS charging station with a single plug, which is controlled and read out using the OCPP protocol. It provides specific information for the AbstractOcppEvcsComponent.

Implemented Natures: * Evcs (Electric Vehicle Charging Station * ManagedEvcs * MeasuringEvcs (Can get measured information)

Extended abstract class: * AbstractOcppEvcsComponent

23. OCPP Server

The OCPP Server is implementing a central management system. The server maintains connections to the EVCS’s, i.e.

  • connects to the charging stations

  • distributes their information to each EVCS component

  • send commands to the charging stations

24. FENECON DESS

Applies to multiple similar products like the FENECON by BYD PRO Hybrid.

Implemented Natures
  • SymmetricEss

  • AsymmetricEss

  • EssDcCharger

  • AsymmetricMeter (for Grid and AC-connected PV)

  • SymmetricMeter (for Grid and AC-connected PV)

25. FENECON Mini 3-3 | 3-6

Implemented Natures
  • SinglePhaseEss

  • AsymmetricEss

  • SymmetricEss

  • SymmetricMeter (for Grid and PV)

26. FENECON Pro 9-12

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

  • AsymmetricEss

  • ManagedAsymmetricEss

  • AsymmetricMeter (for PV)

  • SymmetricMeter (for PV)

27. GoodWe ET and BT-Series Hybrid Inverters

Ess:

  • SymmetricEss

Charger: (ET only)

  • EssDcCharger

Grid-Meter:

  • SymmetricMeter

  • AsymmetricMeter

28. KMtronic Modbus Relay Board

This bundle implements the Kmtronic Modbus Relay board. Relay outputs can be used to turn ON/OFF lights, motors and signal alarms. This relay has 8 output channels.

Implemented Natures
  • DigitalOutput

28.1. Configuration

  • Id Unique ID of this Component (id), e.g. "io0", "io1"

  • Modbus-ID ID of Modbus bridge. (modbus.id)

  • Modbus Unit-ID The Unit-ID of the Modbus device. (modbusUnitId)

28.1.1. Example Configuration

  • Id : io0

  • Modbus-ID : modbus3

  • Modbus Unit-ID : 1

29. RevolutionPi Digital IO Module

This bundle implements the Kunbus RevolutionPI DigitalIO enhancement board. It can be used to turn ON/OFF a data output or to read in digital data input. It provides 14 digital input and 14 digital output channels.

Implemented Natures: - DigitalOutput - DigitalInput

29.1. Dependencies

The RevolutionPi Digital IO OpenEms Bundle depends on the librevpi-dio-java git library project. A binary version of this library is already included in this OpenEMS Bundle. See https://github.com/clehne/librevpi-dio-java for more information.

29.2. Notes

Prepare Kunbus RevPi:

The Digital IO hardware enhancement module on your Kunbus RevolutionPi system needs to be enabled before starting OpenEMS (see Kunbus-Website for configuration settings).

30. Shelly WiFi Relay Switch

This bundle implements Shelly WiFi Relay Switches.

Compatible with - Shelly 2.5 - Shelly Plug S

Implemented Natures - DigitalOutput

31. WAGO Fieldbus Coupler 750-352

Implemented Natures
  • DigitalOutput

  • DigitalInput

This component reads the current WAGO fieldbus coupler configuration and dynamically creates its Input and Output Channels accordingly.

Make sure to update the WAGO fieldbus coupler configuration before activating this component. Open the WAGO fieldbus web interface, click "IO config" and "create ea-config.xml" to update the configuration. Default username is admin, default password is wago.

The following examples assume the Component-ID is io0 and the addresses are valid for the first WAGO extension. For extensions 2, 3,…​ just increase the number behind M. Channel names follow this logic:

31.1. WAGO 750-523 "1-channel relay output"

io0/RelayM1

Input/Output

the relay

io0/RelayM1Hand

Input

state of the manual switch

31.2. WAGO 750-501 "2-channel digital output"

io0/DigitalOutputM1C1

Input/Output

the first digital output

io0/DigitalOutputM1C2

Input/Output

the first digital output

31.3. WAGO 750-400 "2-channel digital input"

io0/DigitalInputM1C1

Input

the first digital input

io0/DigitalInputM1C2

Input

the second digital input

32. KOSTAL PIKO

Implemented Natures
  • SymmetricEss

  • SymmetricMeter (for Grid meter)

  • EssDcCharger (for PV)

33. ABB B23 Meter

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

34. Artemes AM-2

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

35. B-Control | TQ-Systems EM300 Meter

Implemented Natures

  • SymmetricMeter

  • AsymmetricMeter

36. Carlo Gavazzi EM300 Meter

Applies to - CARLO GAVAZZI EM330 - CARLO GAVAZZI EM340

Implemented Natures - SymmetricMeter - AsymmetricMeter

37. Discovergy Smart-Meter

Reads data of a Discovergy Smart-Meter via online REST-Api. See https://api.discovergy.com for details.

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

38. Janitza Meters UMG 96RM-E | UMG 604

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

39. Microcare SDM 630 Meter

This implementation is functionally compatible with a number of energy meters with the name "SDM 630".

Implemented Natures

  • SymmetricMeter

  • AsymmetricMeter

40. PQ Plus UMD 97 Meter

Applies also to UMD 96, UMD 97, UMD 98, UMD 807, UMD 701, UMD 704, UMD 705, UMD 706, UMD 707, UMD 709, UMD 710, UMD 913, UMC 26

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

To configure the meter, first add a modbus tcp bridge connecting to the correct IP address, then configure this meter to use the configured modbus bridge. The unit ID is by default 1.

42. SMA Sunny Home Manager 2.0 Integrated Meter

This implementation uses the integrated energy meter of the SMA Sunny Home Manager 2.0 Data needs to polled through Modbus from an attached SMA inverter as the HM2.0 does not have a local API on the device itself

Implemented Natures

  • SymmetricMeter

  • AsymmetricMeter

43. SOCOMEC Meter

Just configure Meter.Socomec.Singlephase or Meter.Socomec.Threephase. The actual type and modbus protocol of the Socomec meter is identified automatically.

44. SunSpec Meter

Generic implementation of SunSpec Meters.

Implemented Natures
  • AsymmetricMeter

  • SymmetricMeter

45. Virtual Symmetric Subtract

This is a virtual meter built from subtracting other meters or energy storage systems.

The logic calculates Minuend - Subtrahend1 - Subtrahend2 - …​.

Example use-case: create a virtual Grid-Meter from Production-Meter, Consumption-Meter and Energy Storage System (ESS) - by definition Consumption is defined as `Consumption = ESS + Grid + Production (AC) - or: `Grid = Consumption - ESS - Production (AC) - this can be achieved by configuring the Consumption-Meter as Minuend and Production-Meter and ESS as Subtrahends.

46. Virtual Symmetric Add

This is a virtual meter which is used to sum up the values from multiple symmetric meters. The use case for this feature is, Usually when there are multiple meters reading values from different systems, The average values from the systems make more sense for calculation and statistics.

Implemented Natures - SymmetricMeter

46.1. Example Configuration

  • Component-ID : meter0

  • Alias : virtualMeter

  • Meter-Type : PRODUCTION

  • Meter IDs : [meter1, meter2, meter3]

Meter IDs is a list of the meters which needs summing of the values.

The above example configuration describes, The values from the three meters configured (meter1, meter2, meter3) are summed up and average values is set to the corresponding channel address.

47. Weidmueller 525 Meter

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

48. OneWire Thermometer

Implemented Natures
  • Thermometer

49. Persistence Model Predictor

Predicts values using the 'same-as-last-day' approach.

50. PV-Inverter Cluster

Combines multiple PV-Inverters to one common PV-Inverter. This way every Controller can easily work with multiple PV-Inverters in parallel.

51. KACO blueplanet PV inverter

Implementation of the KACO blueplanet series PV inverters.

Implemented Natures
  • ManagedSymmetricPvInverter

  • SymmetricMeter

52. SMA Sunny Tripower PV inverter

Implementation of the SMA Sunny Tripower PV inverters.

Implemented Natures: - SymmetricMeter - ManagedSymmetricPvInverter

53. Solar-Log

Implemented Natures
  • SymmetricPvInverter

  • SymmetricMeter

54. SunSpec PV inverter

Generic implementation of SunSpec PV inverters. It is tested with - KACO blueplanet TL.3 series - SolarEdge SE12.5K - SE27.6K

Implemented Natures
  • ManagedSymmetricPvInverter

  • SymmetricMeter

55. Simulated OpenEMS Components

This bundle provides simulated OpenEMS Components for the Natures. They are useful for testing and demoing without real hardware.

55.1. Simulator-App

The Simulator-App is a very specific component that needs to be handled with care. It provides a full simulation environment to run an OpenEMS Edge instance in simulated realtime environment. After you ran a Simulation, you will receive the simulation result as a JSON. Also the simulation result can be viewed in OpenEMS UI.

Be aware that the SimulatorApp Component takes control over the complete OpenEMS Edge Application, i.e. if you enable it, it is going to delete all existing Component configurations!

To run a simulation: - Run OpenEMS Edge using the EdgeApp.bndrun - Configure a read-write JSON/REST Api - Send a JSON-RPC Request like the following, providing full configurations for all required OpenEMS Edge Components

{
   "jsonrpc":"2.0",
   "id":"7132233f-1ca3-1eb3-8800-86d246d47c1d",
   "method":"componentJsonApi",
   "params":{
      "componentId":"_simulator",
      "payload":{
         "jsonrpc":"2.0",
         "id":"addccd39-1bac-89c2-91ac-13bf5b1e9743",
         "method":"executeSimulation",
         "params":{
            "components":[
               {
                  "factoryPid":"Scheduler.AllAlphabetically",
                  "properties":[
                     {
                        "name":"id",
                        "value":"scheduler0"
                     }
                  ]
               },
               {
                  "factoryPid":"Simulator.GridMeter.Reacting",
                  "properties":[
                     {
                        "name":"id",
                        "value":"meter0"
                     }
                  ]
               },
               {
                  "factoryPid":"Simulator.NRCMeter.Acting",
                  "properties":[
                     {
                        "name":"id",
                        "value":"meter1"
                     },
                     {
                        "name":"alias",
                        "value":"Verbrauch"
                     },
                     {
                        "name":"datasource.id",
                        "value":"_simulator"
                     }
                  ]
               },
               {
                  "factoryPid":"Simulator.ProductionMeter.Acting",
                  "properties":[
                     {
                        "name":"id",
                        "value":"meter2"
                     },
                     {
                        "name":"alias",
                        "value":"S�ddach"
                     },
                     {
                        "name":"datasource.id",
                        "value":"_simulator"
                     }
                  ]
               },
               {
                  "factoryPid":"Simulator.EssSymmetric.Reacting",
                  "properties":[
                     {
                        "name":"id",
                        "value":"ess0"
                     },
                     {
                        "name":"maxApparentPower",
                        "value":10000
                     },
                     {
                        "name":"capacity",
                        "value":10200
                     },
                     {
                        "name":"initialSoc",
                        "value":50
                     }
                  ]
               },
               {
                  "factoryPid":"Controller.Symmetric.Balancing",
                  "properties":[
                     {
                        "name":"id",
                        "value":"ctrlBalancing0"
                     },
                     {
                        "name":"ess.id",
                        "value":"ess0"
                     },
                     {
                        "name":"meter.id",
                        "value":"meter0"
                     }
                  ]
               }
            ],
            "clock":{
               "start":"2000-01-01T00:00:00.00Z",
               "end":"2000-01-08T00:00:00.00Z",
               "timeleapPerCycle":900000,
               "executeCycleTwice":true
            },
            "profiles":{
               "meter1/ActivePower": [436,404,373,344,316,290,267,248,236,227,220,216,211,207,203,199,196,193,192,191,191,191,193,195,198,201,206,211,219,232,254,290,342,405,474,543,607,666,719,767,810,849,886,924,962,999,1029,1049,1055,1047,1025,990,944,890,833,779,732,692,658,630,607,588,572,555,539,527,524,535,562,602,647,692,731,764,795,825,854,878,892,887,861,820,775,733,704,683,666,646,621,591,556,518,479,440,402,364,436,404,374,345,316,290,267,249,236,227,220,216,211,207,203,199,196,193,192,191,191,191,193,195,198,201,206,211,219,232,255,291,342,405,475,544,608,667,720,768,811,850,888,926,964,1000,1030,1050,1056,1048,1027,992,945,891,834,780,733,693,659,631,608,589,572,556,540,528,525,536,563,603,648,693,732,765,796,826,855,880,893,888,862,821,776,735,705,684,667,647,622,591,556,519,480,441,402,365,338,304,274,249,231,218,209,204,200,198,197,195,194,193,191,191,192,194,196,200,204,215,238,279,340,413,489,557,607,642,663,673,676,673,665,653,638,622,607,594,586,580,578,578,580,584,593,607,626,647,664,673,670,658,639,619,600,583,568,553,539,527,517,511,510,515,527,549,579,618,662,711,761,810,855,893,922,940,943,931,902,862,818,777,744,716,691,665,635,602,566,528,489,450,412,374,338,304,275,250,231,218,210,204,201,198,197,196,194,193,192,192,192,194,197,200,205,216,239,279,340,414,490,558,608,643,664,674,677,674,666,654,639,623,608,595,587,581,579,579,581,585,594,608,627,648,665,674,671,659,640,620,601,584,569,554,540,528,518,512,511,516,528,550,580,619,663,712,762,811,856,895,924,941,945,932,904,864,820,778,745,717,692,666,636,603,567,529,490,451,413,375,338,304,275,250,231,218,210,204,201,198,197,196,194,193,192,192,192,194,197,200,205,216,239,279,340,415,491,558,609,643,664,675,678,675,666,654,639,624,608,596,587,582,579,579,581,586,594,608,628,649,666,675,672,659,641,621,602,585,569,554,540,528,518,513,512,517,529,550,581,619,664,712,763,812,857,896,925,942,946,933,905,865,820,779,745,718,693,667,637,603,567,529,491,452,413,375,339,305,275,250,232,219,210,204,201,198,197,196,194,193,192,192,192,194,197,200,205,216,239,280,341,415,491,559,609,644,665,676,679,676,667,655,640,624,609,596,588,582,580,580,582,586,595,609,628,649,667,676,673,660,641,621,602,585,570,555,541,529,519,513,512,517,529,551,581,620,665,713,764,813,858,897,926,943,947,934,906,865,821,780,746,719,694,668,637,604,568,530,491,452,413,375,339,305,275,250,232,219,210,205,201,199,198,196,195,194,192,192,193,195,197,201,205,216,239,280,341,415,492,559,610,645,666,676,679,676,668,656,641,625,609,597,588,583,580,580,582,587,595,609,629,650,667,676,673,661,642,622,603,586,570,555,541,529,519,514,513,518,530,551,582,621,665,714,764,814,859,897,927,944,948,935,906,866,822,781,747,719,694,668,638,604,568,530,492,452,414,376],
               "meter2/ActivePower": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,100,250,277,345,449,457,535,530,575,770,862,720,779,808,638,552,457,440,574,537,499,356,216,267,180,180,147,102,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,23,105,162,223,271,309,370,431,463,514,481,463,516,467,406,375,361,401,387,372,345,334,337,312,275,229,184,141,96,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,74,134,173,209,254,275,302,331,380,419,437,471,410,441,444,410,394,400,396,384,387,391,350,291,260,208,140,74,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,24,130,215,278,378,443,529,534,568,797,726,618,766,703,802,809,755,783,682,633,672,590,629,515,523,403,318,251,171,31,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,56,336,1979,945,2897,3580,2510,3097,3499,5616,6327,2631,898,3859,3909,4931,3683,5996,1777,3615,3415,1601,1254,4954,4145,3426,1163,101,457,27,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,21,65,25,48,84,108,125,123,99,84,119,214,202,183,104,151,450,881,1878,3424,5211,4329,3986,1796,1904,1618,1173,646,758,50,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,35,104,163,246,349,329,406,387,379,457,396,488,530,540,591,835,774,740,569,549,542,524,549,471,446,337,234,192,110,30,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
            },
            "collect":[
               "_sum/GridActivePower",
               "_sum/EssActivePower",
               "_sum/ProductionActivePower",
               "_sum/ConsumptionActivePower",
               "_sum/EssSoc"
            ]
         }
      }
   }
}

56. SolarEdge PV Inverter + Grid-Meter

Implementation of the SolarEdge PV inverters.

Implemented Natures
  • SymmetricMeter

  • AsymmetricMeter

57. Tesla Powerwall 2

Implementation of the Tesla Powerwall 2 energy storage system

Implemented Natures
  • SymmetricEss

58. InfluxDB

Persists all data of OpenEMS Edge Channels to an InfluxDB timeseries database.

59. RRD4J

Persists data of OpenEMS Edge Channels to RRD4J files.

60. KACO blueplanet hybrid 10.0 TL3

Implemented Natures
  • SymmetricEss

  • ManagedSymmetricEss

(proprietary)