A Home Assistant integration to control and monitor your SolaX inverter locally over HTTP.
- 📊 Real-time monitoring: MPPT power, energy production, temperature
- 🔄 Inverter control: turn on/off via a switch, adjust the production ratio (0-100%) via a number entity
- 📈 Production tracking: daily and cumulative production
- 🕐 History: last-update timestamp
- 🌍 Multi-inverter support: X1 Micro 2-in-1
- 🔐 Local connection: no cloud, fully local
- 🇫🇷 Localized UI: French, English and Dutch (entities fully translated according to Home Assistant's language)
- ⚙️ Editable afterwards: change the IP address or the poll interval without recreating the integration
- 🌙 Automatic night pause: no unnecessary requests overnight (based on sunset/sunrise, 1h margin)
| Sensor | Description | Unit |
|---|---|---|
mppt1_puissance |
MPPT 1 power | W |
mppt1_voltage |
MPPT 1 voltage | V |
mppt1_intensite |
MPPT 1 current | A |
mppt2_puissance |
MPPT 2 power | W |
mppt2_voltage |
MPPT 2 voltage | V |
mppt2_intensite |
MPPT 2 current | A |
inverter_voltage |
Inverter output voltage | V |
inverter_intensite |
Inverter output current | A |
inverter_puissance |
Inverter output power | W |
inverter_freq |
Inverter frequency | Hz |
temp |
Inverter temperature | °C |
prod_auj |
Today's production | kWh |
prod_total |
Cumulative total production | kWh |
mode |
Operating mode | WaitMode/CheckMode/NormalMode |
ip |
Inverter IP address | - |
num_inverter |
Serial number | - |
last_update |
Last update | timestamp |
- Binary Sensor: online/offline status
- Switch: turn the inverter on/off
- Number: production ratio (0-100%) - read directly from the inverter at Home Assistant startup, on every inverter reconnection, and after every change
Service: solax_local.refresh_all
Forces an immediate update of all configured inverters without waiting for the poll interval.
Usage in an automation:
service: solax_local.refresh_allOr from Developer Tools:
- Developer Tools > Services
- Select
SolaX Local X1 Micro: Refresh all inverters - Click Run
- Home Assistant 2023.12+
- Network access to the SolaX inverter
- The inverter's IP address and serial number
Once the integration is accepted into the official HACS store:
- Open Home Assistant
- Go to HACS > Integrations > Explore & download
- Search for "SolaX Local X1 Micro"
- Click Download
- Restart Home Assistant
In the meantime (or to follow a specific branch/version), add it as a custom repository:
Or manually:
- Open Home Assistant
- Go to HACS > Integrations
- Click the menu (⋯) > Custom repositories
- Add the URL:
https://github.com/Knetus56/solax_local_x1_micro - Search for "SolaX Local X1 Micro"
- Click Install
- Restart Home Assistant
- Download the latest release
- Extract into
custom_components/solax_local/ - Restart Home Assistant
- Settings > Devices & services > Integrations
- Click Add integration
- Search for and select SolaX Local X1 Micro
- Fill in the details:
- IP: the inverter's IP address (e.g.
192.168.1.100) - Inverter type: select the model
- Serial number: the inverter's serial number
- Poll interval (optional): update frequency in seconds (default: 300s)
- IP: the inverter's IP address (e.g.
The serial number is automatically normalized to uppercase.
You no longer need to remove/recreate the integration to change the IP address or the poll interval:
- Settings > Devices & services
- Find the SolaX Local X1 Micro card > click Configure (⚙️ icon)
- Update the host and/or the poll interval
- Submit — the integration reloads automatically with the new values
The inverter type and serial number stay fixed after creation (they identify the device); recreate the integration to change them.
By default, the integration polls the inverter every 300 seconds (5 minutes). You can adjust it during setup.
SolaX inverters turn off their Wi-Fi dongle at night: any request sent during that time fails anyway (timeout). The integration avoids these useless calls by relying on the sun.sun entity, built into Home Assistant natively (the sun component, almost always present — it computes the actual sunrise/sunset based on the geographic position and time zone configured in Settings > System > General).
How it works: on every poll cycle, the integration checks whether the sun has been down for more than 1h and will stay down for at least 1h more. Only then — a night "settled in", far from any transition — is the HTTP request skipped outright. This double check (1h before and 1h after the current instant) naturally creates a symmetric 1-hour margin around the actual sunset and sunrise, without having to compute the astronomical times itself:
actual sunset actual sunrise
│ │
── normal requests ──────┤── 1h margin ──┤ PAUSE (no request) ├── 1h margin ──┤── normal requests ──
│ │
sunset + 1h sunrise - 1h
Concretely: if the sun sets at 8:00 PM, the integration keeps polling the inverter until 9:00 PM, then pauses. If sunrise is at 7:00 AM the next day, it resumes at 6:00 AM — so as not to miss an inverter that starts up a bit earlier or later than expected (clouds, season, the inverter's internal clock drifting, etc.).
If the sun.sun entity doesn't exist (Sun component disabled or manually removed): the night pause disables itself automatically and silently — the integration polls normally on every cycle, day and night, exactly as before this feature was added. No configuration is needed for this case, and no error is raised.
Effect on sensors during the pause: same as a regular network error — instantaneous readings (power, voltage, current, frequency, temperature) go to 0, mode shows "Unknown", prod_auj/prod_total keep their last known value (see next section). The binary_sensor.online sensor turns Off.
This pause isn't configurable yet (no on/off toggle or margin setting in the UI) — open an issue on the repo if you need one.
The following entities are hidden by default (Advanced tab):
- Mode status
- IP address
- Serial number
- Last update
To show them: Settings > Devices & services > select the device > Show disabled/hidden entities
- Normal at night (automatic night pause, see above) or after a one-off request error —
modegoes back to "Unknown" until the next successful poll - Check that the IP address is correct
- Check that the inverter is online and powered
- Check the network connectivity between HA and the inverter
- Increase the
poll intervalif you're seeing network timeouts
- Check the logs: Settings > System > Logs
- Look for connection errors
- Restart Home Assistant
- This means the selected model isn't recognized
- Double-check the selection made during setup
- v1.4.7 (2026-09-21) - New
numberentity to control the inverter's production ratio (0-100%) locally, without the SolaX app. Writing (build_set_ratio_packet) comes from the official app's JS; reading (build_get_ratio_packet) had no available documentation and was reverse-engineered empirically instead, by comparing responses before/after a known write to locate the register offset. Since the inverter doesn't expose this setting in its regular telemetry, the displayed value is confirmed with a real read at Home Assistant startup, on every inverter reconnection (morning restart after the overnight Wi-Fi shutdown), and 2s after every manual change; it resets to "unknown" at midnight so it never shows an unverified value overnight.
- https://github.com/CurlyMoo for the reverse-engineering work here: squishykid/solax#191