🔌 Envertech Local – Cloud-Free Envertech Integration for Home Assistant

Local, cloud-free monitoring of Envertech micro-inverters via their TCP interface. The integration reads live data straight from your inverter or gateway on the local network – no cloud account needed, and nothing leaves your LAN.

Envertech logo

Integration domain envertech_local, shown in Home Assistant as Envertech API. Open source on GitHub and installable via HACS.

  • Home Assistant integration
  • Local polling
  • HACS custom repository
  • Energy Dashboard ready
  • MIT license
Category
💻 GitHub projects
Requirements
See section below
Code blocks
4

Envertech Local keeps a persistent TCP connection to your Envertech inverter or gateway and turns the data into Home Assistant sensors: per-panel live values, system totals and daily, monthly and yearly energy. Everything is configured in the UI – no YAML required.

It is maintained by JimmyBones and uses the envertech-local protocol library.

Using the Envertech Solar Portal instead? If your system reports to the Envertech cloud and you just want portal values, have a look at the Envertech Solar cloud integration.

✨ Features

  • 🏠 100 % local: a persistent TCP connection to the inverter (default port 14889), polled every 5 seconds
  • 🔍 Automatic discovery of inverters on your network (UDP broadcast), with manual setup as a fallback
  • ⚡ Per-panel live values: DC input voltage, power, energy, temperature, grid voltage and grid frequency
  • 🏡 System totals: total power and lifetime energy
  • 📅 Daily, monthly and yearly energy sensors that survive restarts
  • 📈 Energy Dashboard ready: all energy sensors use device_class: energy and state_class: total_increasing
  • 🔁 Automatic reconnect with backoff (5 s up to 2 min) if the connection drops
  • 🌍 Translations: English, German and Polish
  • 🧩 Installable via HACS, with no YAML to write

📋 Requirements

  • Home Assistant 2024.6.0 or newer
  • An Envertech micro-inverter or gateway with a local TCP interface on port 14889, for example devices of the EMT series
  • Home Assistant must be able to reach the inverter on TCP port 14889
  • For automatic discovery: UDP broadcasts must work – usually the same subnet/VLAN and host networking for Docker installs
  • Recommended: a fixed IP address (DHCP reservation) for the inverter in your router

📦 Installation

HACS (recommended)

