π For end users
β Users of the "Example Dashboard": Please update the dashboard with latest code after installation (see Wiki). β
- Easy onboarding through Zeroconf discovery - automatic NAS detection via mDNS, redesigned setup with pre-filled host and title.
- Enhanced device registry hierarchy - Pools, Volumes and Disks now register as proper sub-devices with brand / model metadata.
- Improved WebSocket keep-alive - automatic re-authentication and adaptive back-off.
- New summary sensors - aggregated per Pool / Volume / Disk, with all related data as attributes (=easy use in dashboards).
- Scaled throughput metrics - automatic conversion from B/s to kB/s / MB/s / GB/s in addition to raw values.
- Disk sleep state entities added again (thanks for reporting).
- Shutdown button repaired (thanks for reporting).
- Single pool NAS - 'pool_1' instead of just 'pool' also in entity names (a further fix for the strange UGOS behavior).
- Example Dashboard Page reworked - now with cleaner visuals by using summary entities for pools / volumes / disks.
π For fellow developers
- Device meta-caches introduced in
__init__.py, with structured DeviceInfo factories indevice_info.pyfor pool β volume β disk relationships. - Scaling & templating helpers in
utils.py:scale_bytes_per_second,determine_unit,format_dynamic_size, andapply_templates / make_entitiesfor index-based dynamic entities. - HTTP client & login flow: stronger RSA-based authentication, token refresh on code 1024, and reduced log noise (
api.py). - Entity naming: βlabel-firstβ convention for summary sensors; stable
_summarysuffix for entity IDs. - Recorder optimization: summary attributes explicitly excluded from the Home Assistant recorder to keep the database lightweight (it's all redundant data).
- Device relations: Root device via entry / serial; child devices via pool / volume / disk keys with proper
via_devicelinking. - Safer handling of missing or null fields in dynamic API paths (Storage, LAN, USB, RAM, UPS).
- Corrected mapping for disk type and status codes, and more accurate CPU-frequency (
MHz) parsing.