1. Before You Start
Local mode only. The current version discovers EMS devices over mDNS and polls them over TCP for real-time data. No AEC Cloud account is required.
-
✓
Home Assistant and the EMS devices must be on the same local network (same subnet; nothing in between may block mDNS/UDP broadcast).
-
✓
Supported device types: 85, 90, 99, 131, and 174. More types are being added.
-
✓
Prepare a way to access the Home Assistant configuration directory /config — for example, the Samba share, the File Editor or Studio Code Server add-on, or an SSH terminal.
2. The Installation Package: ha_ems.zip
Obtain the ha_ems.zip package. After extraction it contains the following structure:
ha_ems.zip
├── custom_components/
│ └── ha_ems/
│ ├── manifest.json
│ ├── __init__.py
│ ├── config_flow.py
│ ├── local_mdns.py
│ ├── local_protocol.py
│ ├── sensor.py
│ ├── services.yaml
│ ├── strings.json
│ └── translations/
└── www/
└── ha_ems/
├── ha_ems.yaml
├── ha-ems-local-devices-card.js
└── *.svg
1
Step 1: Put the files into /config
Extract the ZIP into /config. Afterwards you should have these two directories:
/config/custom_components/ha_ems ← the integration (manifest.json etc.)
/config/www/ha_ems ← the dashboard card (ha_ems.yaml, JS card, ...)
Copying the two directories manually works just as well. When finished, confirm these key files exist:
/config/custom_components/ha_ems/manifest.json
/config/custom_components/ha_ems/local_mdns.py
/config/www/ha_ems/ha-ems-local-devices-card.js
/config/www/ha_ems/ha_ems.yaml
2
Step 2: Enable the dashboard in configuration.yaml
Add a standalone YAML dashboard to /config/configuration.yaml:
lovelace:
dashboards:
ha-ems:
mode: yaml
title: HA EMS
icon: mdi:home-lightning-bolt
show_in_sidebar: true
filename: www/ha_ems/ha_ems.yaml
It is fine to skip this step for now; you can add it later (that will need one more restart).
3
Step 3: Restart Home Assistant
The only restart in this guide
Open Home Assistant in a browser and sign in (usually http://homeassistant.local:8123). Then go to Developer tools → YAML and click Restart Home Assistant.
-
The integration files are loaded by Home Assistant.
-
If you did Step 2, the "HA EMS" dashboard appears in the sidebar. It has no data yet — that is normal; it fills in automatically after Step 4.
4
Step 4: Add the integration
-
Open Home Assistant in a browser and sign in (usually http://homeassistant.local:8123; if the page is still open from Step 3, just continue).
-
Go to Settings → Devices & services → Add integration.
-
Search for HA EMS and submit.
-
The config flow creates the local-mode entry directly — no account or password needed.
Once added, device discovery and dashboard data start automatically — no second restart. The dashboard includes the device list, connection status, live power, the energy-flow diagram, control parameters, and diagnostics.
5
Step 5: Check the frontend resource
The integration registers the card resource automatically when it loads; normally no manual action is needed. If a page says the custom card cannot be found, add it manually under Settings → Dashboards → Resources:
URL: /local/ha_ems/ha-ems-local-devices-card.js?v=0.6.2
Type: JavaScript Module
Add the same resource only once. After updating the card files, force refresh the browser (Ctrl+F5).
6
Step 6: Verify the installation
In Developer tools → States, search for these entities:
sensor.ha_ems_mode
sensor.ha_ems_local_devices
sensor.ha_ems_local_device_issues
The devices attribute of sensor.ha_ems_local_devices lists the discovered devices. Every supported device gets a sensor.ha_ems_<device>_energy_parameters entity. The device overview shows the energy-flow diagram once data arrives; if it says "waiting for EnergyParameter data", check the device connection and port first, then the Home Assistant logs.
Troubleshooting
| Symptom | What to do |
| HA EMS not listed when adding an integration |
Check /config/custom_components/ha_ems/manifest.json exists, then restart. |
| No devices discovered |
Confirm HA and the devices share the same subnet and nothing blocks mDNS/UDP broadcast. |
| Device connected but no energy-flow diagram |
The diagram needs an EnergyParameter response; check the entity's protocol_status, protocol_error, and the logs. |
| Page says the custom card is missing |
Confirm the JS file is in /config/www/ha_ems/, the resource type is JavaScript Module, then press Ctrl+F5. |
| Entities show "unavailable" |
Find the first Python exception in the HA logs, fix it, then restart the integration. |
Uninstall
-
✓
Delete the HA EMS config entry under Settings → Devices & services (this stops local scanning and TCP connections).
-
✓
Delete /config/custom_components/ha_ems and /config/www/ha_ems.
-
✓
Restart Home Assistant.
👉
Contact us to get the integration package download link or technical support.
👈