BESS Setup
Monitor a battery energy storage system with OPC UA and Modbus devices.
This guide walks you through setting up monitoring for a Battery Energy Storage System (BESS). BESS installations typically include battery racks, a power conversion system (PCS), a battery management system (BMS), and environmental monitoring. By the end of this guide, you will have a fully monitored BESS site with data flowing from the edge to the cloud.
Prerequisites
- A Fleetera account with an organization set up
- A Linux server at the BESS site (see hardware requirements)
- Access to the BESS data sources (OPC UA for the BMS/PCS, Modbus for auxiliary equipment)
Step 1 — Create the site
- Navigate to Sites and click + New Site
- Fill in the form:
- Name — for example, "Grid Storage Facility East"
- Site Category — select Energy Storage Facility
- Status — set to Active
- Location — set the GPS coordinates
- Click Create Site
Step 2 — Create templates
BESS systems have a deeper hierarchy than wind or solar. Create templates for each level.
Battery container template
- Navigate to Templates and click + New Template
- Enter a name (for example, "Battery Container 40ft")
- Add child templates for the internal components:
- Battery Rack — represents a rack of battery modules
- PCS (Power Conversion System) — the inverter that converts DC to AC
- HVAC — the cooling system for the container
- Fire Suppression — fire detection and suppression system
Add variables from the BESS library
The platform includes a built-in BESS variable library. Add relevant variables to each level:
Battery Rack:
- State of charge (SOC), state of health (SOH)
- Rack voltage, rack current
- Min/max cell voltage, min/max cell temperature
- Number of cycles, available energy
- Alarm and fault flags
PCS:
- AC power (charge/discharge), AC voltage, AC current
- DC bus voltage, DC bus current
- Operating mode (charging, discharging, standby, off)
- PCS temperature, efficiency
HVAC:
- Supply air temperature, return air temperature
- Cooling capacity, fan speed
- Compressor status, operating mode
Container level:
- Total active power, total energy throughput
- Container internal temperature, humidity
- Grid connection status
Step 3 — Build the asset hierarchy
- Open your site and go to the Asset Hierarchy tab
- Instantiate the battery container template:
- For a single container, use single instantiation
- For multiple containers, use bulk instantiation with a naming pattern (for example, "Container-A", "Container-B")
- The hierarchy is created automatically:
Grid Storage Facility East
├── Container-A
│ ├── Battery Rack 1
│ ├── Battery Rack 2
│ ├── ...
│ ├── PCS
│ ├── HVAC
│ └── Fire Suppression
└── Container-B
├── Battery Rack 1
├── ...If each container has a different number of battery racks, instantiate the container template first, then manually add or remove rack assets as needed.
Step 4 — Create connectors
BESS sites often combine OPC UA and Modbus protocols.
OPC UA connector for the BMS
- Go to the Connectors tab and click + New Connector
- Select OPC UA as the protocol
- Enter the BMS endpoint URL (for example,
opc.tcp://192.168.1.10:4840/UA/BMS) - Configure security settings
- Attach the connector to the site or container level
Modbus TCP connector for auxiliary equipment
If the HVAC or PCS uses Modbus:
- Create a new connector with protocol Modbus TCP
- Enter the device IP and port
- Set the unit ID
- Attach the connector to the specific asset (for example, the HVAC asset)
Multiple connectors
Large BESS sites may have separate data sources per container. Create a connector for each:
- Container A BMS → OPC UA connector 1
- Container B BMS → OPC UA connector 2
- Site-level meter → Modbus connector
Step 5 — Bind variables
BMS bindings (OPC UA)
First, populate the OPC UA connector's data model by running a discovery crawl from the Data Model tab. Then use match suggestions:
- Open the OPC UA connector and go to the Bindings tab
- Click Run Matching to start the AI matching process
- Review the inline suggestions — typical mappings include:
ns=2;s=Rack01.SOCto State of Chargens=2;s=Rack01.Voltageto Rack Voltagens=2;s=Rack01.MinCellTempto Minimum Cell Temperature
- Click Accept All High-Confidence to create bindings in bulk
- Set sampling intervals:
- SOC, voltage, current: 5--10 seconds
- Cell temperatures: 10--30 seconds
- Alarm flags: 5 seconds
PCS and HVAC bindings (Modbus)
- Open the Modbus connector and go to the Bindings tab
- Click the binding action on each variable to open the binding editor
- Use the Modbus address form to configure register type, start address, data format, and byte/word order
- Apply scale and offset transforms as needed (for example, temperature reported in tenths of a degree requires scale 0.1)
Step 6 — Deploy the edge gateway
- Go to the Edge Gateway tab
- Click + Add Deployment
- Enter a name (for example, "BESS Gateway East") and select the architecture
- Copy and run the installation command on the Linux server:
curl -sSL https://api.fleetera.ai/api/edge/install.sh | \
sudo bash -s -- --api-url https://api.fleetera.ai --token <TOKEN>Wait for the deployment to come Online.
Step 7 — Publish and verify
- Check the Config Sync Status on the deployment detail page
- Publish the configuration if needed
- Wait for the sync status to reach In Sync
- Verify data flow through the deployment heartbeats and service statuses
What's next
- Define KPIs for computed metrics like round-trip efficiency and available capacity, or install a ready-made KPI pack
- Create asset associations to link PCS units to their battery racks
- Monitor the deployment on the deployment detail page
- If the site has grid meters or revenue meters, add additional connectors and bindings for those data sources