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.

Download

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:discoveredWhen a new system is createdInitialize system record
user:hem-system:updatedWhen new energy data arrivesRefresh dashboards
user:hem-system:deletedWhen system is removedClean 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 clientReturns all HEM Systems across usersGET /hem-systems
List systems for a specific userReturns all HEM Systems for a given userGET /users/{userId}/hem-systems
Read current system stateReturns current energy data for a specific systemGET /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
DayGranular 5–15 minute samplesPower (kW)
MonthDaily summariesEnergy (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
Enphase15 minFull support
FoxESS5 minFull support
GivEnergy5 minFull support
Huawei5 minFull support
SolarEdge15 minFull support
Solax5 minFull support
Solis5 minNo battery SoC*
SMA5 minDaily Statistics resolution is dependent on user's SMA subscription package and may be 15 min.
Tesla5 minBattery SoC resolution at 15 min intervals

*SoC = State of Charge

Copy linkError Handling & Troubleshooting

Issue Likely Cause Fix
Data with null values
  • Vendor delays
  • Future time buckets
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
  • Bad Request
  • User credentials invalid
Fix query params. Check if the query interval is after the installation date. Guide the user to relink with updated credentials.
HTTP 422 Errors
  • Statistics unavailable
Check Vendor support if a specific vendor and query interval combination is supported.
HTTP 503 Errors
  • Vendor API Errors
Use exponential back-off and retry
isAvailable: false
  • Missing device
  • Missing scope
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.

Was this article helpful?