You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
👉 For end users
No more Token Proxy container.
Authentication happens entirely inside the integration. You can stop/remove the separate “UGREEN API Token Proxy” Docker container after updating.
Less confusion during setup.
The “Verify SSL” checkbox has been removed. The “Use HTTPS” option remains, but certificate verification toggles are no longer exposed, which prevents common misconfigurations.
Options changes now take immediate effect.
Editing host/port/username/password via the Options screen now correctly updates the active connection (previously only the initial config applied).
Hungarian language support.
Thanks to @gyuris for contributing a Hungarian translation for the config/option flows - much appreciated buddy! :)
👉 For fellow developers (internal changes)
Authentication & security
Removed dependency on the Token Proxy; replaced the proxy token flow with direct UGOS login: fetch public RSA/SPKI key, encrypt password (RSAES-PKCS#1 v1.5), call /verify/login, and append the returned token to subsequent requests. Credentials never leave Home Assistant anymore.
Removed: Proxy fields like auth_port/verify_ssl in the functional path; any external tooling expecting the proxy endpoints (/token, /credentials) is obsolete for the integration.
Data flow & runtime behavior
WebSocket keep-alive integrated; ws_keepalive() returns coroutine for Coordinator usage.
UpdateWebSocket() logic from the Docker helper has been ported and streamlined inside api.py.
Dynamic entities are built from a central registry (_config_definitions / _status_definitions), ensuring a uniform approach for LAN/USB/RAM/UPS/Fans/Storage.
Added consistent handling of “single vs multiple” entities (single_compact=True).
count_dynamic_entities introduced as cached API helper to pre-calculate #RAM, #Disks, #Volumes, etc.
Coordinators:
Config (60s), State (5s), WebSocket (25s) each with grouped API calls per endpoint.
Options-first fallback to entry.data ensures runtime updates on config edits.
Utilities / structure
get_entity_data_from_api(...) is centralized in utils.py and used by all coordinators.
make_entities(...) implemented with single_compact flag and unified placeholders.
build_device_info(...) implemented for Pools, Volumes, Disks.
api.py restructured: Public methods grouped at top, long logic factored into _count_dynamic_entities, _ws_keepalive, etc. for readability.
Code ordering and inline comments cleaned up across modules (__init__.py, sensor.py, button.py).