
Sonos este un sistem audio wireless premium, conceput pentru redarea multiroom. TapHome comunică cu boxele Sonos în rețeaua locală prin UPnP/SOAP pe portul 1400, fără conexiune la cloud și fără autentificare. Șablonul este universal și funcționează cu toate modelele de boxe Sonos (Era 100, Era 300, One, Five, Beam, Arc, Ray, Move, Roam, Sub și altele).
Șablonul oferă controlul complet al redării (redare, pauză, stop, piesa următoare/anterioară), gestionarea volumului și a dezactivării sunetului, selectarea modului de redare, temporizatoare de oprire și până la 10 butoane presetate pentru playlisturi și posturi de radio. Un set de 14 atribute de service pune la dispoziție informații despre dispozitiv și piesa redată în acel moment.
Configurare
Boxa Sonos se conectează prin Wi-Fi. La importul șablonului în TapHome introduceți adresa IP a boxei (valoarea implicită: 192.168.0.1). Boxa trebuie să fie în aceeași rețea cu TapHome CCU.
Boxele Sonos acceptă descoperirea mDNS cu modelul de nume de gazdă
Sonos-{MAC}.local(adresa MAC fără două puncte). Folosirea numelui de gazdă previne problemele de conectivitate când adresa IP a boxei se schimbă după o reînnoire DHCP.
Deschideți aplicația TapHome și folosiți Scanner IP (Setări → Rețea → Scanare). Scannerul descoperă dispozitivele din rețea și afișează atât adresa IP, cât și numele de gazdă mDNS (de ex. Sonos-B8E9375A1C02.local). Pentru o conexiune mai fiabilă folosiți numele de gazdă în locul adresei IP.
Funcțiile dispozitivului
Controlul volumului
Șablonul pune la dispoziție volumul ca dispozitiv de tip dimmer. Volumul se citește prin acțiunea SOAP RenderingControl GetVolume (interval 0–100) și se împarte la 100 pentru a obține valoarea dimmerului 0,0–1,0. Scrierea unui volum nou trimite SetVolume cu nivelul dorit. Volumul este interogat la fiecare 2,5 secunde.
Două butoane PushButton suplimentare, Creștere volum și Reducere volum, permit ajustarea relativă a volumului. Acestea sunt gestionate de logica din CCU, nu prin acțiuni SOAP directe, ceea ce permite integrarea cu întrerupătoare fizice de perete sau cu smart rules.
Dezactivarea sunetului
Dezactivarea sunetului este disponibilă ca întrerupător. Starea se citește prin GetMute și se scrie prin SetMute pe canalul Master. Când sunetul este dezactivat, ieșirea audio este oprită fără modificarea nivelului volumului.
Controlul redării
Șase butoane PushButton controlează redarea:
- Play — trimite AVTransport
Play(Speed=1) - Pauză — trimite AVTransport
Pause - Stop — trimite AVTransport
Stop - Piesa următoare — trimite AVTransport
Nextpentru a trece la piesa următoare - Piesa anterioară — trimite AVTransport
Previouspentru a reveni la piesa anterioară - Play/Pauză — comută între redare și pauză în funcție de starea actuală a redării (gestionat de logica din CCU)
Starea redării
Un senzor binar doar pentru citire raportează dacă boxa redă în acel moment. Șablonul citește GetTransportInfo și asociază stările de redare: PLAYING și TRANSITIONING corespund valorii 1 (redare), iar STOPPED, NO_MEDIA_PRESENT și PAUSED_PLAYBACK valorii 0 (fără redare). Interogare la fiecare 2,5 secunde.
Modul de redare
Modul de redare este un comutator cu mai multe valori, cu șase moduri:
| Valoare | Mod | Descriere |
|---|---|---|
| 0 | Normal | Redare secvențială |
| 1 | Repetare toate piesele | Repetarea întregii cozi |
| 2 | Repetare piesă | Repetarea piesei curente |
| 3 | Redare aleatorie fără repetare | Ordine aleatorie fără repetare |
| 4 | Redare aleatorie | Ordine aleatorie cu repetare |
| 5 | Redare aleatorie cu repetarea piesei | Ordine aleatorie, repetarea piesei curente |
Valorile 6–9 sunt poziții suplimentare neutilizate în configurația cu mai multe valori și nu au nicio funcție.
Temporizatoare de oprire
Două butoane PushButton configurează temporizatoarele de oprire prin acțiunea AVTransport ConfigureSleepTimer:
- Temporizator oprire (1 oră) — setează temporizatorul la
01:00:00 - Temporizator oprire (15 min) — setează temporizatorul la
00:15:00
După expirarea temporizatorului, boxa oprește automat redarea.
Presetări pentru playlisturi și radio
Șablonul oferă 10 butoane PushButton presetate: 5 pentru playlisturi și 5 pentru posturi de radio. Fiecare buton are o variabilă a dispozitivului, pe care utilizatorul trebuie să o completeze cu numele playlistului sau al postului dorit. Scriptul se ocupă automat de căutare, de gestionarea cozii și de redare.
Playlisturi (butoanele 1–5): fiecare buton de playlist folosește variabila dispozitivului playlist_name. Scriptul caută în playlisturile Sonos ale boxei (Saved Queues) prin containerul ContentDirectory SQ:, după potrivirea exactă a dc:title (se ține cont de majuscule și minuscule). Când găsește o potrivire, scriptul golește coada curentă, adaugă playlistul în coadă și pornește redarea.
Configurarea unui buton de playlist:
- Deschideți aplicația TapHome → mergeți la dispozitivul playlistului → Variabilele dispozitivului
- Setați
playlist_namela numele exact al unui playlist Sonos - Crearea unui playlist Sonos: aplicația Sonos → adăugați piese în coadă → Save Queue as Playlist
Sunt acceptate doar playlisturile Sonos (Saved Queues). Un playlist Sonos poate conține piese de la majoritatea serviciilor de streaming: Apple Music, Tidal, Amazon Music, YouTube Music, Deezer și altele. Spotify este excepția: Spotify folosește o integrare proprietară, iar piesele sale nu pot fi adăugate în Saved Queues Sonos. Crearea unui playlist Sonos: deschideți aplicația Sonos, adăugați piesele dorite în coadă și salvați coada ca playlist.
Posturi de radio (butoanele 1–5): fiecare buton de radio folosește variabila dispozitivului radio_name. Scriptul caută în Sonos Favorites prin containerul ContentDirectory FV:2, după potrivirea exactă a dc:title (se ține cont de majuscule și minuscule), și filtrează după protocolul de radio în streaming (x-sonosapi-stream).
Configurarea unui buton de radio:
- Deschideți aplicația TapHome → mergeți la dispozitivul radio → Variabilele dispozitivului
- Setați
radio_namela numele exact al postului, așa cum apare în Sonos Favorites - Adăugarea unui post la Favorites: aplicația Sonos → navigați în TuneIn sau iHeartRadio → atingeți pictograma inimă/stea
Numele trebuie să corespundă exact (se ține cont de majuscule și minuscule). Deschideți aplicația Sonos, mergeți la My Sonos → Favorites și copiați numele postului caracter cu caracter. Sunt acceptate doar posturile de radio în streaming; conținutul audio la cerere din Favorites nu va funcționa.
Diagnosticare de service
Șablonul pune la dispoziție 14 atribute de service din fișierul XML de descriere a dispozitivului (/xml/device_description.xml):
- Informații despre dispozitiv — numele modelului, URL-ul modelului, numărul de serie, adresa MAC, numele de gazdă, UDN (Unique Device Name)
- Software — versiunea software, generația software, revizia hardware, versiunea API, versiunea API minimă
- Configurare Sonos — numele camerei, numele afișat
- Redare curentă — piesa curentă (titlu, artist, album extrase din metadatele DIDL-Lite prin
GetPositionInfo)
Atributul piesei curente decodează datele TrackMetaData codificate în XML și returnează un șir pe mai multe rânduri cu titlul, artistul și albumul. Dacă metadatele nu sunt disponibile (de ex. la intrarea line-in), returnează „Not supported”.
Limitări
Șablonul controlează o singură boxă la un moment dat. Gruparea și degruparea zonelor multiroom nu sunt acceptate: pentru gestionarea grupurilor folosiți aplicația Sonos. Dacă o boxă face parte dintr-un grup, șablonul trebuie să indice coordonatorul grupului (consultați Rezolvarea problemelor mai jos).
Funcții suplimentare
API-ul UPnP Sonos pune la dispoziție 16 servicii, cu mai multe funcții decât cele implementate în prezent în șablon. Serviciul RenderingControl acceptă reglarea basului, a înaltelor și a funcției loudness, precum și modul de noapte la modelele soundbar. Serviciul AVTransport oferă controlul crossfade, derularea după timp sau după numărul piesei și gestionarea completă a cozii (adăugarea, eliminarea și reordonarea pieselor). Sunt disponibile și programarea alarmelor, setările EQ pentru configurațiile surround/subwoofer și starea bateriei la modelele portabile (Move, Roam). Aceste funcții pot fi adăugate într-o actualizare viitoare a șablonului.
Sonos trece treptat de la API-ul UPnP/SOAP (portul 1400) la un API REST local mai nou. La începutul anului 2026, UPnP rămâne complet funcțional pe toate modelele, inclusiv Era 100, Era 300 și Arc Ultra. Dacă Sonos restricționează UPnP într-o actualizare viitoare de firmware, șablonul ar putea necesita actualizarea pentru noul API.
Rezolvarea problemelor
Boxa nu răspunde
- Verificați dacă boxa Sonos este pornită și conectată la Wi-Fi
- Încercați să folosiți numele de gazdă mDNS (
Sonos-{MAC}.local) în locul adresei IP: adresa IP s-ar putea să se fi schimbat după o reînnoire DHCP - Deschideți
http://{speaker-ip}:1400/xml/device_description.xmlîn browser: dacă răspunde cu XML, boxa este accesibilă - Verificați dacă TapHome CCU și boxa Sonos sunt în aceeași rețea / VLAN
Comenzile de redare eșuează cu eroarea 800
Grupurile multiroom Sonos direcționează toate comenzile de redare prin coordonatorul grupului. Dacă șablonul se adresează unei boxe care nu este coordonatorul, comenzile de redare (Play, Pause, Next, Previous) vor eșua. Asigurați-vă că adresa IP din TapHome indică coordonatorul grupului sau scoateți boxa din grup, ca să devină un dispozitiv independent.
Modificările volumului nu se reflectă
- Confirmați că șablonul interoghează: volumul se citește la fiecare 2,5 secunde prin
GetVolume - Dacă un alt controler (aplicația Sonos, Apple AirPlay) a modificat volumul, TapHome va prelua noua valoare la următorul ciclu de interogare
- Verificați dacă boxa nu face parte dintr-un grup în care volumul este controlat de coordonatorul grupului
Boxele Sonos acceptă comenzi UPnP doar de la dispozitive din aceeași subrețea. Dacă TapHome CCU este într-un alt VLAN, asigurați-vă că traficul multicast/UPnP este rutat între VLAN-uri sau plasați ambele dispozitive în același segment de rețea.
