Skip to content

Add energy extension and demo setup#1

Open
wborn wants to merge 17 commits into
mainfrom
add-energy-extension-demo-setup
Open

Add energy extension and demo setup#1
wborn wants to merge 17 commits into
mainfrom
add-energy-extension-demo-setup

Conversation

@wborn

@wborn wborn commented Jan 13, 2026

Copy link
Copy Markdown
Member

Based on openremote/openremote#2197

Description

Checklist

  • 1. Acceptance criteria of the linked issue(s) are met
  • 2. Tests are written and all tests pass
  • 3. Changes are manually tested by you and the reviewer
  • 4. Documentation is written or updated

@wborn wborn force-pushed the add-energy-extension-demo-setup branch from 4408ff1 to 597f503 Compare January 15, 2026 12:27
@wborn wborn added the Feature Development of new feature label Jan 15, 2026
@denniskuijs denniskuijs marked this pull request as ready for review July 15, 2026 11:43
Comment thread gradle/libs.versions.toml Outdated

[libraries]
camelCoreModel = { module = "org.apache.camel:camel-core-model", version.ref = "camel" }
resteasyClientApi = { module = "org.jboss.resteasy:resteasy-client-api", version.ref = "resteasy" } No newline at end of file

@wborn wborn Jul 15, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move the other dependency versions from gradle.properties to this file,

Also add new lines at the end of files.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new energy extension (domain model + manager services + simulator protocol) and a demo-setup extension that provisions demo realms, assets, rules, and dashboards via OpenRemote SPI registrations. It also adds a small Gradle version catalog to support the new extension dependencies.

Changes:

  • Add energy extension module with energy asset models, container services (wind/solar forecast, optimisation), and a storage simulator protocol/agent.
  • Add demo-setup extension module implementing SetupTasks plus bundled demo rules/flows and dashboard JSON.
  • Introduce gradle/libs.versions.toml and wire new module dependencies/publishing configuration.

Reviewed changes

