TapHome

Bluesound

Packet Parser → HTTP
Trimis de
Ultima actualizare: 10. 2026

Acest dispozitiv acceptă mDNS

În loc să folosiți o adresă IP, puteți accesa dispozitivul la:

{MODEL}-{MAC4}.local

Înlocuiți {MAC} cu adresa MAC a dispozitivului dvs. (majuscule, fără două puncte).

TapHome acceptă mDNS — folosirea unui nume de gazdă este mai fiabilă decât un IP static.

Bluesound

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:

  1. Deschideți panoul de administrare al routerului și găsiți setările de rezervare DHCP / LAN.
  2. Introduceți adresa MAC a playerului — răspunsul /SyncStatus o conține, deci se poate citi prin HTTP și fără aplicație.
  3. Atribuiți adresa pe care playerul trebuie să o păstreze și salvați.
  4. 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 plural ports=, 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
  1. Deschideți http://<player_ip>:11000/SyncStatus într-un browser — un răspuns XML înseamnă că playerul este accesibil și API-ul funcționează.
  2. 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.
  3. Încercați numele de gazdă mDNS al playerului în locul adresei IP.
  4. 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.

Dispozitive disponibile

Bluesound Modul
Variabile personalizate

Bluesound

Citire (modul)
var response := SENDHTTPREQUEST("/Status");
shuffle := PARSEXML(response.Content, "//shuffle");
repeat := PARSEXML(response.Content, "//repeat");
Piesa următoare Buton

Trece la piesa următoare din coada de redare; la sfârșitul cozii revine la prima piesă, indiferent de setarea de repetare

button push

Piesa următoare

Scrierea stării butonului
SENDHTTPREQUEST("/Skip");
Volum Dimmer

Volumul playerului — oprirea dimmerului dezactivează sunetul playerului în loc să seteze nivelul la zero, iar modificarea se aplică tuturor playerelor din grup

numeric Unitate: % dimmer

Volum

Citirea nivelului
var response := SENDHTTPREQUEST("/Volume");
PARSEXML(response.Content, "//volume") / 100;
Scrierea nivelului
if St
	SENDHTTPREQUEST("/Volume?level=" + round(Le*100) + "&tell_slaves=1");
else
	SENDHTTPREQUEST("/Volume?mute=1&tell_slaves=1");
end
Redare aleatorie Comutator

Starea redării aleatorii a cozii — starea se citește din valoarea /Status păstrată în modul, iar scrierea se face prin HTTP

boolean switch
Valori / Stări: ${shuffle} · ${noShuffle}

Redare aleatorie

Citirea stării comutatorului
shuffle
Scrierea stării comutatorului
var response := SENDHTTPREQUEST("/Shuffle?state=" + St);
shuffle := PARSEXML(response.Content, "//playlist/@shuffle");
Repetare Comutator cu mai multe valori

Modul de repetare — fără repetare, repetarea unei piese sau repetarea întregii cozi de redare

enum multi-value
Valori / Stări: Fără repetare · Repetare piesă · Repetare toate

Repetare

Citirea stării comutatorului
switch(repeat,0,2,1,1,0)
Scrierea stării comutatorului
var tmp := switch(Mu,0,2,1,1,0);
var response := SENDHTTPREQUEST("/Repeat?state=" + switch(Mu,0,2,1,1,0));
repeat := PARSEXML(response.Content, "//playlist/@repeat");
Pauză Buton

Comută între pauză și redare — o nouă apăsare a butonului reia redarea

button push

Pauză

Scrierea stării butonului
SENDHTTPREQUEST("/Pause?toggle=1");
Piesa anterioară Buton

Repornește piesa curentă dacă rulează de mai mult de patru secunde, altfel revine la piesa anterioară din coadă

button push

Piesa anterioară

Scrierea stării butonului
SENDHTTPREQUEST("/Back");
Play Buton

Pornește redarea sursei audio curente — reia redarea unui player pus pe pauză, dar nu și a unuia oprit

button push

Play

Scrierea stării butonului
SENDHTTPREQUEST("/Play");
Presetare Comutator cu mai multe valori

Încarcă o presetare salvată pe player — posturi de radio, playlisturi și intrări, create doar în aplicația BluOS Controller. Doar pentru scriere, așa că comutatorul nu arată ce presetare se redă

enum multi-value

Presetare

Scrierea stării comutatorului
SENDHTTPREQUEST("/Preset?id=" + Mu);
Exemplu – Jungle Buton

Demonstrație de streaming de la o adresă URL, nu o funcție a playerului — oprește redarea, golește coada de redare și redă un singur fișier audio de la adresa URL configurată

button push
Variabilă: encodedURL — Adresa URL codificată procentual a fluxului audio redat de acest buton. Valoarea implicită livrată trimite la un server de exemple al unui terț și ar trebui înlocuită

Exemplu – Jungle

