A native Home Assistant custom integration for Eversolar solar inverter Power Management Units (PMUs).
NOTE: This current version is stand-alone and embeds the pmu protocol directly. The written rules of HACS
specifically state that this is not a valid arrangement for inclusion in the hacs/default repo.
Therefore, release v1.2.1 is fixed - as is, and can be installed as a custom repo, external to the
HACS store. The next release of this software is already in build.
The new protocol components are already extracted and available as a pypi resource:
https://pypi.org/project/eversolar-pmu-protocol/
Repository: https://github.com/aburow/eversolar-pmu-ha
- Local polling over TCP/IP (no cloud)
- HACS compatible (
hacs.jsonpresent) - Config flow + options flow
- 14 sensor entities, 2 binary sensors, and 1 number entity
- No external Python dependencies
flowchart LR
subgraph HA[Home Assistant]
UI[UI / Automations]
INT[Eversolar PMU Integration]
COORD[DataUpdateCoordinator]
ENT[Sensors / Binary Sensors / Number Entity]
end
PMU[Eversolar PMU / Inverter]
UI --> INT
INT --> COORD
COORD --> ENT
INT <-->|TCP/IP Polling| PMU
- Open Home Assistant and go to HACS.
- Go to Integrations.
- Open the three-dot menu and select Custom repositories.
- Add:
https://github.com/aburow/eversolar-pmu-ha - Category: Integration.
- Click Create, then search for “Eversolar PMU”.
- Install and restart Home Assistant.
- Copy
custom_components/eversolar_pmu/into your Home Assistantcustom_components/directory. - Restart Home Assistant.
After restart:
- Go to Settings → Devices & Services.
- Click Add Integration.
- Search for “Eversolar PMU”.
- Enter the host/IP of your inverter.
Initial config fields:
- Host: required (example:
192.0.2.10) - Port: default
8080 - Scan interval: default
60seconds (range10-300) - Timeout: default
5.0seconds (range1.0-30.0)
Open the integration’s Configure button to set options:
- Scan interval:
10-300seconds - Timeout:
1.0-30.0seconds - Auto sync enabled:
true/false(defaultfalse) - Auto sync delay:
0-60seconds (default1) - PV voltage threshold:
1-200V (default50) - PV voltage stats cutoff:
1-200V (default20)
Notes:
- The PV voltage cutoff is also exposed as a number entity in the UI.
- Auto sync settings control automatic PMU time synchronization behavior.
Core telemetry:
| Name | Unit | State class | Notes |
|---|---|---|---|
| Power | W | measurement | AC power output |
| AC Voltage | V | measurement | AC output voltage |
| AC Frequency | Hz | measurement | Grid frequency |
| Energy Today | kWh | total | Daily energy |
| Total Energy | kWh | total_increasing | Lifetime energy |
| Total Operation Hours | h | total_increasing | Lifetime run hours |
| PV Voltage | V | measurement | PV string voltage |
| PV Current | A | measurement | PV string current |
| PV Power | W | measurement | Estimated PV power |
Additional sensors:
| Name | Type | Category | Notes |
|---|---|---|---|
| AC Online Time | timestamp | diagnostic | Last time AC reported online |
| AC Offline Time | timestamp | diagnostic | Last time AC reported offline |
| Operation Mode | enum/text | diagnostic | Current inverter mode |
| Error Message | text | diagnostic | Decoded error flags |
| Daily Efficiency | % | diagnostic | Derived efficiency metric |
| Name | Meaning |
|---|---|
| DC Online | On when inverter is not fully down |
| Time Sync | On when last time sync succeeded |
| Name | Unit | Range | Meaning |
|---|---|---|---|
| PV Voltage Stats Cutoff | V | 1-200 | Suppresses stats when PV is below cutoff |
Synchronize the PMU’s internal clock to the host time.
Service data:
config_entry_id(required): the integration instance ID from Settings → Devices & Services
Example automation:
automation:
- alias: Sync Eversolar Time Daily
trigger:
- platform: time
at: "02:00:00"
action:
- service: eversolar_pmu.sync_time
data:
config_entry_id: "abc123def456"Check basic connectivity:
ping 192.0.2.10
nc -zv 192.0.2.10 8080Then:
- Confirm the inverter is powered on.
- Confirm port
8080is reachable from Home Assistant. - Increase the timeout option if the network is slow.
- Wait at least one full scan interval after setup.
- Check Home Assistant logs for errors.
- If PV voltage is low, stats-oriented sensors may be suppressed by the cutoff setting.
logger:
logs:
custom_components.eversolar_pmu: debugEntity IDs will look like:
sensor.eversolar_inverter_<inverter_id>_<sensor_key>
Example keys include: power, ac_voltage, ac_frequency, energy_today, total_energy, total_operation_hours, pv_voltage, pv_current, pv_power.
You can add multiple instances:
- Settings → Devices & Services → Add Integration
- Search for “Eversolar PMU”
- Enter a different inverter host/IP
Each instance creates its own device and entities.
- Issues and feature requests:
https://github.com/aburow/eversolar-pmu-ha/issues - Documentation and source:
https://github.com/aburow/eversolar-pmu-ha
This project is licensed under GPL-3.0. See LICENSE.
- Integration version:
1.2.0(fromcustom_components/eversolar_pmu/manifest.json) - Home Assistant: modern versions recommended
- Python: matches Home Assistant runtime