Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、Codex、Cursor 以及 40 多个编码代理作为持久机器人使用。支持群组聊天、线程、应用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Async Python client for Intelbras solar inverters (Sungrow WiNet-S) over Modbus TCP and the datalogger WebSocket
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 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) |