Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
Async Python client for Intelbras solar inverters (Sungrow WiNet-S) over the LAN
Developer toolsPythonGitHub @hudsonbrendonOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Async Python client for Intelbras solar inverters (Sungrow WiNet-S) over Modbus TCP and the datalogger WebSocket
Taken from the repository README
Loading the full README.
Read the full README ↗This is an async Python client that reads and controls Intelbras solar inverters over the local network, with no cloud
and no account. It was built for the
ha-intelbras-solar-local Home Assistant integration.
Intelbras IONS inverters are rebranded Sungrow string inverters, and their Wi-Fi datalogger is a Sungrow WiNet-S. The datalogger exposes two interfaces without a login, and this library uses both:
502, using the Sungrow SG-RS register map. This is the main data source.8082, which the built-in web UI uses. It provides Wi-Fi and cloud link state,
active faults and alarms, and the commercial model.pymodbus dependency. The library ships a tiny asyncio Modbus TCP client, so it never clashes with the version
that Home Assistant pins.aiohttp) and typed (py.typed).pip install python-intelbras-solar-local
import asyncio
from intelbras_solar_local import IntelbrasSolarClient
async def main() -> None:
async with IntelbrasSolarClient("192.168.31.17") as client:
status = await client.async_get_status()
print(status.model, status.serial, status.work_state)
print(f"{status.power_ac} W now, {status.energy_today} kWh today")
for n, mppt in enumerate(status.mppts, 1):
print(f"MPPT{n}: {mppt.voltage} V x {mppt.current} A = {mppt.power} W")
asyncio.run(main())
| Inverter | Datalogger firmware | Sungrow type code |
|---|---|---|
| Intelbras IONS-5K M5 | WIFI-SV300.001.03.P002 (WiNet-S) | 0x2614 |
Other Intelbras IONS models and Sungrow SG-RS inverters behind a WiNet-S should work as well.
If yours differs, open an issue with the output of examples/status.py.
| Method | Description |
|---|---|
async_get_status() | Returns an InverterStatus from Modbus, with a DataloggerStatus when the WebSocket answers (best-effort) |
async_get_inverter_data() | Modbus-only InverterStatus |
winet.async_get_status() | Datalogger-only DataloggerStatus |
async_get_datalogger_info() | DataloggerInfo: serial, firmware/build/hardware versions, cloud server, timezone, Wi-Fi/Ethernet link |
async_get_wifi_signal() | WifiSignal: joined SSID and RSSI (dBm). It runs a ~3 s station scan, so don't call it every poll |
async_get_inverter_info() | InverterInfo: serial, model, ratings, ARM/MDSP/SDSP/CPLD firmware versions |
async_get_fault_history() | FaultEvent list: recorded faults and warnings, newest first |
async_get_system_parameters() | Parameter list: connecting/reconnecting time, PID recovery, over-frequency derating, power limits, PV connection mode |
async_set_parameter(param, value) | Write a system or protection parameter (number, or an option name such as "enable") |
async_set_power_factor(pf) / async_set_reactive_mode(mode) | Fixed power factor (±0.8–1) and reactive mode (off, power_factor, qt, q_p, q_u) |
async_reboot_datalogger() | Restart the WiNet-S |
async_get_grid_parameters() | GridParameter list: grid-protection thresholds and trip times |
async_set_inverter_on(on) | Starts or stops generation (holding register 5005) |
async_set_power_limit_enabled(enabled) | Switches power limitation on or off (5006) |
async_set_power_limit(percent) | Sets the power limit, 0–100 % (5007) |
The register map and the WebSocket protocol are documented in the docs.
uv venv && uv pip install -e ".[test]"
pytest
ruff check .
MIT © Hudson Brendon. This project is not affiliated with Intelbras or Sungrow.
async_set_clock(datetime)| Sets the inverter clock (4999–5004) |