Simulation
Simulated energy asset implementations for testing and development without physical hardware.
Overview
The Voltimax.Edge.Control.Simulation library provides comprehensive simulation of energy assets, load profiles, and grid interactions for:
- Testing control strategies without physical devices
- Development and debugging of energy management algorithms
- Validating site orchestration with realistic profiles
- Evaluating demand response and time-of-use pricing scenarios
Quick Start
Add a simulated battery to your assets.json:
json
{
"Name": "home-battery",
"DeviceClass": "SimulatedBattery",
"AssetType": "Battery",
"SimulatedBattery": {
"ConfigurationModel": "MediumResidential"
}
}That's it - the gateway will create a realistic 15 kWh battery with proper physics, efficiency losses, and thermal behavior.
Simulated Assets
| Asset | DeviceClass | Description |
|---|---|---|
| Battery | SimulatedBattery | Full-featured battery with cell/pack tracking, inverter, thermal simulation |
| Solar PV | SimulatedSolarInverter | Solar inverter with panel characteristics and generation profiles |
| Grid Meter | SimulatedGridMeter | Externally controlled meter for site energy balance |
| Load | SimulatedLoad | Configurable load with residential/commercial/constant profiles |
| EV Charger | SimulatedChargeStation | EV charging station with commuter profiles |
Site Orchestration
The SiteOrchestrator maintains energy balance across all simulated assets:
text
Grid = Load - Solar + EV_Charging ± BatteryIt automatically discovers assets from configuration and updates the grid meter every 5 seconds.
Profiles & Providers
Simulation behavior is driven by pluggable profile providers:
| Provider | Interface | Purpose |
|---|---|---|
| Load profiles | ILoadProfileProvider | Building consumption patterns |
| Solar profiles | ISolarProfileProvider | PV generation curves |
| EV charging | IEvChargingProfileProvider | Charging session patterns |
| Pricing | IElectricityPricingProvider | Time-of-use electricity rates |
| Demand response | IDemandResponseProvider | DR event simulation |
| Grid status | IGridStatusProvider | Outage simulation |
Full Site Example
json
{
"Assets": [
{
"Name": "grid-meter",
"DeviceClass": "SimulatedGridMeter",
"AssetType": "Grid"
},
{
"Name": "solar-inverter",
"DeviceClass": "SimulatedSolarInverter",
"AssetType": "Solar",
"SimulatedSolarInverter": {
"InstalledCapacityW": 10000.0
}
},
{
"Name": "battery",
"DeviceClass": "SimulatedBattery",
"AssetType": "Battery",
"SimulatedBattery": {
"ConfigurationModel": "MediumResidential"
}
},
{
"Name": "ev-charger",
"DeviceClass": "SimulatedChargeStation",
"AssetType": "ChargeStation"
}
]
}Register the orchestrator in DI:
csharp
services.AddSingleton<ILoadProfileProvider, ResidentialLoadProfile>();
services.AddHostedService<SiteOrchestrator>();