Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions io.openems.edge.battery.bmw/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ The battery communicates via Modbus protocol for standard industrial integration
Main component for BMW battery system integration. Communicates via Modbus to read battery status and control charging/discharging operations. Includes HTTP-based token authentication for secure device access and state machine management for safe operation. Monitors state-of-charge with configurable limits and supports both grid-connected and island operation modes.

.*Configuration*:

* `id` (String): Unique component identifier; default: `"battery0"`
* `alias` (String): Human-readable name; default: same as id
* `enabled` (Boolean): Enable/disable this component; default: `true`
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.battery.bydcommercial/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for the BYD Battery-Box Commercial C130 battery rack system. Manages charging and discharging of the battery pack, monitors state of charge, temperature, cell voltages, and supports multi-module rack configurations with up to 20 slaves.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "battery0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.battery.fenecon.commercial/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for the FENECON Commercial Battery system. Manages charging and discharging of the battery pack, monitors state of charge, temperature, cell voltages, and health status. Supports relay-based automatic start/stop control for safety and operational optimization.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "battery0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.battery.fenecon.home/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Main component for FENECON Home battery integration. Communicates via Modbus to
* Temperature-based protection and limiting

.*Configuration*:

* `id` (String): Unique component identifier; default: `"battery0"`
* `alias` (String): Human-readable name; default: same as id
* `enabled` (Boolean): Enable/disable this component; default: `true`
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.battery.pylontech/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ This bundle implements the following OpenEMS Components:
*Note*: This implementation is tested and validated for the Pylontech Powercube M2 model. Compatibility with other Pylontech battery models has not been verified.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "battery0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
5 changes: 5 additions & 0 deletions io.openems.edge.battery.soltaro/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for Soltaro single-rack battery system Version A. Manages charging and discharging, monitors state of charge, temperature, and cell health.

.*Configuration*:

* `id` (String): Component ID (default: "battery0")
* `alias` (String): Human-readable alias
* `enabled` (Boolean): Enable/disable (default: true)
Expand Down Expand Up @@ -65,6 +66,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for Soltaro single-rack battery system Version B. Mid-generation hardware with improved battery management and monitoring capabilities.

.*Configuration*:

* `id` (String): Component ID (default: "battery0")
* `alias` (String): Human-readable alias
* `enabled` (Boolean): Enable/disable (default: true)
Expand Down Expand Up @@ -92,6 +94,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for Soltaro single-rack battery system Version C. Latest generation hardware with advanced thermal management and cell monitoring.

.*Configuration*:

* `id` (String): Component ID (default: "battery0")
* `alias` (String): Human-readable alias
* `enabled` (Boolean): Enable/disable (default: true)
Expand Down Expand Up @@ -119,6 +122,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for Soltaro multi-rack clustered battery system Version B. Coordinates multiple battery racks as single logical system for larger energy storage deployments.

.*Configuration*:

* `id` (String): Component ID (default: "battery0")
* `alias` (String): Human-readable alias
* `enabled` (Boolean): Enable/disable (default: true)
Expand Down Expand Up @@ -146,6 +150,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for Soltaro multi-rack clustered battery system Version C. Latest generation clustered configuration with advanced inter-rack coordination and thermal management.

.*Configuration*:

* `id` (String): Component ID (default: "battery0")
* `alias` (String): Human-readable alias
* `enabled` (Boolean): Enable/disable (default: true)
Expand Down
5 changes: 5 additions & 0 deletions io.openems.edge.batteryinverter.api/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Defines interfaces for battery inverter implementations in OpenEMS.
This API bundle defines the core interfaces and contracts for battery inverter components. A battery inverter is a critical component that converts between DC power from a battery and AC power for the grid or loads. Together with a battery component, a battery inverter builds an Energy Storage System (ESS).

The bundle provides interfaces for:

* Symmetric battery inverters for three-phase systems
* Managed battery inverters that can be controlled
* Hybrid battery inverters that can also handle PV input
Expand Down Expand Up @@ -39,6 +40,7 @@ Controllable battery inverter interface extending `SymmetricBatteryInverter`.
*Purpose*: Control and manage battery inverter charging/discharging operations.

*Key Methods*:

* `run(Battery battery, int setActivePower, int setReactivePower)` - Apply power setpoints
* `getStaticConstraints()` - Get power constraints for the inverter
* `getPowerPrecision()` - Get minimum power step resolution
Expand All @@ -54,6 +56,7 @@ Extended interface for hybrid inverters that manage both battery and PV.
*Purpose*: Control inverters that can simultaneously handle battery and photovoltaic inputs.

*Additional Capabilities*:

* Manages DC side with battery input and PV input
* Coordinates charging from both sources
* Handles PV feed-to-grid scenarios
Expand All @@ -66,6 +69,7 @@ Interface for off-grid battery inverter systems.
*Purpose*: Support for island/microgrid mode where battery inverter operates independently from the main grid.

*Use Cases*:

* Backup power systems
* Island installations
* Microgrids
Expand Down Expand Up @@ -104,6 +108,7 @@ Test implementations:

.ESS (Energy Storage System)
Battery Inverter + Battery component together provide ESS functionality:

* Charge/discharge coordination
* Reactive power support
* Grid support services
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ This bundle implements the following OpenEMS Components:
*Description*: SunSpec Modbus interface for KACO blueplanet gridsave battery inverters. Manages bidirectional AC/DC power flow, monitors inverter status, temperature, and grid conditions. Supports automatic start/stop control, grid code compliance, and watchdog timer for safety.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "batteryInverter0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
2 changes: 2 additions & 0 deletions io.openems.edge.batteryinverter.refu/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ This bundle provides two implementations for REFU battery inverters:
* StartStoppable

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "batteryInverter0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand All @@ -53,6 +54,7 @@ This bundle provides two implementations for REFU battery inverters:
* StartStoppable

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "batteryInverter0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.batteryinverter.sinexcel/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Modbus interface for Sinexcel hybrid battery inverters. Manages bidirectional AC/DC power flow for both grid-tied and off-grid operation, monitors inverter status and parameters, and supports emergency power switching for backup scenarios. Country code settings ensure regulatory compliance across different markets.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "batteryInverter0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
3 changes: 3 additions & 0 deletions io.openems.edge.bosch.bpts5hybrid/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Core communication component for the Bosch BPT-S 5 Hybrid system. Handles all device communication and coordinates data between ESS and PV components. Must be configured before ESS and PV components.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "boschBpts5hybridCore0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand All @@ -57,6 +58,7 @@ This bundle implements the following OpenEMS Components:
*Description*: Energy storage system (ESS) component for the Bosch BPT-S 5 Hybrid. Manages battery charging/discharging control and monitoring. Depends on the Core component for device communication.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "ess0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand All @@ -78,6 +80,7 @@ This bundle implements the following OpenEMS Components:
*Description*: PV DC charger component for the Bosch BPT-S 5 Hybrid. Handles DC power input from solar panels and controls charging of the battery. Depends on the Core component for device communication.

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "charger0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
Expand Down
4 changes: 4 additions & 0 deletions io.openems.edge.bridge.http/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ HTTP bridge for periodic communication with REST API endpoints.
The HTTP Bridge provides cycle-synchronized HTTP communication with remote devices and services using REST APIs. It enables OpenEMS components to periodically fetch data from HTTP endpoints and handle responses asynchronously. The bridge is widely used to integrate hardware devices like electric meters, relays, inverters, and other devices that expose RESTful APIs.

Key capabilities:

* Cycle-synchronized periodic HTTP requests (every N cycles)
* Configurable connect and read timeouts
* Automatic error handling and retry logic
Expand All @@ -29,6 +30,7 @@ The HTTP Bridge consists of:
*Purpose*: Provides cycle-synchronized HTTP communication with remote endpoints.

*Key Features*:

* `subscribeCycle(int cycle, String url, Consumer<HttpResponse<String>>)` - Fetch every N cycles
* `subscribeEveryCycle(String url, Consumer<HttpResponse<String>>)` - Fetch every cycle
* `subscribeCycle(CycleEndpoint endpoint)` - Advanced configuration with custom callbacks
Expand All @@ -50,6 +52,7 @@ httpBridgeCycleService.subscribeEveryCycle("http://device.local/status",
```

*Cycle Scheduling*:

* If cycle=1: Fetch every OpenEMS cycle
* If cycle=5: Fetch every 5th cycle (reduced polling)
* If request takes longer than cycle period: Wait for completion, then schedule next
Expand All @@ -60,6 +63,7 @@ httpBridgeCycleService.subscribeEveryCycle("http://device.local/status",
Configuration record for a single HTTP subscription:

*Fields*:

* `cycle` (int): How many cycles to wait between requests (minimum 1)
* `endpoint` (Supplier<Endpoint>): Supplies the HTTP endpoint to fetch
* `onResult` (Consumer<HttpResponse<String>>): Callback for successful responses
Expand Down
3 changes: 3 additions & 0 deletions io.openems.edge.bridge.mbus/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Serial bridge for meter communication using the M-Bus standard.
M-Bus (Meter-Bus) is an international standard (EN 13757-2) for fieldbus communication with meter devices. The M-Bus Bridge enables OpenEMS to read data from M-Bus compatible meters such as water meters, gas meters, heat meters, and other utility meters via serial connection.

M-Bus is ideal for:

* Reading utility meters (water, gas, heat, electricity)
* Remote meter data collection
* Utility billing and energy management
Expand All @@ -27,6 +28,7 @@ The bridge uses the jMbus library for protocol implementation and RxTx for seria
*Purpose*: Master bridge for M-Bus serial communication with utility and facility meters.

*Use Cases*:

* Reading water meter consumption
* Monitoring gas meter usage
* Heat meter energy readings
Expand All @@ -35,6 +37,7 @@ The bridge uses the jMbus library for protocol implementation and RxTx for seria
* Building energy accounting systems

.*Configuration*:

* `id` (String): Unique bridge identifier; default: `"mbus0"`
* `alias` (String): Human-readable name; default: same as id
* `enabled` (Boolean): Enable/disable this component; default: `true`
Expand Down
8 changes: 8 additions & 0 deletions io.openems.edge.bridge.modbus/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ Master bridge for Modbus/TCP and Modbus/RTU communication with industrial device
Modbus is a widely-used industrial communication standard for fieldbus communications. The Modbus Bridge enables OpenEMS to communicate with all kinds of hardware devices like photovoltaic inverters, electric meters, battery systems, and other industrial equipment that support Modbus protocol.

The bridge manages:

* Modbus task execution scheduling and prioritization
* Read and write request coordination across all Modbus components
* Automatic defective component handling and retry logic
* Cycle-synchronized communication timing
* Detailed logging and debugging capabilities

Two transport protocols are supported:

* **Modbus/TCP** - Network-based communication via TCP/IP
* **Modbus/RTU** - Serial-based communication via RS485 or RS232

Expand All @@ -29,12 +31,14 @@ Two transport protocols are supported:
*Purpose*: Master bridge for Modbus/TCP network communication.

*Use Cases*:

* Network-connected industrial devices
* Distributed systems across network segments
* Devices with native Ethernet interfaces
* Preferred for modern installations

.*Configuration*:

* `id` (String): Unique bridge identifier; default: `"modbusTcp0"`
* `ip` (String): IP address of Modbus master; default: `"192.168.1.100"`
* `port` (Integer): TCP port number; default: `502` (standard Modbus port)
Expand All @@ -51,12 +55,14 @@ Two transport protocols are supported:
*Purpose*: Master bridge for Modbus/RTU serial communication via RS485 or RS232.

*Use Cases*:

* Legacy equipment with serial interfaces
* Short-distance installations (under 1km)
* Isolated systems without network connectivity
* Multi-drop serial bus configurations

.*Configuration*:

* `id` (String): Unique bridge identifier; default: `"modbusSerial0"`
* `serialPort` (String): Serial port name; examples: `"/dev/ttyUSB0"`, `"COM3"`
* `baudRate` (Integer): Baud rate; default: `9600` (typical: 9600, 19200, 38400)
Expand Down Expand Up @@ -107,6 +113,7 @@ The **ModbusWorker** manages task execution:
* Defective components gradually delay up to 5 minutes

*Priority Levels*:

* `HIGH` - Executed every cycle (typical for control feedback)
* `LOW` - Round-robin execution (one LOW task per cycle per component)

Expand All @@ -131,6 +138,7 @@ If a component repeatedly fails:
*Timing Optimization*:

The ModbusWorker "learns" an ideal delay time each cycle:

* Measures time to execute all write tasks
* Calculates when read tasks should start
* Automatically applies CycleDelay for just-in-time reads
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.bridge.mqtt/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ MQTT is a perfect alternative to direct device protocols when devices support br
*Purpose*: MQTT broker connection and message routing for OpenEMS components.

.*Configuration*:

* `id` (String): Unique bridge identifier; default: `"mqtt0"`
* `alias` (String): Human-readable name; default: same as id
* `enabled` (Boolean): Enable/disable this component; default: `true`
Expand Down
4 changes: 4 additions & 0 deletions io.openems.edge.bridge.onewire/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ The OneWire Bridge provides direct communication with 1-Wire (OneWire) devices s
The bridge communicates directly with a OneWire busmaster device (e.g., DS9490R USB dongle) without requiring the OneWire File System (OWFS). It accesses the native Maxim Integrated C library via Java JNI for optimal performance.

Common use cases:

* Temperature monitoring (thermometers at different locations)
* Humidity and environmental sensors
* Battery voltage and current monitoring via smart battery controllers
Expand All @@ -25,6 +26,7 @@ Common use cases:
*Purpose*: Master bridge for 1-Wire communication with temperature and sensor devices.

.*Configuration*:

* `id` (String): Unique bridge identifier; default: `"onewire0"`
* `alias` (String): Human-readable name; default: same as id
* `enabled` (Boolean): Enable/disable this component; default: `true`
Expand All @@ -47,6 +49,7 @@ For complete device list, query the bridge via getDevices() JSON-RPC method (see
=== OneWire Adapter

Supported adapters:

* **DS9490R** - USB dongle (recommended, most common)
* **DS9481** - Serial adapter
* Compatible third-party 1-Wire adapters
Expand Down Expand Up @@ -168,6 +171,7 @@ Use the **address** field to configure individual thermometer components (see `i
=== Device Addresses

Each 1-Wire device has a unique 64-bit address in hexadecimal format:

* Example: `4D0000094xxxxxxx`
* Format: `FFXXXXXXXXXXXXXXXXXX` where FF is family code, X is unique serial

Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.controller.api.modbus/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ To read/write specific channels:
3. Read/write to register address = component_start + channel_offset

Example:

* Read register `302` to get `_sum/EssSoc` (total ESS state of charge)
* Write to register `806` to set `ess0/SetActivePowerEquals` (control charging/discharging)

Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.controller.api.mqtt/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ Implements:
|===

Uses standard MQTT wildcarding:

* `+` matches single level: `channel/_sum/+` matches `channel/_sum/GridActivePower`
* `#` matches multiple levels: `channel/_sum/#` matches `channel/_sum/GridActivePower`, `channel/_sum/EssSoc`, etc.

Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.controller.api.rest/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,7 @@ Authorization: Basic base64(username:password)
----

Usernames are typically:

* `user` (default unprivileged)
* `admin` (admin privileges)
* `x` (if username is omitted)
Expand Down
3 changes: 3 additions & 0 deletions io.openems.edge.controller.api/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Defines the core interface for all OpenEMS edge controllers.
The Controller API bundle defines the base interface that all OpenEMS edge controllers must implement. Controllers are the core logic components that automate energy management decisions - they run periodically to read sensor data and command power adjustments to batteries, inverters, EVCS chargers, and other actuators.

A controller has:

* A `run()` method called every OpenEMS cycle
* Access to all component data via the component registry
* Ability to set target power, reactive power, charging current, etc.
Expand All @@ -22,9 +23,11 @@ Base interface for all edge controllers.
*Purpose*: Defines the contract that controllers must follow for execution in the OpenEMS control loop.

*Key Method*:

* `run()` - Executes the controller logic every cycle

*Channel*:

* `RUN_FAILED` - Fault channel indicating controller execution failure

*Usage*:
Expand Down
1 change: 1 addition & 0 deletions io.openems.edge.controller.io.heatingelement/readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ The Controller distinguishes the definition of Phase and Level.
== Channels

Example:

* the power of the heating element per phase is 1000 W
* each "x" below represents one hour

Expand Down
Loading