No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Randy Carter a04fe05828
Some checks are pending
Validate with HACS / validate (push) Waiting to run
Validate with hassfest / validate (push) Waiting to run
Update copyright holder in LICENSE to JImmyB0nes (#3)
Co-authored-by: JImmyB0nes <[email protected]>
2026-11-14 13:29:43 +01:00
.github Bump actions/checkout from 4 to 7 2026-11-09 08:56:50 +00:00
custom_components Move repository to JImmyB0nes/Envertech_local; update links and codeowners (1.3.6) (#2) 2026-11-14 13:20:00 +01:00
tests Add poll-interval option (5/10/30 s) via options flow 2026-10-19 16:47:00 +00:00
.gitignore Disable CI/test workflows 2026-11-08 18:03:06 +01:00
.python-version Disable CI/test workflows 2026-11-08 18:03:06 +01:00
hacs.json Rename integration display name to 'Envertech Local' (v1.1.4) 2026-10-19 15:34:24 +00:00
LICENSE Update copyright holder in LICENSE to JImmyB0nes (#3) 2026-11-14 13:29:43 +01:00
pyproject.toml fix: hassfest manifest sort and HA-free pytest import (#4) 2026-09-11 10:11:52 +02:00
README.md Move repository to JImmyB0nes/Envertech_local; update links and codeowners (1.3.6) (#2) 2026-11-14 13:20:00 +01:00

Envertech Local icon

Envertech Local for Home Assistant

Local, cloud-free monitoring of Envertech micro-inverters via their TCP interface.

HACS Custom Latest release License: MIT

Features · Installation · Configuration · Sensors · Energy Dashboard · Troubleshooting

Envertech Local (integration domain envertech_local) reads live data straight from your Envertech inverter/gateway on your local network. You don't need a cloud account, and nothing leaves your LAN.

This fork is maintained by JimmyBones. It is based on Kaiserdragon2/Envertech_local.


✨ Features

  • 🏠 100 % local: a persistent TCP connection to the inverter (default port 14889), polled every 5 seconds (adjustable: 5/10/30 s)
  • 🔍 Automatic discovery of inverters on your network (UDP broadcast), with a manual setup option as 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 / yearly energy sensors that survive restarts
  • 📈 Energy Dashboard ready: all energy sensors use device_class: energy and state_class: total_increasing
  • 🌍 Translations: English, German and Polish
  • 🧩 Installable via HACS, with no YAML to write

📦 Installation

The HACS default listing still points to the old jimmybonesde/Envertech_local address while the move to this repository is processed. Until then, add it as a custom repository:

Add this integration as a HACS custom repository.

  1. In HACS, go to Integrations → ⋮ → Custom repositories and add https://github.com/JImmyB0nes/Envertech_local (category: Integration).
  2. Search for Envertech Local, click Download and wait for the installation to finish.
  3. Restart Home Assistant.

Manual

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

Requires Home Assistant 2024.6.0 or newer.

⚙️ Configuration

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

Open your Home Assistant instance and start setting up a new integration.

  1. Go to Settings → Devices & services → Add integration and choose Envertech Local.
  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 it finds 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:
    • IP address of the inverter/gateway
    • Serial number: the 8-character hex ID of the inverter, e.g. 9A1B2C3D
    • TCP port: default 14889
  5. Add one config entry for each inverter/gateway. The serial number is the unique ID, so an inverter can't be added twice.

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.

💡 Home Assistant must be able to reach the inverter on TCP port 14889. Discovery also needs UDP broadcasts to work, which usually means the same subnet or VLAN and host networking for Docker installs. Give the inverter a fixed IP address (DHCP reservation) in your router.

Poll interval (options)

By default the inverter is polled every 5 seconds. This is configurable per inverter:

  1. Go to Settings → Devices & services → Envertech Local → ⋮ (three dots) → Configure.
  2. Choose the Poll interval: 5 s, 10 s or 30 s.
  3. Save. The stream is restarted immediately with the new interval – no HA restart needed.

A longer interval reduces traffic on the local network, which can be useful when you run several inverters or when the inverter occasionally drops short polls. The default 5 s gives the freshest values and is recommended for most setups.

📊 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. If you have more than one inverter, Home Assistant adds a numeric suffix to entity IDs that would otherwise be the same.

Sensor (entity name) Key Unit Device class State class Notes
🔌 P<n> Input Voltage input_voltage V voltage measurement DC input voltage of the panel
⚡ P<n> Power power W power measurement Current power of the panel/module
🔋 P<n> Energy energy kWh energy total_increasing Lifetime energy of the module
🌡️ P<n> Temperature temperature °C temperature measurement Temperature reported by the micro-inverter module
🏭 P<n> Grid Voltage grid_voltage V voltage measurement AC grid voltage measured by the module
〰️ P<n> Frequency frequency Hz frequency measurement AC grid frequency
🆔 P<n> Module Serial mi_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.

Sensor Key Unit Device class State class Notes
⚡ Total power total_power W power measurement Sum of all panel powers
🔋 Total energy total_energy kWh energy total_increasing Sum of all panel lifetime energies
📅 Daily energy energy_daily kWh energy total_increasing Energy since local midnight
🗓️ Monthly energy energy_monthly kWh energy total_increasing Energy in the current month
📆 Yearly energy energy_yearly kWh energy total_increasing Energy in the current year
🧠 Firmware version firmware_version – – – Diagnostic entity, format x/y

Numbers are rounded to 2 decimal places. The daily/monthly/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). If you want 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.
  • A dropped or silent TCP connection was never re-established.

This is fixed in 1.1.2 (PR #8):

  • The connection now reconnects automatically with backoff (5 s up to 2 min).
  • Sensors are created immediately and stay unavailable until data arrives.
  • New panels are added as soon as they report.

Update to the latest version. If it still happens, please enable debug logging (see below) and open an issue here or upstream.

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: 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 when you set it up, 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:

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

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

🔧 Supported devices

This 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.

Does your model not work, or does it report different data? Please open an issue and include the model, the firmware version and, if possible, anonymized debug logs.

🤝 Contributing

Bug reports, ideas and pull requests are welcome:

  • 🐛 Report an issue
  • 🔀 Open a pull request
  • ✅ Run the unit tests locally with pip install pytest && pytest -q (no Home Assistant needed; CI does not run in this repository)
  • ⭐ Star the repository if you find it useful

🙏 Credits & license

Released under the MIT License.