Releases: ruaan-deysel/ha-unraid-management-agent
Release list
v2026.6.5
Fixed
- Network rate sensor flapping to 0 (#94, contributed by @mdinic):
Stabilized rate calculations so transient API updates do not force network
throughput sensors to briefly report0between valid samples. - Uptime boot timestamp flapping (#95, contributed by @mdinic):
Prevented the uptime/boot-time sensor path from repeatedly changing the boot
timestamp value when the underlying uptime update jittered.
v2026.6.4
Fixed
- Permanent Entity Loss After Server Reboot (#83): Reworked the dynamic entity
lifecycle so transient data gaps can never delete entities. Previously, a server
reboot could wipe hundreds of entities (e.g., 449 → 55) that only came back after
a manual integration reload.- Root cause 1: every per-endpoint fetch failure was silently converted to an empty
list, so while the server was down the coordinator reported a successful update
with empty data and stale entity cleanup removed every dynamic entity. The
5-minute reboot grace period could not help because reboot detection (uptime
decrease) only fires after the server is back. - Root cause 2: the closure-captured
seen_*tracking sets in each platform
blocked re-creation of deleted entities until a reload. - The coordinator now raises
UpdateFailedwhen the core endpoints (system, array)
are unreachable, so entities become unavailable (HA best practice) instead of
being fed an empty snapshot - List data now preserves the
None(fetch failed) vs[](genuinely empty)
distinction, and cleanup skips any category whose fetch failed that cycle - Stale entity removal is deferred until an item has been continuously missing for
10 minutes (STALE_REMOVAL_GRACE), so a single empty poll can never delete
entities seen_*tracking sets are pruned against the entity registry, so entities
removed by cleanup or manually by the user are re-created automatically when
the item reappears — no reload needed- Remote share and unassigned device sensors are now added dynamically while
running (previously only created at setup), matching the binary sensor and
switch platforms
- Root cause 1: every per-endpoint fetch failure was silently converted to an empty
- Slow Recovery After Reboot (#83): A WebSocket (re)connect now triggers an
immediate coordinator refresh (debounced to once per 10s), so data recovers right
away instead of waiting for the next poll cycle - Requests Could Hang on a Stalled Agent (#83): API requests now always apply the
client timeout (10s; 120s for the container update check). Previously, with Home
Assistant's shared aiohttp session, no timeout was applied and a stalled agent
could hang each request for up to 5 minutes. Timeouts raise a distinct
UnraidTimeoutErrorand are logged separately to help diagnose plugin stalls - Plugins With Updates Sensor:
sensor.<host>_plugins_with_updatesnow reports a
count when the API returns a list of plugin names (previously it exposed the raw
list, or failed when the value was already a count) - Next Parity Check Sensor Unknown / Wrong Values (#68 follow-up):
- Custom schedule mode is now supported: when the agent exposes the cron
expression, the next run is computed from it (viacronsim, bundled with HA).
Previouslysensor.next_parity_checkshowed Unknown for custom schedules - The agent's
manualfallback mode (no schedule configured indynamix.cfg) is
now treated as not scheduled, sobinary_sensor.parity_check_scheduledno longer
reports a schedule that doesn't exist - Weekly mode now interprets
dayusing the Unraid/cron convention (0=Sunday);
it was previously read as a Python weekday (0=Monday), shifting the predicted
check by a day - With Unraid Management Agent v2026.06.05+ (which resolved
unraid-management-agent#124),
the sensor now prefers the newcheck_cronfield — the exact cron entry Unraid
runs fromparity-check.cron— making the next-check time exact for every
schedule mode (daily/weekly/monthly/yearly/custom). Themonthfield is also
consumed, fixing yearly schedules outside January on older field-based
computation. Older agents keep working via the field-based fallback
- Custom schedule mode is now supported: when the agent exposes the cron
Added
- Sustained Failure Warning: After 3 consecutive failed update cycles a warning
is logged with guidance to check the Unraid Management Agent plugin status - Connection Health Diagnostics: Integration diagnostics now include a
coordinator_healthsection (last successful update timestamp, consecutive failed
updates, WebSocket connection state, reboot grace period state) to help distinguish
integration issues from agent-side stalls (upstream investigation:
unraid-management-agent#123)
v2026.6.3
Fixed
- Entities Removed After Server Reboot (#83): Fixed overly aggressive stale entity cleanup that was removing dynamic entities when Unraid servers rebooted
- Root cause: During reboots, the UMA API returns data gradually (some endpoints available first, others initializing). The coordinator would mark
last_update_success = Trueas soon as any data arrived, causing cleanup to see empty arrays (containers=[], vms=[], remote_shares=[], etc.) and incorrectly remove all associated entities - Fix: Added automatic server reboot detection via uptime tracking and a 5-minute grace period that suppresses cleanup immediately after detection
- Implementation:
- Coordinator tracks previous uptime (
_previous_uptime_seconds) and detects reboots when uptime decreases - New property
in_reboot_grace_periodreturns True for 5 minutes after reboot detection async_cleanup_stale_entities()skips removal during grace period, allowing APIs time to stabilize and return complete data- Logs warning message when reboot is detected for diagnostics
- Coordinator tracks previous uptime (
- Impact: Users should no longer see entity counts dropfter Unraid reboots; entities are preserved and naturally repopulated as APIs stabilize
- Root cause: During reboots, the UMA API returns data gradually (some endpoints available first, others initializing). The coordinator would mark
v2026.6.2
Added
-
UMA 2025.12.1 Endpoint Coverage: Added API and coordinator support for newer UMA endpoints with backward-compatible fallbacks
- New client methods for
GET /diagnostics/self-testandGET /docker/port-conflicts get_mover_settings()now prefersGET /moverand falls back toGET /settings/moverget_update_status()now prefersGET /os/updateand falls back toGET /updates
- New client methods for
-
New Monitoring Sensors
sensor.<host>_diagnostics_degraded_subsystems(diagnostics self-test degraded subsystem count)sensor.<host>_docker_port_conflicts(Docker port conflict count)sensor.<host>_zfs_arc_configured_max(configured ARC max bytes)sensor.<host>_<pool>_corrupted_files(ZFS pool corrupted files)- Per-container sensors:
<container>_restart_count,<container>_network_rx,<container>_network_tx
-
Zeroconf/mDNS Auto-Discovery: The integration now discovers Unraid Management Agent instances automatically on the local network
- No manual host/port entry required — HA detects the agent via mDNS service type
_unraid-mgmt-agent._tcp.local. - Requires Unraid Management Agent v2026.06.02 or later (which added zeroconf advertising)
- When the agent's IP changes, the existing config entry is automatically updated and reloaded (
discovery-update-inforule) - Quality Scale:
discoveryanddiscovery-update-inforules updated fromexempttodone
- No manual host/port entry required — HA detects the agent via mDNS service type
-
Remote Share Usage Sensor: New
sensorentity showing usage percentage for each mounted remote share- Reports
usage_percentfrom the API; attributes includetotal_size,used_size,free_size,protocol,server,mount_point
- Reports
-
Stale Entity Cleanup: Entity registry entries for removed dynamic items are now automatically cleaned on every successful coordinator update
- Covers all dynamic entity types: Docker containers, VMs, disks, fans, GPUs, network interfaces, user shares, ZFS pools, remote shares, unassigned devices, and user scripts
- Guarded by
coordinator.last_update_success— entities are never removed during a transient server outage or when the coordinator has no data yet - Implemented in a new
cleanup.pymodule via a coordinator update listener registered inasync_setup_entry - Quality Scale:
stale-devicesrule updated fromexempttodone
-
Remote Share Mount/Unmount Switch (#84): New
switchentities to mount and unmount remote shares configured in the Unraid Unassigned Devices plugin- One switch per remote share; turns ON to mount, turns OFF to unmount
- Attributes include
protocol,server, andmount_point - Entities are created dynamically as remote shares appear in coordinator data
- API endpoints:
POST /api/v1/unassigned/remote-shares/mountand/unmount
-
Container Update Checks (#86): Optional feature to periodically check Docker containers for available image updates
- New option in Settings → Integrations → Unraid Management Agent → Configure: Enable container update checks (disabled by default)
- When enabled:
binary_sensor.container_updates_availableis created showing whether any containers have image updates - Attributes include
updates_availablecount andtotal_containers - Fetches
/docker/updatesendpoint on each polling cycle
-
Fan Control Toggle (#85): New option to enable or disable fan control entities
- New option in Settings → Integrations → Unraid Management Agent → Configure: Enable fan control entities (enabled by default)
- When disabled: fan speed sensor and fan speed number (slider) entities are not created
- Useful for systems without controllable fans to reduce clutter
-
UMA 2026.06.03 Control Parity: Added support for newly introduced management operations
- New API client methods:
reset_vm(),remove_container(),set_container_autostart(), andclear_array_disk_stats() - New service actions:
vm_reset,container_remove,container_set_autostart, andarray_clear_disk_stats - New VM reset button entity per VM:
button.<host>_<vm>_reset - New container autostart switch entity per container:
switch.<host>_<container>_autostart - New array maintenance button:
button.<host>_array_clear_disk_stats
- New API client methods:
Fixed
- Remote Share Entities Not Created (#83): Remote share binary sensors, switches, and usage sensors were never created despite the agent reporting them
- Root cause:
RemoteSharePydantic model hadname: str | Nonefield but the UMA API returnssource(e.g.//server/share) instead ofname, causingnameto always beNone - Fix: added
source,status,type,smb_server,smb_share,size_bytes,used_bytes,free_bytes,usage_percent,auto_mount,read_onlyfields to the model and amodel_validator(mode='before')that derivesnamefromsource,mountedfromstatus,protocolfromtype, andserverfromsmb_server - Entity IDs use the full source path slugified (e.g.
switch.cube_remote_share_192_168_20_65_public) - Usage sensor enabled by default now that the API exposes size fields
- Root cause:
- Remote Share Binary Sensor Missing After Adding Shares (#83): Remote share mounted/unmounted binary sensors now appear dynamically when shares are added after HA startup
- Root cause:
async_setup_entryonly ran once at startup; new remote shares added later were never detected - Fix: registered coordinator update listener that creates new
UnraidRemoteShareBinarySensorentities as shares appear - Same dynamic registration applied to unassigned device sensors
- Root cause:
- Stale Cleanup Compatibility: Prevented new dynamic container and ZFS sensors from being removed as stale immediately after creation
- Added cleanup key coverage for container restart/network-rate sensors
- Added cleanup key coverage for ZFS pool corrupted-files and static ARC configured-max sensor
Changed
-
Options Flow (#85, #86): Two new options added to the integration's Configure dialog:
- Enable fan control entities — controls creation of fan speed sensors and fan speed number entities
- Enable container update checks — opt-in polling of Docker image update availability
-
API Models Expanded
- Added new typed fields for container throughput/update telemetry, mover runtime stats, ZFS pool/ARC fields, and diagnostics payload models
- Added typed
DockerPortConflictfields while keepingextra="allow"for forward compatibility
-
WebSocket Event Compatibility: Added support for the
source_status_changedevent type to keep source-related state synchronized- When this event arrives, the integration now schedules a coordinator refresh to update dependent entities
Quality
- manifest.json: Fixed
loggersfield to declare the fullcustom_components.unraid_management_agentnamespace (previously only the API sub-logger was listed; the integration's own log messages were not surfaced via HA's logger config UI)
v2026.6.1
Added
- Unassigned Devices & Remote Shares (#79): Monitoring for devices outside the array and SMB/NFS remote shares
binary_sensor.<device>_mounted— connectivity sensor showing mounted/unmounted state per unassigned devicebinary_sensor.<share>_mounted— connectivity sensor showing mounted/unmounted state per remote sharesensor.<device>_size— total capacity in bytes per unassigned device (with filesystem and device path attributes)sensor.<share>_usage— usage percentage per remote share when size data is available (disabled by default; enabled once UMA API exposes size fields for remote shares)- Entities are created dynamically when the Unassigned Devices plugin is installed and its collector returns data
- Both entity types include deduplication guards to prevent registry collisions
Fixed
- SystemInfo model (#45 follow-up): Added explicit
swap_usage_percent,swap_total_bytes,swap_used_bytes,swap_free_bytes, andswappinessfields to the Pydantic model — previously these were silently accepted as extra fields but not typed
v2026.6.0
Added
-
Swap Memory Sensors (#45): Exposes swap space metrics from the UMA API
sensor.swap_usage— swap usage percentage (shown only when swap is configured)sensor.swappiness— kernel swappiness value (diagnostic)- Both include attributes for total/used/free bytes and swappiness level
-
Notification Event Entity (#77): New HA
evententity for Unraid notificationsevent.notificationfires whenever a new Unraid notification arrives- Event types:
info,warning,alert - Attributes include notification ID, subject, description, importance, and timestamp
- Enables automations triggered by Unraid server notifications
-
Fan Speed Control (#78): New
numberentities for PWM fan speed control- One entity per controllable fan (e.g.,
number.cube_fan_fan_1_speed) - Slider range 0–100% maps to PWM percentage
- Available only when fan is controllable; uses the
/fans/speedUMA API endpoint - Entity is available for all fans with
controllable: truefrom the fans endpoint
- One entity per controllable fan (e.g.,
Fixed
-
Parity Date Sensors Wrong Values (#68):
sensor.last_parity_checknow correctly
shows the most recent check instead of the oldest one. The UMA API returns history
sorted oldest-first;ParityHistory.most_recentnow selects by maximum date. -
Phantom Disk High Temperature Warnings (#69): Disk temperature warnings are now
suppressed for all non-active spin states (standby,idle,unknown), not just
standby. This prevents spurious repair issues during disk spin-down transitions
when the API briefly shows an active temperature with a transitional spin state.
v2026.4.0
Merge pull request #47 from ruaan-deysel/enhancement/cleanup-and-ci-h…
v2026.3.2
See CHANGELOG.md for details.
📦 Installation
Via HACS (Recommended)
- Open HACS in Home Assistant
- Go to Integrations
- Click the ⋮ menu → Custom repositories
- Add this repository:
https://github.com/ruaan-deysel/ha-unraid-management-agent - Category: Integration
- Click Add
- Search for Unraid Management Agent
- Click Download
- Restart Home Assistant
Manual Installation
- Download
unraid_management_agent-2026.3.2.zip - Extract to
config/custom_components/ - Restart Home Assistant
- Add the integration via Settings → Devices & Services → Add Integration
SHA256 Checksum:
ab4d3ed6efbe8c7385026b592d04587bf6046a6ff517c19484bc47883a31f96e unraid_management_agent-2026.3.2.zip
v2026.3.1
See CHANGELOG.md for details.
📦 Installation
Via HACS (Recommended)
- Open HACS in Home Assistant
- Go to Integrations
- Click the ⋮ menu → Custom repositories
- Add this repository:
https://github.com/ruaan-deysel/ha-unraid-management-agent - Category: Integration
- Click Add
- Search for Unraid Management Agent
- Click Download
- Restart Home Assistant
Manual Installation
- Download
unraid_management_agent-2026.3.1.zip - Extract to
config/custom_components/ - Restart Home Assistant
- Add the integration via Settings → Devices & Services → Add Integration
SHA256 Checksum:
ae69333cba8f130a0ef6074ec53ff8c6d07a17a0961b4c75bc231aacfed6cfe5 unraid_management_agent-2026.3.1.zip
v2026.3.0
See CHANGELOG.md for details.
📦 Installation
Via HACS (Recommended)
- Open HACS in Home Assistant
- Go to Integrations
- Click the ⋮ menu → Custom repositories
- Add this repository:
https://github.com/ruaan-deysel/ha-unraid-management-agent - Category: Integration
- Click Add
- Search for Unraid Management Agent
- Click Download
- Restart Home Assistant
Manual Installation
- Download
unraid_management_agent-2026.3.0.zip - Extract to
config/custom_components/ - Restart Home Assistant
- Add the integration via Settings → Devices & Services → Add Integration
SHA256 Checksum:
b75f5c74c8d23f4e806886d5bd74e859485b9f9faee0c772460c8bee7c374356 unraid_management_agent-2026.3.0.zip