- 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>
49 lines
3.3 KiB
Markdown
49 lines
3.3 KiB
Markdown
# 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
|
||
```
|