Files
bf-infra/docs/sonos-inventar.md
Christoph Emsenhuber e2c2700252 Sonos 🔍 Inventar (10 Geräte, alle S2) + zero-dep :1400-Helper
- mcp/sonos/sonos-inv.py: SSDP + ZoneGroupTopology-API, Seed-je-VLAN-Partition,
  --json / --verify. Kein MCP-Container (User-Entscheid), kein Daemon, stdlib-only.
- docs/sonos-inventar.md: Bestand + Migrationsklassen.
- Kernbefund: echter WLAN-Umzug = 6 Geräte (3× One SL + HT-Bond Arc/Amp/Sub);
  Schlafzimmer-Paar nur Switch-Port; Arbeitszimmer-Paar fertig. Alle S2 →
  :1400/wifictrl tot → Umzug via TP3-Cutover, nicht am Gerät.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:31:11 +02:00

49 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sonos-Inventar (live, 2026-06-17)
Erhoben zero-dep über die Sonos-HTTP-API (`:1400`) vom Mac (VLAN 1, `10.40.41.82`, en5)
mit `mcp/sonos/sonos-inv.py --seeds 10.40.40.199`. **Alle 10 Geräte S2** (SWGen=2).
Sonos hat **keine** API zum WLAN-Umstellen — Migration passiert am Netz, nicht am Gerät.
## Bestand (10 Sonos)
| IP | Modell (Nr.) | Zone | MAC | SW | Wifi | Eth | VLAN | Status |
|---|---|---|---|---|---|---|---|---|
| 10.40.40.199 | SYMFONISK Bookshelf (S21) | Arbeitszimmer (L) | `34:7E:5C:32:37:96` | 86.7 | 0 | 1 | 40 | ✅ wired (Omada P6) |
| 10.40.40.200 | SYMFONISK Bookshelf (S21) | Arbeitszimmer (R) | `34:7E:5C:32:33:B8` | 86.7 | 0 | 1 | 40 | ✅ wired |
| 10.40.41.193 | SYMFONISK Table lamp (S20) | Schlafzimmer (L) | `78:28:CA:80:2A:F6` | 86.7 | 0 | 1 | 1 | ⏳ **wired** → Port nach VLAN 40 |
| 10.40.41.194 | SYMFONISK Table lamp (S20) | Schlafzimmer (R) | `78:28:CA:82:16:C2` | 86.7 | 0 | 1 | 1 | ⏳ **wired** → Port nach VLAN 40 |
| 10.40.41.195 | Sonos One SL (S22) | Bad | `48:A6:B8:14:FE:D0` | 95.0 | 1 | 0 | 1 | ⏳ **WLAN** |
| 10.40.41.196 | Sonos One SL (S22) | Kinderzimmer | `48:A6:B8:16:38:AE` | 95.0 | 1 | 0 | 1 | ⏳ **WLAN** |
| 10.40.41.197 | Sonos One SL (S22) | Küche | `48:A6:B8:14:FE:F2` | 95.0 | 1 | 0 | 1 | ⏳ **WLAN** |
| 10.40.41.199 | **Sonos Arc (S19)** | Wohnzimmer (LF,RF) | `48:A6:B8:0B:63:10` | 95.0 | 1 | 0 | 1 | ⏳ **WLAN** — HT-Coordinator |
| 10.40.41.200 | **Sonos Amp (S16)** | Wohnzimmer (LR,RR) | `48:A6:B8:69:69:7B` | 95.0 | 1 | 0 | 1 | ⏳ **WLAN** — HT-Surrounds |
| 10.40.41.201 | **Sonos Sub** | Wohnzimmer (SW) | `94:9F:3E:49:59:EE` | 86.7 | 1 | 0 | 1 | ⏳ **WLAN** — HT-Sub |
Alle DHCP (Sonos kann kein statisches IP); VLAN-40-Paar hat dyn. Leases aus `dhcp-v40`.
## Migrations-Klassen
1. **Fertig (VLAN 40, wired):** Arbeitszimmer-Paar `.40.199/.200`.
2. **Wired, nur Port umhängen → VLAN 40:** Schlafzimmer-Table-lamp-Paar `.41.193/.194`
(Wifi=0, Eth=1). Kamen via ALLNET/FB-Uplink (nicht direkter Omada-Access-Port) →
**Switch-Port lokalisieren** (ALLNET MAC-Tabelle) und auf VLAN-40-Access setzen. = der „das schaff ich"-Teil.
3. **Echtes WLAN (der Schmerz) — 6 Geräte:**
- Standalone: Sonos One SL **Bad / Kinderzimmer / Küche**.
- **Home-Theater-Bond „Wohnzimmer": Arc + Amp + Sub** (Arc = Coordinator; Amp/Sub als
Satelliten an den Arc gebunden — beim Umzug zusammen behandeln).
→ Alle **S2** ⇒ `:1400/wifictrl` (Remote-WLAN-Aus) **nicht verfügbar**. Sauberer Weg =
**TP3-Cutover** (Media-SSID bzw. Per-MAC → VLAN 40); App-Re-Onboarding vermeidbar, wenn die
Media-SSID die Geräte beim FB-WLAN-Abschalten selbst übernimmt. Alternativ kurzzeitig verkabeln.
## Household-Partitionierung (Tooling-Gotcha)
ZoneGroupState ist **pro VLAN partitioniert** (Multicast quert VLANs nicht):
VLAN 40 sieht nur `.40.199/.200`, VLAN 1 sieht nur `.41.193–.201`. → Tool braucht **einen Seed
je Partition** (`10.40.40.199` **und** ein VLAN-1-Gerät; lokales SSDP deckt VLAN 1 automatisch ab).
## Werkzeug
`mcp/sonos/sonos-inv.py` (zero-dep, kein Daemon). Inventar:
```
./mcp/sonos/sonos-inv.py --seeds 10.40.40.199 # Tabelle
./mcp/sonos/sonos-inv.py --seeds 10.40.40.199 --json # maschinenlesbar
./mcp/sonos/sonos-inv.py --seeds 10.40.40.199 --verify 40 # Exit!=0 wenn ein Gerät nicht in VLAN 40
```