HEM System
The Home Energy Management (HEM) System models how energy devices work together in the real world. It links a user’s inverter, battery, and meter into one synchronized system within the Enode API - laying the foundation for consistent, end-to-end energy insights. This guide will help you understand how HEM Systems work, how to integrate them, and how to make the most of their synchronized data.
Copy linkWhy HEM Systems?
When users install solar panels, batteries, and smart meters, vendors manage them as a unified system. Traditional device-by-device APIs require manual synchronization of data across devices, often resulting in inconsistencies or incomplete statistics.
HEM Systems mirror how vendors organize devices, providing:
- Synchronized data collection: All devices are polled together, ensuring consistency across generation, consumption, and storage metrics.
- Comprehensive statistics: Access detailed time series data with 5–15 minute resolution (vendor dependent).
- Simplified development: A single API endpoint for complete home energy insights that match what users see in vendor apps.
- Optimization-ready data: Accurate, synchronized data enables both behind-the-meter and grid-level optimization strategies.
Copy linkConceptual Model
HEM Systems provide visibility across six core energy flows between the household, devices, and the grid including consumption, generation, battery charge and discharge, and grid import and export. Together, they represent the complete picture of a user's home energy ecosystem.
In Enode's model:
- Device: The physical hardware owned by the user, such as an inverter, meter, or battery.
- Asset: Enode's representation of that device in the API.
- HEM System: A synchronized aggregation of related assets at a single site, grouped by vendor and location. The HEM System reflects the vendor's natural site structure, enabling unified monitoring and analysis.
Each HEM System links these assets into one consistent data structure, ensuring synchronized statistics and a complete view of home energy performance.
Copy linkGetting Started: Link devices, view status, query statistics
Copy linkLinking
HEM Systems work best when users link multiple device types in one flow. Use multi-type linking to request scopes across inverters, batteries, and meters under a single vendor account. Learn more in the Multi-type linking guide.
After linking, Enode automatically creates a hem-system
for devices that share the same location.
Copy linkDiscovery
After creation, the hem-system
sends webhook updates whenever new data is available. Learn more about Webhooks at Enode.
Event | When sent | Use case |
---|---|---|
user:hem-system:discovered | When a new system is created | Initialize system record |
user:hem-system:updated | When new energy data arrives | Refresh dashboards |
user:hem-system:deleted | When system is removed | Clean up linked assets |
Copy linkList and Read HEM Systems
Use the following endpoints to list available systems or retrieve the current state of a specific system.
Action | Description | Endpoint |
---|---|---|
List all systems for your client | Returns all HEM Systems across users | GET /hem-systems |
List systems for a specific user | Returns all HEM Systems for a given user | GET /users/{userId}/hem-systems |
Read current system state | Returns current energy data for a specific system | GET /hem-systems/{hemSystemId} |
Assets linked to a HEM System will have hemSystemId
in their payload. This can be used to determine the devices belonging to a system. Example payload can be referred from Batteries APIAPI section.
Copy linkStatistics
Use the statistics endpoints to retrieve power and energy data for generation, consumption, import, and export - helpful for analyzing both recent and historical flows.
Interval | Description | Values |
---|---|---|
Day | Granular 5–15 minute samples | Power (kW) |
Month | Daily summaries | Energy (kWh) |
Data buckets under 1 hour report power values; hourly or longer intervals report energy data. All timestamps use the HEM System's timezone.
Example Request
GET /hem-systems/{hemSystemId}/statistics?interval={YYYY-MM-DD}
Copy linkData Availability
Not all metrics are available for every vendor or configuration. For example, battery SoC (state of charge) is not available for all vendors when querying at the month interval, but we include (as not available) it in the response for completeness. Each time series includes an isAvailable
flag to indicate availability.
Example Response
{
"timeseries": {
"generation": {
"isAvailable": true,
"unit": "kW",
"unitType": "Power",
"sampling": {
"mode": "bucketed",
"resolution": "PT5M"
},
"timezone": "Europe/Berlin",
"data": [
...
{
"t": "2025-10-08T06:00:00+02:00",
"v": 0.001
},
...
],
},
"import": {
"isAvailable": false,
"reason": "No data available for this timeseries for this interval"
},
...
}
}
Copy linkTest HEM Systems on Sandbox Editor
If you would like to test HEM Systems API with virtual devices, use our sandbox editor to create a virtual account. Please refer to the sandbox guide for guidance on how to add virtual devices and link users. By default, solar inverters, home batteries and meters on a virtual account will be attached to a single HEM System. After linking, you should be able to:
- get webhook events such as
user:hem-system:discovered
,user:hem-system:updated
,user:hem-system:deleted
based on the lifecycle of devices. - fetch hem-systems through the APIs
Copy linkCurrent Vendor Support
HEM Systems are available only for vendors that support all three asset types: inverter, battery, and meter. This ensures full data synchronization across devices, though some differences in data resolution and metric availability remain across vendors. All vendors fully support the monthly statistics resolution.
Learn more about vendors Enode supports on our Capabilities page.
Vendor | Daily Statistics Resolution | Notes |
---|---|---|
Enphase | 15 min | Full support |
FoxESS | 5 min | Full support |
GivEnergy | 5 min | Full support |
Huawei | 5 min | Full support |
SolarEdge | 15 min | Full support |
Solax | 5 min | Full support |
Solis | 5 min | No battery SoC* |
SMA | 5 min | Daily Statistics resolution is dependent on user's SMA subscription package and may be 15 min. |
Tesla | 5 min | Battery SoC resolution at 15 min intervals |
*SoC = State of Charge
Copy linkError Handling & Troubleshooting
Issue | Likely Cause | Fix |
---|---|---|
Data with null values |
| There may be nulls for few historical buckets due to connection issues between the system and the vendor cloud or data loss. Treat nulls as nulls in your visualizations. |
HTTP 400 Errors |
| Fix query params. Check if the query interval is after the installation date. Guide the user to relink with updated credentials. |
HTTP 422 Errors |
| Check Vendor support if a specific vendor and query interval combination is supported. |
HTTP 503 Errors |
| Use exponential back-off and retry |
isAvailable: false |
| If scopes are missing, reason will clarify with a message - missing_scope_{{value}} Guide the user to a link session with the required scopes. |
Copy linkAPI Reference
For complete API documentation see the HEM System API ReferenceAPI.
Copy linkSupport
Need help integrating HEM Systems?
- Beta Access: Contact your Customer Success Manager
- Technical Questions & Bug Reports: Report issues through Zendesk
We're actively developing HEM Systems and welcome your feedback to help shape the product.