The integration is not in the HACS default list yet (the inclusion request hacs/default#10850 is pending). Until then, add it as a custom repository:

  1. In Home Assistant, open HACS → ⋮ (top right) → Custom repositories.
  2. Add the repository URL below with type Integration.
  3. Search for Envertech API in HACS and click Download.
  4. Restart Home Assistant.
Custom repository URL
https://github.com/jimmybonesde/Envertech_local

Manual installation

  1. Download the latest release.
  2. Copy custom_components/envertech_local into <config>/custom_components/ of your Home Assistant installation.
  3. Restart Home Assistant.

⚙️ Configuration

The integration is set up entirely in the UI through a config flow:

  1. Go to Settings → Devices & services → Add integration and choose Envertech API.
  2. Discovery: the integration spends about 5 seconds searching your network for inverters. It sends UDP broadcasts on ports 48889 (Ethernet/LOCALCON) and 48899 (Wi-Fi). Every inverter found is listed as IP — serial number, except those already set up.
  3. Pick your inverter and check the TCP port (default 14889).
  4. If nothing is found, choose Manual entry and enter the values from the table below.
  5. Add one config entry for each inverter/gateway. The serial number is the unique ID, so an inverter can’t be added twice.
Field (manual entry)DescriptionExample / default
IP addressIP address of the inverter/gateway192.168.1.50
Serial numberThe 8-character hex ID of the inverter9A1B2C3D
TCP portLocal TCP port of the inverter14889

After setup, the inverter-wide sensors show up right away. Per-panel sensors are added automatically once the first data packet reports the panels. Until data arrives, sensors are unavailable.

📊 Sensors

The integration creates one device per config entry (Envertech API <serial>, manufacturer JimmyBones, model Microinverter). The firmware version is shown as the device’s software version.

Per panel / module

These are created for every panel n (1, 2, …) that the inverter reports. The entity names are P<n> …, e.g. sensor.p1_power. With more than one inverter, Home Assistant adds a numeric suffix to entity IDs that would otherwise be identical.

Sensor (entity name)KeyUnitDevice / state classNotes
🔌 P<n> Input Voltageinput_voltageVvoltage / measurementDC input voltage of the panel
⚡ P<n> PowerpowerWpower / measurementCurrent power of the panel/module
🔋 P<n> EnergyenergykWhenergy / total_increasingLifetime energy of the module
🌡️ P<n> Temperaturetemperature°Ctemperature / measurementTemperature reported by the micro-inverter module
🏭 P<n> Grid Voltagegrid_voltageVvoltage / measurementAC grid voltage measured by the module
〰️ P<n> FrequencyfrequencyHzfrequency / measurementAC grid frequency
🆔 P<n> Module Serialmi_sn––Diagnostic entity: serial number of the module

Every per-panel sensor also has a serial_number attribute containing the module serial.

Inverter / system

These sensors belong to the device. Their names are translated (English, German, Polish). With Home Assistant set to English, the entity IDs look like sensor.envertech_api_<serial>_total_power.

SensorKeyUnitDevice / state classNotes
⚡ Total powertotal_powerWpower / measurementSum of all panel powers
🔋 Total energytotal_energykWhenergy / total_increasingSum of all panel lifetime energies
📅 Daily energyenergy_dailykWhenergy / total_increasingEnergy since local midnight
🗓️ Monthly energyenergy_monthlykWhenergy / total_increasingEnergy in the current month
📆 Yearly energyenergy_yearlykWhenergy / total_increasingEnergy in the current year
🧠 Firmware versionfirmware_version––Diagnostic entity, format x/y

Numbers are rounded to 2 decimal places. The daily, monthly and yearly sensors are derived from Total energy: when a new period starts, they store the current total as an offset. They keep offset, period_marker and last_reset as attributes and restore them after a restart, so values don’t jump back to zero when Home Assistant restarts.

The integration does not provide per-panel current (A), per-panel AC power or MPPT-specific values, because the inverter’s local protocol doesn’t report them.

📈 Energy Dashboard

  1. Open Settings → Dashboards → Energy.
  2. Under Solar panels, click Add solar production.
  3. Select sensor.envertech_api_<serial>_total_energy (Total energy). For per-module statistics, add the individual P<n> Energy sensors instead.
Use Total energy rather than the daily/monthly/yearly sensors – the Energy Dashboard does its own period calculations. The period sensors are meant for cards and automations.

🛠️ Troubleshooting

No values after a Home Assistant restart (only a reload helped)

Versions ≤ 1.1.1 could end up without values after a restart: if the inverter wasn’t reachable within 60 seconds of startup (for example at night or because the network wasn’t up yet), the sensors were never created, and a dropped or silent TCP connection was never re-established.

This is fixed in 1.1.2: the connection reconnects automatically with backoff (5 s up to 2 min), sensors are created immediately and stay unavailable until data arrives, and new panels are added as soon as they report. Update to the latest version; if it still happens, enable debug logging (see below) and open an issue.

Sensors are unavailable at night

Micro-inverters are powered by the panels, so they switch off when there is no sunlight. The sensors become unavailable while the inverter is offline and recover on their own in the morning. The energy totals are unaffected.

No inverter found during setup
  • Discovery relies on UDP broadcast, which doesn’t cross VLANs/subnets or Docker bridge networks. Use Manual entry instead.
  • Check that the inverter is powered (daylight!) and connected to your network.
  • Check that port 14889 is reachable:
Bash
nc -vz <inverter-ip> 14889
Per-panel sensors are missing

Panel sensors are created when the inverter first reports the panel. If the inverter was offline during setup, they appear automatically as soon as it sends data. No reload is needed from 1.1.2 on.

Enable debug logging

Add this to configuration.yaml and restart:

YAML
logger:
  default: info
  logs:
    custom_components.envertech_local: debug
    envertech_local: debug

Alternatively use Settings → Devices & services → Envertech API → ⋮ → Enable debug logging, reproduce the problem and then disable it again to download the log.

🔧 Supported devices

The integration supports Envertech micro-inverters and gateways with a local TCP interface on port 14889, for example devices of the EMT series. It is designed for systems with multiple panels.

Your model doesn’t work or reports different data? Please open an issue and include the model, the firmware version and, if possible, anonymized debug logs.

🤝 Contributing & credits

Bug reports, ideas and pull requests are welcome. The unit tests run locally without Home Assistant:

Bash
pip install pytest && pytest -q

Released under the MIT License.

Envertech Local on GitHub

Source code, releases, issues and the full README.

View on GitHub (opens in a new tab)

← Back to all scripts