Release 2.4.0: eleven more integrations #4

Merged
domuk merged 16 commits from Dev into main 2026-11-07 01:31:41 +00:00
Owner

Release 2.4.0 — eleven more integrations: UPS (NUT), Uptime Kuma, Ping / port check, Pi-hole, AdGuard Home, Plex, Sonarr, Radarr, qBittorrent, Immich, TrueNAS, Unraid. Plus a fix serialising use of the shared SQLite connection, unreachable-means-unknown for the new integrations, and popup polish.

Migrations: none new. Highest is still 0013, manifest schema 13 (checked against the ZIP).

Package: updates/versions/2.4.0.zip, 8,081,113 bytes, SHA-256 7c9e878ef915b9fbe6f1e40438e86adacdf0ab17712f350b386031b376a2562e. 98 entries: the 2.3.6 set plus the 13 new integration files; manage/install.sh executable; no private files.

Verified: changelog.latest_version() reads 2.4.0; the Dev code starts locally (2.3.6 build on 9443, Home Assistant live). Not verified: the new integrations against real services, and an end-to-end update from an installed 2.3.6.

Release 2.4.0 — eleven more integrations: UPS (NUT), Uptime Kuma, Ping / port check, Pi-hole, AdGuard Home, Plex, Sonarr, Radarr, qBittorrent, Immich, TrueNAS, Unraid. Plus a fix serialising use of the shared SQLite connection, unreachable-means-unknown for the new integrations, and popup polish. **Migrations:** none new. Highest is still 0013, manifest schema 13 (checked against the ZIP). **Package:** `updates/versions/2.4.0.zip`, 8,081,113 bytes, SHA-256 `7c9e878ef915b9fbe6f1e40438e86adacdf0ab17712f350b386031b376a2562e`. 98 entries: the 2.3.6 set plus the 13 new integration files; `manage`/`install.sh` executable; no private files. **Verified:** `changelog.latest_version()` reads 2.4.0; the Dev code starts locally (2.3.6 build on 9443, Home Assistant live). **Not verified:** the new integrations against real services, and an end-to-end update from an installed 2.3.6.
Integrations can describe extra gauges, facts, lists and a picture strip for the device popup, and name their own actions. Pictures are fetched through a media route that only serves what the integration listed. Admin gets address hints per kind and a target list for network checks.
Speaks upsd's line protocol on 3493: each UPS shows on mains, on battery or battery low, its charge, load and runtime, with gauges and readings in its popup.
Reads every monitor from /metrics with an API key: up, down, pending or maintenance, response time and certificate days, with a certificate under two weeks flagged.
A list of named targets: a host is pinged (or knocked on at 443, 80 and 22 where ping is not allowed), host:port gets a TCP connection, a web address is fetched and its certificate days counted. Checks run side by side with short timeouts.
Pi-hole 6's REST API (and Pi-hole 5's api.php): today's queries and blocks, blocklist size, clients, and whether blocking is on, with Pause 5 min and Resume in the popup. Each visit logs its session out, as Pi-hole limits them.
Protection on or paused, today's queries, blocked share and average answer time, the busiest clients, and Pause 5 min / Resume in the popup.
Who is watching what, with progress, player and whether it is transcoding; library counts; and the recently added posters in the popup, resized by Plex and fetched through this server so the token stays here.
One shared reader for their v3 API: what is downloading with progress, what airs or releases in the next week, health problems and warnings, and how full their drives are. An error or a nearly full drive needs attention.
Download and upload speed, connection state, active torrents with progress and time left, stalled ones flagged, and Pause all / Resume all (qBittorrent 5 names, older ones as fallback).
Disk use, photo and video counts, library size and background jobs (admin key), and the newest photos as a picture strip in the popup, fetched through this server so the key stays here.
REST under /api/v2.0, or JSON-RPC over /api/current where REST is gone: the system with uptime and unread alerts, each pool with health, space and scrub, and apps running, stopped or crashed.
Through Unraid's GraphQL API, asked part by part with plainer fallbacks so one schema difference does not lose everything: the server and array state and space, each disk with status, temperature and space, Docker containers and VMs.
Every request thread shared one SQLite connection with no lock, and parallel requests could fail with 'bad parameter or other API misuse' — eight photo thumbnails at once did it. Queries and transactions now take a re-entrant lock. The popup names each new kind, says Online rather than Running for things that do not run, and hides pictures that fail to load.
When one of the new integrations cannot be reached, what it reported turns unknown ('… unreachable') instead of staying in its last good state. Sonarr's queue and calendar now ask for the episode as well as the series.
Sonarr and Radarr time left reads '4 min' rather than 00:04:10, long list entries wrap to two lines, and the README lists what each new integration needs and shows.
domuk merged commit e2bc6a9863 into main 2026-11-07 01:31:41 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
domuk/Ion-Homepage!4
No description provided.