mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 00:56:16 +00:00
createGroup used to POST only to the LEFT (master) speaker and rely on the master to propagate the group to the slave via marge. That round- trip is the source of the "context deadline exceeded" failures reported in #252 — the master blocks waiting for marge while the CLI times out client-side. SoundCork's working ST10 implementation addresses each speaker directly, which avoids the inter-device coordination entirely. Changes: * Build the group request with senderIPAddress = master IP (the fhem wiki documents this field; SoundCork sets it; we previously omitted it). * propagateAddGroup() POSTs the same payload to both speakers concurrently via a sync.WaitGroup and returns per-side outcomes. * postAddGroup() flags a non-GROUP_OK response Status as an error so the caller doesn't have to re-parse the body. * On partial failure (one side succeeded), surface a remove command the user can run to clean up. Tests cover the happy path (both succeed, payload shape correct), the right-side-fails path, the non-GROUP_OK response, and an empty-status response (some firmware omits Status entirely on a successful echo). Refs #252. Optimistic fix — still pending feedback from BirdyBA's two-curl test on real ST10s before we're confident. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>