
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). Playlisty ze Spotify, Apple Music lub innych serwisów streamingowych nie mogą być używane bezpośrednio. Aby użyć utworów z tych serwisów, najpierw dodaj je do playlisty Sonos.
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".
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ż zarządzanie grupami multi-room, 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.
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.
