HydraIssues

hydraroar status: read playback state (transport, source, volume, group) read-only
closed feature Project: hydraroar Reporter: anonymous 27 Aug 2026 08:59

Description

Read-only playback observability for venue audio, the follow-on to the probe (#540) and the read-first counterpart of #563 (control, nice-to-have).

Why

Venue staff already control the Sonos through the Sonos app; Hydra does not need to drive it. What Hydra lacks is eyes: is the Bar PA playing, from which source, at what volume. Read-only state completes the venue picture in hydraneck and hydravenues and costs no actuator-authorization design.

Scope

  1. pkg/sonos additions (all local port 1400, same surface as the probe, no control calls): AVTransport GetTransportInfo (state), GetPositionInfo/GetMediaInfo (current URI -> source kind: x-rincon-stream: = line-in, x-rincon: = grouped slave, URL = app stream/radio), RenderingControl GetVolume/GetMute.
  2. CLI: hydraroar status [--targets ...] printing one JSON document per the contract discipline (additive fields only).
  3. Serve API: extend POST /api/v1/probe with "status": true (or a sibling endpoint) returning per-player transport state, source kind, volume, mute alongside the existing describe fields.
  4. hydraneck merge: carry state/source/volume on audio-class unmanaged clients like room/model/household today, so hydravenues shows "playing - line-in - vol 35" next to the online dot on audio assets.
  5. Later refinement (separate ticket when reach allows): UPnP GENA eventing so players push transport/volume/topology changes instead of polling; needs reverse reach (player -> hydraroar listener), so it depends on #550/#554 for cloud-seven.

Reach

Same as the probe: routed venues via the scale, cloud-seven via the CLI on cosmic-pretzel-98 until #550/#554.

Acceptance

On cloud-seven via cosmic: status for Bar and Yoga shows transport state, source kind, volume; play something from the Sonos app in the venue (or line-in) and see the state change on the next poll. hydraneck scan carries the fields through to /network; hydravenues renders them on the two audio assets. Docs per repo convention.

UPDATE 2026-08-28: shipped end to end

  • hydraroar v0.3.0 (scale rebuilt on pi-node-001, manual: #588): pkg/sonos GetStatus (transport, source kind from the AVTransport URI, volume, mute, output_fixed), hydraroar status CLI, "status": true on the probe API. Read-only throughout.
  • hydraneck v0.15.0: the roar probe requests status; reachable audio clients carry transport/source/volume through /network and the venue page Audio Devices table (Playing and Vol columns).
  • hydravenues v0.6.2: MAC-linked assets show "PLAYING - line-in - vol 35" style state in their live section.

Live verification on cosmic-pretzel-98 against both cloud-seven Ports: Bar STOPPED / source none / vol 100 / variable output; Yoga STOPPED / vol 0 - with a variable line-out, playback to Yoga is silent at the PA until the volume is raised (real finding, flag to the venue). The PLAYING/line-in transition remains to be observed during actual venue use.

Remaining scope: the scale-side status merge lights up per venue only when the scale can reach the players (#550); cloud-seven works via the CLI meanwhile. GENA push eventing stays the later refinement (point 5).

CLOSED 2026-08-30

The scoped feature is delivered and verified: status reads live (hydraroar v0.3.0), carried by hydraneck v0.15.1 and shown by hydravenues v0.6.2. What remains is not this issue's scope:

  • Scale-side status for cloud-seven lights up automatically when reach lands (#550).
  • GENA push eventing gets its own ticket once reverse reach exists (also #550).
  • The PLAYING/line-in observation confirms itself in normal venue use; the #570 tests will exercise it.