
Bluesound este o gamă audio multiroom construită pe BluOS, platforma de streaming a companiei Lenbrook pentru audio fără pierderi de până la 24 de biți/192 kHz. Fiecare player BluOS oferă în rețeaua locală BluOS Custom Integration API: cereri HTTP GET simple pe portul TCP 11000, răspunsuri XML în UTF-8, fără autentificare și fără cont în cloud. TapHome comunică direct cu playerul prin LAN.
Șablonul nu este specific unui model: nu are legătură cu un anumit model sau producător și folosește doar API-ul HTTP, deci se aplică întregii game actuale (NODE, NODE X, NODE NANO, NODE ICON, POWERNODE, POWERNODE EDGE, PULSE, PULSE M, PULSE MINI, PULSE FLEX, PULSE CINEMA, PULSE CINEMA MINI, PULSE SOUNDBAR, VAULT și HUB), precum și generațiilor anterioare. Deoarece BluOS este livrat și de NAD Electronics, DALI, PSB Speakers, Monitor Audio, Roksan, Cyrus și Peachtree, playerele acestor mărci oferă același API și răspund la aceleași cereri.
Conectarea la rețea
Nu este nevoie de cablare. Un player BluOS se conectează la rețeaua casei prin Ethernet sau Wi-Fi cu ajutorul asistentului de configurare din aplicația BluOS Controller, iar apoi TapHome îl accesează prin HTTP. Singura cerință este ca unitatea de control TapHome și playerul să se afle în același segment LAN, cu portul 11000 deschis între ele.
Portul 11000 este valabil pentru toate playerele BluOS, cu o singură excepție documentată: NAD CI580 conține patru noduri de streaming într-o singură carcasă, pe porturile 11000 / 11010 / 11020 / 11030. Șablonul folosește doar portul 11000, așa că pe un CI580 controlează nodul 1.
Configurare
Aflarea adresei IP a playerului
Adresa este afișată în ecranul Diagnostics din aplicația BluOS Controller:
- Android / iOS — fila Players → selectați playerul → fila Home → Settings → la Help & Support atingeți Diagnostics.
- Windows / macOS — Player Drawer → selectați playerul → Navigation Drawer din stânga → Help → Diagnostics.
Același ecran afișează la Other Players adresele celorlalte playere din rețea. Fără aplicație, deschiderea adresei http://<player_ip>:11000/SyncStatus într-un browser returnează id-ul playerului (adresă și port) împreună cu atributul mac.
Păstrarea unei adrese stabile
Șablonul accesează playerul după adresa IP, așa că, dacă adresa atribuită prin DHCP se schimbă, integrarea nu mai funcționează și nu apare niciun avertisment. Lenbrook recomandă explicit o rezervare DHCP în router în locul unei adrese statice configurate pe player:
- Deschideți panoul de administrare al routerului și găsiți setările de rezervare DHCP / LAN.
- Introduceți adresa MAC a playerului — răspunsul
/SyncStatuso conține, deci se poate citi prin HTTP și fără aplicație. - Atribuiți adresa pe care playerul trebuie să o păstreze și salvați.
- Reporniți playerul ca să își reînnoiască închirierea, apoi verificați că a preluat adresa rezervată.
Importul șablonului
Șablonul are un singur parametru de import, IpAddress (valoare de completat 192.168.0.1). Introduceți adresa playerului; portul 11000 și formatul cererilor fac deja parte din șablon.
Configurare obligatorie după import — Grupare cu player
Comutatorul Grupare cu player este livrat cu variabila IP setată la textul substituent 192.168.x.x. Aceasta nu este o valoare implicită funcțională: până când nu este înlocuită, scriptul de citire caută 192.168.x.x printre playerele secundare ale playerului, nu îl găsește niciodată, iar comutatorul rămâne permanent oprit.
După importul șablonului, deschideți dispozitivul Grupare cu player în aplicația TapHome și setați IP la adresa playerului care trebuie atașat ca secundar al grupului. Folosiți ecranul Diagnostics descris mai sus (Other Players listează exact aceste adrese) sau citiți /SyncStatus pe oricare player din rețea.
Toate celelalte dispozitive din șablon funcționează imediat ce este completat IpAddress. Grupare cu player este singurul dispozitiv care necesită o a doua valoare după import — dacă lăsați
192.168.x.x, comutatorul va părea defect în loc să raporteze o eroare.
Funcțiile dispozitivului
Controlul redării
Cinci butoane controlează redarea:
- Play — pornește sursa audio curentă. Reia redarea unui player pus pe pauză, dar nu repornește un player oprit.
- Pauză — trimite o comandă toggle, așa că același buton pune pe pauză un player care redă și reia redarea unui player aflat pe pauză. Dacă se redă o alarmă cu timp limită, pauza anulează și acest timp limită.
- Stop — oprește redarea. Spre deosebire de Pauză, redarea unui player oprit nu poate fi reluată cu Play. Oprirea anulează și timpul limită al unei alarme în curs.
- Piesa următoare — avansează în coada de redare și revine la prima piesă la sfârșitul cozii, indiferent de setarea de repetare.
- Piesa anterioară — repornește piesa curentă dacă rulează de mai mult de patru secunde, altfel revine la piesa anterioară.
Aceste butoane acționează asupra cozii de redare. Când playerul redă un post de radio prin streaming sau o intrare fizică, coada nu este sursa audio, iar salturile înainte / înapoi nu sunt disponibile — API-ul tratează acest caz printr-un endpoint separat, pe care șablonul nu îl folosește.
Volum
Volum este un dimmer. Citește nivelul playerului (0–100) și îl scalează la intervalul dimmerului 0,0–1,0; la scriere, valoarea este trimisă înapoi ca procent întreg. Oprirea dimmerului trimite o comandă de dezactivare a sunetului (mute) în loc de volum 0, așa că nivelul propriu al playerului se păstrează și este restabilit la reactivarea sunetului.
Ambele comenzi de scriere conțin tell_slaves=1, ceea ce corespunde glisorului de volum al grupului din aplicația BluOS Controller: când playerul este principalul unui grup, volumul tuturor playerelor din grup se reglează împreună, nu doar al playerului adresat.
Intervalul de volum utilizabil al playerului se configurează în aplicația BluOS Controller la Settings → Player → Audio și este de obicei −80…0 dB. Toate nivelurile sunt limitate la acest interval, așa că un dimmer TapHome la 100 % nu înseamnă neapărat 0 dB. Playerele cu ieșire de linie cu nivel fix nu raportează niciun volum utilizabil, iar dimmerul afișează atunci un nivel fără sens în loc de o eroare.
Dimmerul de volum interoghează playerul la fiecare 2,5 secunde, în timp ce API-ul BluOS cere integrărilor care nu folosesc long polling să trimită cel mult o cerere la fiecare 30 de secunde. Pe un singur player înseamnă câteva cereri mici pe minut, dar într-o casă plină de playere acestea se adună — țineți cont de acest lucru dacă rețeaua Wi-Fi are o capacitate limitată și preferați playerele conectate prin cablu acolo unde rețeaua este aglomerată.
Redare aleatorie și repetare
Redare aleatorie pornește și oprește redarea aleatorie a cozii. Redarea aleatorie reconstruiește coada; ordinea inițială se restabilește la oprire.
Repetare este un comutator cu trei stări — Fără repetare, Repetare piesă și Repetare toate. TapHome ordonează aceste poziții invers față de API, iar șablonul aplică aceeași remapare la citire și la scriere, astfel încât citirea și scrierea rămân în concordanță.
Ambele dispozitive își citesc starea dintr-o valoare pe care modulul o păstrează din propria interogare de stare la 30 de secunde, în loc să trimită cereri proprii. Astfel traficul în rețea rămâne redus, cu prețul unei întârzieri de până la 30 de secunde până când o modificare făcută în aplicația BluOS apare în TapHome.
Presetări
Presetare apelează o presetare salvată pe player — un post de radio, un playlist sau o intrare. Presetările se pot crea și șterge doar în aplicația BluOS Controller; API-ul le poate doar încărca.
Dispozitivul este doar pentru scriere: trimite comanda de presetare, dar nu citește niciodată ce presetare se redă, așa că comutatorul nu reflectă starea reală a playerului.
Folosiți pozițiile de presetare 1–9. Poziția 0 trimite id-ul de presetare 64 în loc de 0, ceea ce pare o valoare substituent rămasă, nu o presetare reală. De asemenea, id-urile presetărilor nu trebuie să fie consecutive — un player poate avea presetările 1, 2, 3, 5, 7 și 8 — așa că verificați în aplicația BluOS Controller ce id-uri există efectiv înainte de a folosi o poziție într-o scenă.
Grupare multiroom
Grupare cu player atașează un al doilea player BluOS la acesta. Playerul adresat de TapHome devine principal: alege sursa muzicală și își distribuie sunetul, în timp ce playerul indicat de variabila IP se alătură ca secundar. Oprirea dispozitivului scoate din nou acel player din grup. Starea se citește din lista de playere secundare atașate, așa că gruparea făcută din aplicația BluOS se reflectă în TapHome.
Din modul în care funcționează gruparea BluOS rezultă două consecințe:
- Doar intrările externe conectate la playerul principal ajung la restul grupului. Dacă sunetul televizorului de pe o intrare optică sau HDMI trebuie redat peste tot, TapHome trebuie să adreseze playerul care are acea intrare.
- Aplicația BluOS Controller gestionează cel mult opt grupuri a câte opt playere sau patru grupuri a câte șaisprezece. Un comutator TapHome gestionează o pereche principal–secundar, așa că un grup de trei playere necesită un al doilea comutator.
Cererile de grupare trimit parametrul la singular
slave=împreună cu parametrul la pluralports=, o combinație pe care documentația BluOS API nu o menționează. Cel mai probabil funcționează oricum, deoarece 11000 este oricum portul implicit documentat, dar este util de știut dacă o comandă de grupare se comportă vreodată neașteptat.
Butoane de exemplu — demonstrații, nu funcții ale playerului
Șablonul este livrat cu două butoane numite Exemplu – Jungle și Exemplu – Oprire. Ele sunt demonstrații de streaming de la o adresă URL, nu funcții ale playerului: fiecare oprește redarea, golește coada de redare și redă un singur fișier audio de la adresa URL salvată în variabila dispozitivului.
Sunt gândite pentru a fi modificate sau șterse. Exemplul Jungle trimite la un server de exemple al unui terț, în afara controlului TapHome, și nu va mai funcționa dacă site-ul respectiv se modifică. Exemplul Oprire trimite la un MP3 găzduit de TapHome și este un model utilizabil pentru o sonerie sau un anunț sonor dacă adresa URL este înlocuită cu una proprie — rețineți că adresa trebuie să fie codificată procentual (percent-encoding), deoarece este transmisă direct playerului.
Depanare
Playerul nu răspunde
- Deschideți
http://<player_ip>:11000/SyncStatusîntr-un browser — un răspuns XML înseamnă că playerul este accesibil și API-ul funcționează. - Dacă nu răspunde, verificați adresa în ecranul Diagnostics din aplicația BluOS Controller; este posibil ca o reînnoire DHCP să o fi schimbat. Configurați rezervarea DHCP descrisă mai sus, ca să nu se mai întâmple.
- Încercați numele de gazdă mDNS al playerului în locul adresei IP.
- Verificați că unitatea de control TapHome și playerul sunt în aceeași rețea / VLAN și că nimic nu blochează portul 11000 între ele.
Comutatorul de grupare nu pornește niciodată
Variabila IP din Grupare cu player are încă valoarea substituent 192.168.x.x sau conține o adresă care nu aparține unui player BluOS. Setați-o la adresa reală a playerului secundar — consultați configurarea de după import descrisă mai sus.
O presetare nu face nimic
Fie poziția nu are nicio presetare asociată pe acest player, fie a fost folosită poziția 0. Deschideți aplicația BluOS Controller, verificați ce id-uri de presetare are efectiv playerul și asociați pozițiile TapHome acestor id-uri. Presetările trebuie create mai întâi în aplicație — șablonul nu le poate crea.
Piesa următoare / Piesa anterioară nu fac nimic
Playerul nu redă din coada sa. Fluxurile radio și intrările fizice nu se bazează pe coadă, iar salturile înainte / înapoi nu li se aplică. Porniți redarea dintr-un playlist, un album sau din coadă, iar butoanele vor funcționa din nou.
Modificările făcute în aplicația BluOS apar cu întârziere
Redarea aleatorie și repetarea se citesc din starea păstrată în modul, care se actualizează la fiecare 30 de secunde. Volumul este interogat mai des. Butoanele de redare și Presetare sunt doar pentru scriere și nu reflectă deloc modificările externe.
Playerul are sunetul dezactivat, dar TapHome afișează un nivel
Dezactivarea sunetului se scrie când dimmerul de volum este oprit, dar starea mute nu este citită niciodată înapoi. Un player al cărui sunet a fost dezactivat din aplicația BluOS Controller sau din telecomanda sa afișează în TapHome în continuare nivelul anterior al dimmerului. Opriți și porniți dimmerul ca să sincronizați din nou playerul și TapHome.
