Solis Local Hybrid Inverter — local monitoring & control for Homey
Hi all ![]()
I’ve been building a Homey app that talks directly to a Solis hybrid inverter over your local network — no cloud, no SolisCloud account, no internet dependency. It reads everything in real time over Modbus TCP, and lets Homey control charging, discharging, work mode and grid export.
What it does
Monitoring
- Solar production, battery power & state of charge, grid power, home load, voltages, temperature and work mode
- Three separate devices — Inverter, Battery and Grid — so the Homey Energy dashboard gets the right roles (production / home battery / grid import-export)
- A grid-limiting indicator that tells you when the inverter is throttling production (e.g. volt-watt overvoltage curtailment), instead of leaving you guessing why output dropped
Control
- Force charge / discharge the battery, set work mode and reserve SOC
- Cover the house from the battery — a closed-loop discharge that supplies exactly what the house is drawing and holds your grid at zero, instead of a fixed power that dumps the surplus onto the grid
- Battery discharge blocked / allowed — hold the pack during cheap and mid-price hours so the grid carries the house, then release it into the expensive peak. Solar still charges it while blocked, and it needs no optimiser: any Homey price app that knows cheap from expensive drives it
- A “Limit solar output” switch for any Flow — e.g. throttle production when prices go negative — plus a separate set/clear grid-export limit and a soft inverter on/off
- Feed the app your whole-home data: Report grid power (a P1 reading, + import / − export), Report house load, Report EV charge power, and Report external solar production for panels on a second inverter
- Follow-the-sun triggers that recommend an EV charging current to soak up surplus solar
- 34 Flow cards in total (8 triggers, 5 conditions, 21 actions)
Works with AC-coupled setups too. If your battery is on the Solis but your pannd entirely, feed the other inverter’s AC power in with Report external solarproduction and the app gets the full picture — home consumption, the grid guard and the optimizer all use it.
How it connects
The app needs one thing: a Modbus TCP endpoint on your LAN at a fixed IP. You give it an IP, a port and a unit ID, and it doesn’t care what’s behind them.
I run a small wired RS485-to-Ethernet gateway on the inverter’s data-logger (COM) port, and the manual has a full step-by-step wiring guide with photos and a pinout. But that’s my setup, not
a requirement — if your existing data logger exposes Modbus TCP and holds a connect instead. I explain below why I ended up wiring a gateway.
Only one Modbus master can talk to the inverter at a time, so don’t run a secondparallel.
Requirements & hardware
- A Solis hybrid inverter and a reliable Modbus TCP endpoint on your LAN at a fixeRS485-to-Ethernet gateway (e.g. Waveshare RS485 TO ETH) on the COM port, or yourexisting data logger if it exposes Modbus TCP and holds a session
- Homey Pro
- Developed and tested on an S6-EH3P10K2-H with a Pylontech battery. Reports from other Solis hybrids very welcome
A few recipes in the manual
- Negative-price “don’t feed in” — absorb the surplus into the battery, then stop exporting - Save the battery for expensive hours — hold its charge while power is cheap, thento the price peak, driven by any Homey price app (Tibber, Frank, EPEX…), nooptimiser needed - True home consumption by combining a P1 meter with the inverter’s AC power
## Status
In beta on the Test track. Reading is solid, and grid-charge, discharge and load-fin daily use. The export-limit writes are verified against Solis’s officialregister map but still being field-tested — so keep an eye on your inverter after the first commands, and report anything odd.
Manual: Solis Local Hybrid Inverter for Homey — User Manual
Install (beta): https://homey.app/en-us/app/nl.ora-Hybrid-Inverter/test/
Unofficial community app — not affiliated with or endorsed by Solis / Ginlong. Feer reports from other models are hugely appreciated
—
##
What’s new — v0.1.81
- New: a Flow action to switch the charge trim on or off, so your own energy mthe way for a deliberate grid charge. - Fixed: charging the battery from the grid no longer cancels itself. The trim used to read the charge as unwanted grid use and shut it down. - Fixed: the grid protection now counts solar from a separate inverter, so it than your connection can carry.
- Improved: the grid power on the device and in the Energy tab now follows the meter you feed in, instead of the inverter’s own reading. - Clearer Flow cards: every card now explains what it does, including the differen charging and actually starting a charge.
Recent highlights
- Cover the house from the battery — closed-loop discharge, no more exporting the - Report external solar production — full support for AC-coupled systems - Battery + EV grid-charge together inside one cheap hour, with the connection gual household load so a passing cloud can’t push you over the main fuse
- Battery discharge blocked / allowed, straight from a Flow
Design notes: why local Modbus, and why I wired a gateway
Decision 1 — Local Modbus, not the cloud. Solis offers a cloud API (SolisCloud). It’s the easy path: no wiring, works from anywhere. But for real-time battery control it’s the wrong tool
- Latency and rate limits. Cloud round-trips are seconds, and the API is throttled. A price optimiser that re-evaluates the battery setpoint every few seconds simply can’t live on a clouAPI.
- Reliability. If your internet, Solis’s servers, or the API has a bad day, your battery control goes with it. I didn’t want my home energy strategy depending on someone else’s uptime. - Keeping it at home. The stock WiFi stick continuously reports to SolisCloud,er’s servers overseas. That’s not a knock on Solis — it’s just not what we want for a home setup: our energy data and the control loop should stay on our own network.
So the app speaks Modbus TCP locally, on the LAN, with no cloud in the loop — reads and writes.
Decision 2 — why I moved off the Solis WiFi stick. The stick plugs into the COM port, pushes data to SolisCloud, and can also expose Modbus locally — so the tempting option was to talkModbus to the stick and leave everything as-is. That’s what I did first, and the at it at the stick’s IP and it works. For monitoring it was fine. For sustainedcontrol on my unit it wasn’t: - It’s a single Modbus “slot.” It’s really there to serve SolisCloud and only lets one client talk at a time, so you’re constantly contending with its own cloud traffic. - It reverts to the cloud. In practice it periodically flipped back to its Sold local writes after ~13 minutes. Invisible for monitoring; fatal for a controlloop — the inverter would silently drift back to self-use mid-dispatch. - No persistent session. The inverter’s real-time dispatch is guarded by a wat the control socket closes. The stick’s behaviour made a stable, held-open sessionimpossible.
What I did instead. I pulled the stick and wired a small Waveshare RS485-TO-ETH adapter straight onto the inverter’s COM port as a transparent Modbus TCP↔RTU gateway. Now there’s no clouclient competing for the bus, the ~13-minute ceiling is gone (proven with 25 minut, and in daily use since), a persistent socket keeps the dispatch watchdog happy,and nothing leaves the LAN — the inverter no longer phones home at all.
To be clear: that’s what I measured on my stick and its firmware, not a universal verdict. Others report running Modbus TCP through the data logger successfully, including for control — if yours holds a session under load, you don’t need a gateway at all. I went wired beause I wanted the inverter off the internet entirely.
The trade-offs I accepted, to be upfront:
- You give up SolisCloud unless you re-add a logger elsewhere. For me Homey isl surface now — a feature, not a loss. - It’s a hardware change. You’re wiring an adapter into the inverter’s COM port — a bit of DIY, and something to weigh re: warranty with your installer. - Single-master discipline. Only one thing can be Modbus master, whichever rourialises every request onto one connection. You can’t also run a separate HomeAssistant Modbus poller against the same inverter — pick one master.
A couple of Solis-specific quirks had to be handled in code (reads must be small contiguous blocks; the “enable dispatch” register has to be the very last write, or a companion write resets it). Nothing exotic, but it’s why direct Modbus is more than "just point at the po
Why it was worth it. The payoff is a fully local, cloud-independent control loe battery — charging on cheap or surplus power, discharging into the evening peak — and keeps driving it without timing out or fighting the cloud. That reliability is the foundation everything else is built on.