Scrierea stării butonului
SENDHTTPREQUEST("/Stop");
SENDHTTPREQUEST("/Clear");
SENDHTTPREQUEST("/Play?url=" + encodedURL);
Exemplu – Oprire Buton

A doua demonstrație de streaming de la o adresă URL — oprește redarea, golește coada de redare și redă un singur fișier audio de la adresa URL configurată

button push
Variabilă: encodedURL — Adresa URL codificată procentual a fluxului audio redat de acest buton

Exemplu – Oprire

Scrierea stării butonului
SENDHTTPREQUEST("/Stop");
SENDHTTPREQUEST("/Clear");
SENDHTTPREQUEST("/Play?url=" + encodedURL);
Grupare cu player Comutator

Atașează un al doilea player BluOS ca secundar al grupului — playerul controlat de TapHome devine principalul grupului și își distribuie sunetul. După import trebuie completată adresa IP a celuilalt player

boolean switch
Valori / Stări: ON · OFF
Variabilă: IP — Adresa IP a playerului BluOS care se atașează ca secundar al grupului. Valoarea livrată 192.168.x.x este un substituent și trebuie înlocuită, altfel comutatorul rămâne permanent oprit

Grupare cu player

Citirea stării comutatorului
var response := SENDHTTPREQUEST("/SyncStatus");
var slaves := PARSEXML(response.Content, "//SyncStatus/slave/@id");
indexof(slaves, IP) >= 0
Scrierea stării comutatorului
if St
	SENDHTTPREQUEST("/AddSlave?slave=" + IP + "&ports=11000");
else
	SENDHTTPREQUEST("/RemoveSlave?slave=" + IP + "&ports=11000");
end
Stop Buton

Oprește redarea — spre deosebire de Pauză, redarea unui player oprit nu poate fi reluată cu Play

button push

Stop

Scrierea stării butonului
SENDHTTPREQUEST("/Stop");
Conexiune: Packet Parser → HTTP • Nume gazdă: {MODEL}-{MAC4}.local
Îmbunătățiri posibile (17)
  • Long Polling — Holds the connection open and returns only when something changes. Would cut request volume substantially and is the mechanism the documented 30 s polling ceiling exists to make unnecessary. The template uses plain repeated GETs on 2.5 s / 10 s / 30 s intervals.
  • Now Playing Metadata — Playback state, three-line track description, album art URL, track length and elapsed seconds. The module already fetches /Status every 30 s but only extracts shuffle and repeat from it, so this would cost no extra requests.
  • Mute State (read) — The volume dimmer writes /Volume?mute=1 when switched off but never reads mute back, so a player muted from the BluOS app still shows its old dimmer level in TapHome.
  • Doorbell Chime — Plays the player's configured chime at its configured chime volume without touching the play queue. The most obviously useful addition for a smart home — the Sample buttons approximate it far more crudely by clearing the queue.
  • Direct Input Selection — Switches the player to a physical input by type and index — spdif, analog, coax, bluetooth, arc, earc, phono, computer, aesebu, balanced, microphone. Requires BluOS firmware 4.2.0 or newer; older firmware uses /Play?inputIndex=. Natural fit for a multi-value switch.
  • Input Discovery — Lists the inputs actually present on the player, including inputs shared by a BluOS HUB elsewhere on the network. HUB input selection is only supported through this route plus /Play?url=.
  • List Presets — Returns the real preset ids, names and artwork. Would let the Preset device show what it is actually switching between instead of a fixed 0–9 list.
  • Next / Previous Preset — Steps through presets without knowing their ids — two push buttons would cover it and would not depend on the ids matching.
  • Relative Volume Step — Volume up / down by a dB step (typical value 2 dB). Cheaper than the dimmer for wall-button control and does not need the current level to be read first.
  • Absolute dB Volume — Sets volume on the dB scale instead of the 0–100 percentage, which is what the player's configured volume range is actually expressed in.
  • Play Queue Management — List the queue, delete or move a track, save the queue as a named playlist. The template only uses /Clear, and only inside the two demo buttons.
  • Content Browsing and Search — Navigate and search music services, local library, playlists and inputs. A large surface that does not map naturally onto TapHome device models, but it is the reason the template has no way to choose what plays beyond presets.
  • Radio Station Actions — Skip, back, love and ban on streaming radio stations that do not use the play queue. This is what Next Track and Previous Track would need to fall back to when /Status carries a <streamUrl>.
  • Player Identity and Group Name — MAC address (the value a router DHCP reservation needs), player name, model, brand and the current group name. The grouping switch already fetches /SyncStatus every 30 s, so these would be free service attributes.
  • Battery Level — Present only on players with a battery pack, such as PULSE FLEX with the BP100 — state of charge in percent plus a charging flag.
  • Bluetooth Mode — Manual, Automatic, Guest or Disabled. Useful for locking guest access to a player from a scene.
  • Soft Reboot — The only POST endpoint in the API — the PacketParser HTTP module issues GETs, so this would need a different mechanism.

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal