
Sonos to premium bezprzewodowy system audio zaprojektowany do odtwarzania multi-room. TapHome komunikuje się z głośnikami Sonos w sieci lokalnej za pomocą UPnP/SOAP na porcie 1400 — nie jest wymagane połączenie z chmurą ani uwierzytelnianie. Szablon jest uniwersalny i działa ze wszystkimi modelami głośników Sonos (Era 100, Era 300, One, Five, Beam, Arc, Ray, Move, Roam, Sub i inne).
Szablon zapewnia pełne sterowanie odtwarzaniem (play, pauza, stop, pominięcie), zarządzanie głośnością i wyciszeniem, wybór trybu odtwarzania, wyłączniki czasowe oraz do 10 przycisków predefiniowanych dla playlist i stacji radiowych. Zestaw 14 atrybutów serwisowych wyświetla informacje o urządzeniu i aktualnie odtwarzany utwór.
Konfiguracja
Głośnik Sonos łączy się przez Wi-Fi. Podczas importu szablonu TapHome podaj adres IP głośnika (domyślny symbol zastępczy 192.168.0.1). Głośnik musi być w tej samej sieci co TapHome CCU.
Głośniki Sonos obsługują wykrywanie mDNS z wzorcem nazwy hosta
Sonos-{MAC}.local(adres MAC bez dwukropków). Użycie nazwy hosta zapobiega problemom z łącznością, gdy adres IP głośnika zmieni się po odnowieniu DHCP.
Otwórz aplikację TapHome i użyj IP Scannera (Ustawienia → Sieć → Skanuj). Skaner wykryje urządzenia w Twojej sieci i pokaże zarówno adres IP, jak i nazwę hosta mDNS (np. Sonos-B8E9375A1C02.local). Dla bardziej niezawodnego połączenia używaj nazwy hosta zamiast adresu IP.
Funkcje urządzenia
Regulacja głośności
Szablon przedstawia głośność jako urządzenie dimmer. Głośność jest odczytywana przez akcję SOAP RenderingControl GetVolume (zakres 0–100) i dzielona przez 100, dając wartość dimmera 0,0–1,0. Zapis nowej głośności wysyła SetVolume z żądanym poziomem. Głośność jest odpytywana co 2,5 sekundy.
Dwa dodatkowe przyciski — Volume Up i Volume Down — umożliwiają względną regulację głośności. Obsługuje je logika po stronie CCU, a nie bezpośrednie akcje SOAP, co pozwala na integrację z fizycznymi przełącznikami ściennymi lub smart rule’ami.
Wyciszenie
Wyciszenie jest przedstawione jako przełącznik. Stan jest odczytywany przez GetMute i zapisywany przez SetMute na kanale Master. Gdy wyciszenie jest włączone, wyjście audio jest wyciszone bez zmiany poziomu głośności.
Sterowanie odtwarzaniem
Sześć przycisków steruje transportem odtwarzania:
- Play — wysyła AVTransport
Play(Speed=1) - Pause — wysyła AVTransport
Pause - Stop — wysyła AVTransport
Stop - Next — wysyła AVTransport
Next, aby przeskoczyć do następnego utworu - Previous — wysyła AVTransport
Previous, aby wrócić do poprzedniego utworu - Play/Pause — przełącza między odtwarzaniem a pauzą na podstawie bieżącego stanu transportu (obsługiwane przez logikę po stronie CCU)
Stan odtwarzania
Binarny czujnik tylko do odczytu informuje, czy głośnik aktualnie odtwarza. Szablon odczytuje GetTransportInfo i mapuje stany transportu: PLAYING i TRANSITIONING są mapowane na 1 (odtwarza), podczas gdy STOPPED, NO_MEDIA_PRESENT i PAUSED_PLAYBACK są mapowane na 0 (nie odtwarza). Odpytywanie co 2,5 sekundy.
Tryb odtwarzania
Tryb odtwarzania to przełącznik wielowartościowy z sześcioma trybami:
| Wartość | Tryb | Opis |
|---|---|---|
| 0 | Normal | Odtwarzanie sekwencyjne |
| 1 | Repeat All | Powtarzanie całej kolejki |
| 2 | Repeat One | Powtarzanie bieżącego utworu |
| 3 | Shuffle No Repeat | Odtwarzanie losowe bez powtarzania |
| 4 | Shuffle | Odtwarzanie losowe z powtarzaniem |
| 5 | Shuffle Repeat One | Odtwarzanie losowe, powtarzanie bieżącego utworu |
Wartości 6–9 to nieużywane pozycje wypełniające w konfiguracji przełącznika wielowartościowego i nie mają żadnej funkcji.
Wyłączniki czasowe
Dwa przyciski konfigurują wyłączniki czasowe przez akcję SOAP AVTransport ConfigureSleepTimer:
- Sleep in 1 hour — ustawia timer na
01:00:00 - Sleep in 15 minutes — ustawia timer na
00:15:00
Po upływie czasu głośnik automatycznie zatrzymuje odtwarzanie.
Presety playlist i radia
Szablon udostępnia 10 predefiniowanych przycisków — 5 dla playlist i 5 dla stacji radiowych. Każdy przycisk ma zmienną urządzenia, którą użytkownik musi skonfigurować, podając nazwę żądanej playlisty lub stacji. Skrypt automatycznie zajmuje się wyszukiwaniem, zarządzaniem kolejką i odtwarzaniem.
Playlisty (przyciski 1–5): Każdy przycisk playlisty używa zmiennej urządzenia playlist_name. Skrypt przeszukuje playlisty Sonos (Zapisane kolejki) poprzez kontener ContentDirectory SQ:, dopasowując po dokładnym dc:title (z uwzględnieniem wielkości liter). Po znalezieniu dopasowania skrypt czyści bieżącą kolejkę, dodaje playlistę do kolejki i rozpoczyna odtwarzanie.
Konfiguracja przycisku playlisty:
- Otwórz aplikację TapHome → przejdź do urządzenia playlisty → Zmienne urządzenia
- Ustaw
playlist_namena dokładną nazwę playlisty Sonos - Tworzenie playlisty Sonos: aplikacja Sonos → dodaj utwory do kolejki → Zapisz kolejkę jako playlistę
Obsługiwane są wyłącznie playlisty Sonos (Zapisane kolejki). Playlista Sonos może zawierać utwory z większości serwisów streamingowych — Apple Music, Tidal, Amazon Music, YouTube Music, Deezer i innych. Wyjątkiem jest Spotify — Spotify korzysta z własnej ścieżki integracji i jego utworów nie można dodawać do Zapisanych kolejek Sonos. Aby utworzyć playlistę Sonos: otwórz aplikację Sonos, dodaj żądane utwory do kolejki i zapisz kolejkę jako playlistę.
Stacje radiowe (przyciski 1–5): Każdy przycisk radia używa zmiennej urządzenia radio_name. Skrypt przeszukuje Sonos Favorites poprzez kontener ContentDirectory FV:2, dopasowując po dokładnym dc:title (z uwzględnieniem wielkości liter) i filtrując według protokołu radia strumieniowego (x-sonosapi-stream).
Konfiguracja przycisku radia:
- Otwórz aplikację TapHome → przejdź do urządzenia radia → Zmienne urządzenia
- Ustaw
radio_namena dokładną nazwę stacji, jak widnieje w Sonos Favorites - Dodawanie stacji do Favorites: aplikacja Sonos → przeglądaj TuneIn lub iHeartRadio → dotknij ikony serca/gwiazdki
Nazwa musi dokładnie się zgadzać (z uwzględnieniem wielkości liter). Otwórz aplikację Sonos, przejdź do My Sonos → Favorites i skopiuj nazwę stacji znak po znaku. Obsługiwane są wyłącznie strumieniowe stacje radiowe — treści audio na żądanie z Favorites nie będą działać.
Diagnostyka serwisowa
Szablon wyświetla 14 atrybutów serwisowych z opisu urządzenia XML (/xml/device_description.xml):
- Informacje o urządzeniu — nazwa modelu, URL modelu, numer seryjny, adres MAC, nazwa hosta, UDN (unikalna nazwa urządzenia)
- Oprogramowanie — wersja oprogramowania, generacja oprogramowania, rewizja sprzętu, wersja API, minimalna wersja API
- Konfiguracja Sonos — nazwa pokoju, nazwa wyświetlana
- Teraz odtwarzane — bieżący utwór (tytuł, wykonawca, album wyodrębnione z metadanych DIDL-Lite przez
GetPositionInfo)
Atrybut bieżącego utworu dekoduje zakodowane w XML TrackMetaData i zwraca wieloliniowy ciąg znaków z tytułem, wykonawcą i informacjami o albumie. Jeśli metadane nie są dostępne (np. wejście line-in), zwraca „Not supported".
Ograniczenia
Szablon steruje jednym głośnikiem naraz. Grupowanie i rozgrupowywanie stref multi-room nie jest obsługiwane — do zarządzania grupami należy używać aplikacji Sonos. Jeśli głośnik jest częścią grupy, szablon musi wskazywać na koordynatora grupy (zobacz Rozwiązywanie problemów poniżej).
Dodatkowe możliwości
API UPnP Sonos udostępnia 16 usług z możliwościami wykraczającymi poza bieżącą implementację szablonu. Usługa RenderingControl obsługuje regulację basów, tonów wysokich i głośności, a także tryb nocny w modelach soundbar. Usługa AVTransport zapewnia sterowanie crossfade, wyszukiwanie według czasu lub numeru utworu oraz pełne zarządzanie kolejką (dodawanie, usuwanie, zmiana kolejności utworów). Dostępne jest również planowanie alarmów oraz ustawienia korektora dla konfiguracji surround/subwoofer. Modele przenośne (Move, Roam) wyświetlają stan baterii. Te możliwości mogą zostać dodane w przyszłej aktualizacji szablonu.
Sonos stopniowo przechodzi z API UPnP/SOAP (port 1400) na nowsze lokalne API REST. Na początku 2026 roku UPnP pozostaje w pełni funkcjonalne na wszystkich modelach, w tym Era 100, Era 300 i Arc Ultra. Jeśli Sonos ograniczy UPnP w przyszłej aktualizacji oprogramowania, szablon będzie wymagał aktualizacji do nowego API.
Rozwiązywanie problemów
Głośnik nie odpowiada
- Sprawdź, czy głośnik Sonos jest włączony i podłączony do Wi-Fi
- Spróbuj użyć nazwy hosta mDNS (
Sonos-{MAC}.local) zamiast adresu IP — IP mógł się zmienić po odnowieniu DHCP - Otwórz
http://{speaker-ip}:1400/xml/device_description.xmlw przeglądarce — jeśli odpowiada XML, głośnik jest osiągalny - Sprawdź, czy TapHome CCU i głośnik Sonos są w tej samej sieci / VLAN
Polecenia odtwarzania kończą się błędem 800
Grupy multi-room Sonos kierują wszystkie polecenia odtwarzania przez koordynatora grupy. Jeśli szablon celuje w głośnik, który nie jest koordynatorem, polecenia transportu (Play, Pause, Next, Previous) zakończą się niepowodzeniem. Upewnij się, że adres IP w TapHome wskazuje na koordynatora grupy, lub rozgrupuj głośnik, aby uczynić go samodzielnym urządzeniem.
Zmiany głośności nie są odzwierciedlane
- Potwierdź, że szablon odpytuje — głośność jest odczytywana co 2,5 sekundy przez
GetVolume - Jeśli inny kontroler (aplikacja Sonos, Apple AirPlay) zmienił głośność, TapHome pobierze nową wartość w następnym cyklu odpytywania
- Sprawdź, czy głośnik nie jest w grupie, w której głośność jest kontrolowana przez koordynatora grupy
Głośniki Sonos akceptują polecenia UPnP tylko z urządzeń w tej samej podsieci. Jeśli TapHome CCU jest w innym VLAN-ie, upewnij się, że ruch multicast/UPnP jest routowany między VLAN-ami, lub umieść oba urządzenia w tym samym segmencie sieci.
