Skip to main content
Version: Next

Extensions

Extensions are a way to add project-specific or domain-specific functionality without adding that functionality directly to the OpenRemote core.

An extension is packaged as a separate Java artifact and can provide additional capabilities such as protocol agents, asset types, setup tasks, container services, rules, or other reusable backend logic.

Extensions help keep the OpenRemote core smaller and easier to maintain. They also make it easier to reuse functionality across multiple custom projects.

Using extensions

Currently, extensions are used by adding them as dependencies to a custom project.

For example, the ENTSO-E extension can be added to the dependencies block of the manager project in your custom project:

dependencies {
api "io.openremote.extension:openremote-entsoe-extension:0.5.1"
}

After the custom project is rebuilt and the OpenRemote Manager is restarted, the extension is available as part of that deployment.

For more details about the extension architecture and implementation approach, see the extensions design document.

Current extensions

The current extensions are available in the extensions repository:

  • EMS: A new extension-based implementation of the Energy Management System with GOPACS support.
  • ENTSO-E: Agent for retrieving ENTSO-E energy price data and storing it as predicted datapoints.

Current status

The extension mechanism is currently build-time based. This means extensions cannot yet be installed, enabled, or disabled dynamically from the Manager UI.

We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the extensions repository. Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse.

You can follow the ongoing work in the extensions epic.