Codync
免費、開源的 1:1 替代方案,取代 Grok Bot 與 Muse。從 iPhone、Mac 或 Linux 桌面將 Claude Code、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) |