
Sonos je prémiový bezdrátový audiosystém navržený pro multi-room přehrávání. TapHome komunikuje s reproduktory Sonos po lokální síti pomocí UPnP/SOAP na portu 1400 — není potřeba cloudové připojení ani autentizace. Šablona je univerzální a funguje se všemi modely reproduktorů Sonos (Era 100, Era 300, One, Five, Beam, Arc, Ray, Move, Roam, Sub a další).
Šablona poskytuje kompletní ovládání přehrávání (play, pauza, stop, přeskok), správu hlasitosti a ztlumení, výběr režimu přehrávání, časovače uspání a až 10 předvoleb pro playlisty a rozhlasové stanice. Sada 14 servisních atributů zobrazuje informace o zařízení a aktuálně přehrávanou skladbu.
Konfigurace
Reproduktor Sonos se připojuje přes Wi-Fi. Během importu šablony TapHome zadejte IP adresu reproduktoru (výchozí zástupný text 192.168.0.1). Reproduktor musí být ve stejné síti jako TapHome CCU.
Reproduktory Sonos podporují mDNS discovery se vzorem názvu hostitele
Sonos-{MAC}.local(MAC adresa bez dvojteček). Použití názvu hostitele zabraňuje problémům s připojením při změně IP adresy reproduktoru po obnovení DHCP.
Otevřete aplikaci TapHome a použijte IP Scanner (Nastavení → Síť → Skenovat). Skener objeví zařízení ve vaší síti a zobrazí IP adresu i mDNS název hostitele (např. Sonos-B8E9375A1C02.local). Pro spolehlivější připojení použijte název hostitele místo IP adresy.
Možnosti zařízení
Ovládání hlasitosti
Šablona zobrazuje hlasitost jako stmívač. Hlasitost se čte přes SOAP akci RenderingControl GetVolume (rozsah 0–100) a dělí se 100, čímž vzniká hodnota stmívače 0,0–1,0. Zápis nové hlasitosti odešle SetVolume s požadovanou úrovní. Hlasitost se dotazuje každých 2,5 sekundy.
Dvě další tlačítka — Volume Up a Volume Down — umožňují relativní úpravu hlasitosti. Tyto jsou zpracovány logikou na straně CCU, nikoli přímými SOAP akcemi, což umožňuje integraci s fyzickými nástěnnými spínači nebo smart pravidly.
Ztlumení
Ztlumení je zobrazeno jako spínač. Stav se čte přes GetMute a zapisuje přes SetMute na kanálu Master. Když je ztlumení zapnuto, zvukový výstup je umlčen bez změny úrovně hlasitosti.
Ovládání přehrávání
Šest tlačítek ovládá transport přehrávání:
- Play — odešle AVTransport
Play(Speed=1) - Pause — odešle AVTransport
Pause - Stop — odešle AVTransport
Stop - Next — odešle AVTransport
Nextpro přeskok na další skladbu - Previous — odešle AVTransport
Previouspro návrat na předchozí skladbu - Play/Pause — přepíná mezi play a pauza na základě aktuálního stavu transportu (zpracováno logikou na straně CCU)
Stav přehrávání
Binární senzor určený pouze ke čtení hlásí, zda reproduktor právě přehrává. Šablona čte GetTransportInfo a mapuje stavy transportu: PLAYING a TRANSITIONING se mapují na 1 (přehrává), zatímco STOPPED, NO_MEDIA_PRESENT a PAUSED_PLAYBACK se mapují na 0 (nepřehrává). Dotazuje se každých 2,5 sekundy.
Režim přehrávání
Režim přehrávání je vícehodnotový přepínač se šesti režimy:
| Hodnota | Režim | Popis |
|---|---|---|
| 0 | Normal | Postupné přehrávání |
| 1 | Repeat All | Opakování celé fronty |
| 2 | Repeat One | Opakování aktuální skladby |
| 3 | Shuffle No Repeat | Náhodné přehrávání bez opakování |
| 4 | Shuffle | Náhodné přehrávání s opakováním |
| 5 | Shuffle Repeat One | Náhodné přehrávání, opakování aktuální skladby |
Hodnoty 6–9 jsou nepoužité výplňové pozice v konfiguraci vícehodnotového přepínače a nemají žádnou funkci.
Časovače uspání
Dvě tlačítka konfigurují časovače uspání přes SOAP akci AVTransport ConfigureSleepTimer:
- Sleep in 1 hour — nastaví časovač na
01:00:00 - Sleep in 15 minutes — nastaví časovač na
00:15:00
Po uplynutí časovače reproduktor automaticky zastaví přehrávání.
Předvolby playlistů a rádií
Šablona poskytuje 10 předvoleb — 5 pro playlisty a 5 pro rozhlasové stanice. Každé tlačítko má proměnnou zařízení, kterou musí uživatel nastavit na název požadovaného playlistu nebo stanice. Skript se postará o vyhledání, správu fronty a přehrávání automaticky.
Playlisty (tlačítka 1–5): Každé tlačítko playlistu používá proměnnou playlist_name. Skript prohledává Sonos playlisty (Uložené fronty) přes ContentDirectory kontejner SQ:, shoda podle přesného dc:title (rozlišuje velká a malá písmena). Po nalezení shody skript vymaže aktuální frontu, zařadí playlist do fronty a spustí přehrávání.
Konfigurace tlačítka playlistu:
- Otevřete aplikaci TapHome → přejděte na zařízení playlistu → Proměnné zařízení
- Nastavte
playlist_namena přesný název Sonos playlistu - Vytvoření Sonos playlistu: aplikace Sonos → zařaďte skladby do fronty → Uložit frontu jako playlist
Podporovány jsou pouze Sonos playlisty (Uložené fronty). Playlisty ze Spotify, Apple Music nebo jiných streamovacích služeb nelze použít přímo. Chcete-li použít skladby z těchto služeb, přidejte je nejprve do Sonos playlistu.
Rozhlasové stanice (tlačítka 1–5): Každé tlačítko rádia používá proměnnou radio_name. Skript prohledává Sonos Favorites přes ContentDirectory kontejner FV:2, shoda podle přesného dc:title (rozlišuje velká a malá písmena) a filtrování podle protokolu streamovaného rádia (x-sonosapi-stream).
Konfigurace tlačítka rádia:
- Otevřete aplikaci TapHome → přejděte na zařízení rádia → Proměnné zařízení
- Nastavte
radio_namena přesný název stanice, jak se zobrazuje v Sonos Favorites - Přidání stanice do Favorites: aplikace Sonos → procházejte TuneIn nebo iHeartRadio → klepněte na ikonu srdce/hvězdičky
Název se musí přesně shodovat (rozlišuje velká a malá písmena). Otevřete aplikaci Sonos, přejděte na My Sonos → Favorites a zkopírujte název stanice znak po znaku. Podporovány jsou pouze streamované rozhlasové stanice — obsah na vyžádání z Favorites nebude fungovat.
Servisní diagnostika
Šablona zobrazuje 14 servisních atributů z XML popisu zařízení (/xml/device_description.xml):
- Informace o zařízení — název modelu, URL modelu, sériové číslo, MAC adresa, název hostitele, UDN (unikátní název zařízení)
- Software — verze softwaru, generace softwaru, revize hardwaru, verze API, minimální verze API
- Konfigurace Sonos — název místnosti, zobrazovaný název
- Aktuálně přehrávaná skladba — aktuální skladba (název, interpret, album extrahované z DIDL-Lite metadat přes
GetPositionInfo)
Atribut aktuální skladby dekóduje XML-kódovaná TrackMetaData a vrátí víceřádkový řetězec s názvem, interpretem a informacemi o albu. Pokud metadata nejsou dostupná (např. line-in vstup), vrátí “Not supported”.
Další možnosti
Sonos UPnP API poskytuje 16 služeb s možnostmi nad rámec aktuální implementace šablony. Služba RenderingControl podporuje úpravu basů, výšek a hlasitosti, stejně jako noční režim na soundbar modelech. Služba AVTransport poskytuje ovládání crossfade, vyhledávání podle času nebo čísla skladby a kompletní správu fronty (přidávání, odstraňování, změna pořadí skladeb). K dispozici je také správa multi-room skupin, plánování budíků a nastavení ekvalizéru pro konfigurace surround/subwoofer. Přenosné modely (Move, Roam) zobrazují stav baterie. Tyto možnosti mohou být přidány v budoucí aktualizaci šablony.
Řešení problémů
Reproduktor neodpovídá
- Ověřte, že reproduktor Sonos je zapnutý a připojený k Wi-Fi
- Zkuste použít mDNS název hostitele (
Sonos-{MAC}.local) místo IP adresy — IP se mohla změnit po obnovení DHCP - Otevřete
http://{speaker-ip}:1400/xml/device_description.xmlv prohlížeči — pokud odpoví XML, reproduktor je dosažitelný - Zkontrolujte, že TapHome CCU a reproduktor Sonos jsou ve stejné síti / VLAN
Příkazy přehrávání selhávají s chybou 800
Multi-room skupiny Sonos směrují všechny příkazy přehrávání přes koordinátora skupiny. Pokud šablona cílí na reproduktor, který není koordinátorem, transportní příkazy (Play, Pause, Next, Previous) selžou. Ujistěte se, že IP adresa v TapHome směřuje na koordinátora skupiny, nebo reproduktor oddělte ze skupiny a udělejte z něj samostatné zařízení.
Změny hlasitosti se neprojevují
- Ověřte, že šablona dotazuje — hlasitost se čte každých 2,5 sekundy přes
GetVolume - Pokud jiný ovladač (aplikace Sonos, Apple AirPlay) změnil hlasitost, TapHome zachytí novou hodnotu při dalším cyklu dotazování
- Zkontrolujte, že reproduktor není ve skupině, kde hlasitost ovládá koordinátor skupiny
Reproduktory Sonos přijímají UPnP příkazy pouze ze zařízení ve stejné podsíti. Pokud je TapHome CCU v jiné VLAN, zajistěte směrování multicast/UPnP provozu mezi VLAN, nebo umístěte obě zařízení do stejného síťového segmentu.
