Add energy extension and demo setup#1
Open
wborn wants to merge 17 commits into
Open
Conversation
4408ff1 to
597f503
Compare
wborn
commented
Jul 15, 2026
|
|
||
| [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 |
Member
Author
There was a problem hiding this comment.
Please move the other dependency versions from gradle.properties to this file,
Also add new lines at the end of files.
There was a problem hiding this comment.
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
energyextension module with energy asset models, container services (wind/solar forecast, optimisation), and a storage simulator protocol/agent. - Add
demo-setupextension module implementingSetupTasksplus bundled demo rules/flows and dashboard JSON. - Introduce
gradle/libs.versions.tomland 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on openremote/openremote#2197
Description
Checklist