Copilot reviewed 67 out of 68 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
gradle/libs.versions.toml Adds a version catalog for Camel and Resteasy dependencies used by the new extension.
energy/src/test/resources/META-INF/services/org.openremote.model.setup.SetupTasks Registers energy test setup tasks via SPI for tests.
energy/src/test/groovy/org/openremote/extension/energy/TestSetupTasks.groovy Test SetupTasks implementation to bootstrap Keycloak/Manager test setup.
energy/src/test/groovy/org/openremote/extension/energy/ManagerTestSetup.groovy Creates test assets for the energy demo/test environment.
energy/src/test/groovy/org/openremote/extension/energy/KeycloakTestSetup.groovy Creates an energy test realm for integration-style tests.
energy/src/test/groovy/org/openremote/extension/energy/ForecastSolarServiceTest.groovy Adds a (currently ignored) solar forecast integration test with request filtering.
energy/src/main/resources/META-INF/services/org.openremote.model.ContainerService Registers energy manager container services (optimisation + forecast services).
energy/src/main/resources/META-INF/services/org.openremote.model.AssetModelProvider Registers the energy asset model provider via SPI.
energy/src/main/java/org/openremote/extension/energy/storage/StorageSimulatorProtocol.java Implements a protocol that simulates storage asset behaviour over time.
energy/src/main/java/org/openremote/extension/energy/storage/StorageSimulatorAgentLink.java AgentLink for the storage simulator agent.
energy/src/main/java/org/openremote/extension/energy/storage/StorageSimulatorAgent.java Agent entity for the storage simulator protocol.
energy/src/main/java/org/openremote/extension/energy/model/EnergyOptimisationAsset.java New optimisation “root” asset defining optimisation parameters and results.
energy/src/main/java/org/openremote/extension/energy/model/EnergyModelProvider.java Auto-scan model provider for energy asset classes.
energy/src/main/java/org/openremote/extension/energy/model/ElectricVehicleFleetGroupAsset.java Group asset type for EV fleets.
energy/src/main/java/org/openremote/extension/energy/model/ElectricVehicleAsset.java EV asset model extending battery/storage semantics.
energy/src/main/java/org/openremote/extension/energy/model/ElectricitySupplierAsset.java Supplier asset model including tariffs and carbon cost fields.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityStorageAsset.java Base class for storage assets including capacity/level/schedule attributes.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityProducerWindAsset.java Wind producer asset model with forecast inclusion and wind parameters.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityProducerSolarAsset.java Solar producer asset model with forecast inclusion and panel parameters.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityProducerAsset.java Base producer asset model including powerForecast attribute.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityConsumerAsset.java Consumer asset model including optional power/forecast attributes.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityChargerAsset.java Charger asset model extending storage semantics and connection attributes.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityBatteryAsset.java Battery asset model extending storage semantics and charge cycle attribute.
energy/src/main/java/org/openremote/extension/energy/model/ElectricityAsset.java Base electricity asset model defining shared power/energy/tariff attributes.
energy/src/main/java/org/openremote/extension/energy/manager/ForecastWindService.java Adds the wind forecasting container service and predicted datapoint writing.
energy/build.gradle Adds the new energy module build/publish configuration and dependencies.
demo-setup/src/main/resources/META-INF/services/org.openremote.model.setup.SetupTasks Registers demo setup tasks via SPI.
demo-setup/src/main/resources/META-INF/services/org.openremote.model.AssetModelProvider Registers demo-setup model provider via SPI.
demo-setup/src/main/resources/demo/rules/smartcity/TotalSolarProduction.flow Smartcity flow: total producer power aggregation.
demo-setup/src/main/resources/demo/rules/smartcity/TotalPowerConsumption.flow Smartcity flow: total consumer power aggregation.
demo-setup/src/main/resources/demo/rules/smartcity/StationCrowded.json Smartcity JSON rule: crowded station behaviour.
demo-setup/src/main/resources/demo/rules/smartcity/RotterdamPowerBalance.flow Smartcity flow: simple power balance writing.
demo-setup/src/main/resources/demo/rules/smartcity/RotterdamBatteryUse.json Smartcity JSON rule: battery control based on power balance.
demo-setup/src/main/resources/demo/rules/smartcity/ParkingFull.json Smartcity JSON rule: parking occupancy alert.
demo-setup/src/main/resources/demo/rules/smartcity/OnsParkDimLightWinds.json Smartcity JSON rule: dim lights based on wind speed.
demo-setup/src/main/resources/demo/rules/smartcity/OnsParkBrightStrongWinds.json Smartcity JSON rule: brighten lights based on wind speed.
demo-setup/src/main/resources/demo/rules/smartcity/MarkthalChargersInUse.json Smartcity JSON rule: charger usage notification.
demo-setup/src/main/resources/demo/rules/smartcity/Markthal.json Smartcity JSON rule: Markthal geofence notification.
demo-setup/src/main/resources/demo/rules/smartcity/LightGroupOnOff.flow Smartcity flow: group on/off propagation to lights.
demo-setup/src/main/resources/demo/rules/smartcity/Euromast.json Smartcity JSON rule: Euromast geofence notification.
demo-setup/src/main/resources/demo/rules/smartcity/EnvironmentAlerts.json Smartcity JSON rule: environmental alert notifications.
demo-setup/src/main/resources/demo/rules/smartcity/DeKuip.json Smartcity JSON rule: De Kuip geofence notification.
demo-setup/src/main/resources/demo/rules/manufacturer/TotalFlow.flow Manufacturer flow: compute irrigation total flow.
demo-setup/src/main/resources/demo/rules/manufacturer/SalinityLessThan3.json Manufacturer JSON rule: salinity low adjustments.
demo-setup/src/main/resources/demo/rules/manufacturer/SalinityGreaterThan25.json Manufacturer JSON rule: salinity high adjustments.
demo-setup/src/main/resources/demo/rules/manufacturer/SalinityBetween20And25.json Manufacturer JSON rule: salinity range adjustments.
demo-setup/src/main/resources/demo/rules/manufacturer/IrrigationTankLow.json Manufacturer JSON rule: tank low notification.
demo-setup/src/main/resources/demo/rules/manufacturer/FlowPerMeter.flow Manufacturer flow: KPI for flow per area.
demo-setup/src/main/resources/demo/dashboards/smartcity/parking.json Smartcity dashboard definition.
demo-setup/src/main/resources/demo/dashboards/manufacturer/harvesting.json Manufacturer dashboard definition.
demo-setup/src/main/java/org/openremote/extension/demosetup/RulesDemoSetup.java Imports the bundled demo rulesets into realms.
demo-setup/src/main/java/org/openremote/extension/demosetup/model/SoilSensorAsset.java Adds a demo soil sensor asset model.
demo-setup/src/main/java/org/openremote/extension/demosetup/model/ManufacturerAssetModelProvider.java Auto-scan model provider for manufacturer demo assets.
demo-setup/src/main/java/org/openremote/extension/demosetup/model/IrrigationAsset.java Adds a demo irrigation asset model.
demo-setup/src/main/java/org/openremote/extension/demosetup/model/HarvestRobotAsset.java Adds a demo harvest robot asset model.
demo-setup/src/main/java/org/openremote/extension/demosetup/ManagerDemoDashboardSetup.java Imports bundled demo dashboards into the manager.
demo-setup/src/main/java/org/openremote/extension/demosetup/ManagerDemoAgentSetup.java Optionally provisions KNX/Velbus demo agents via config flags.
demo-setup/src/main/java/org/openremote/extension/demosetup/KeycloakDemoSetup.java Provisions demo realms and demo users/roles.
demo-setup/src/main/java/org/openremote/extension/demosetup/DemoSetupTasks.java SetupTasks entrypoint for the demo setup type.
demo-setup/build.gradle Adds the new demo-setup module build/publish configuration and dependency on energy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature Development of new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants