TapHome

Bluesound

Packet Parser → HTTP
Inviato da
Ultimo aggiornamento: 08. 2026

Questo dispositivo supporta mDNS

Invece di un indirizzo IP, puoi raggiungere il dispositivo a:

{MODEL}-{MAC4}.local

Sostituisci {MAC} con l'indirizzo MAC del dispositivo (maiuscolo, senza due punti).

TapHome supporta mDNS — usare un hostname è più affidabile di un IP statico.

Bluesound

Bluesound è una gamma audio multiroom costruita su BluOS, la piattaforma di streaming di Lenbrook per audio lossless fino a 24 bit/192 kHz. Ogni lettore BluOS espone sulla rete locale la BluOS Custom Integration API: semplici richieste HTTP GET sulla porta TCP 11000, risposte in XML UTF-8, senza autenticazione e senza account cloud. TapHome comunica con il lettore direttamente sulla rete locale.

Il template non è legato a un modello specifico — non contiene alcun vincolo di modello o produttore e parla soltanto l’API HTTP, quindi vale per l’intera gamma attuale (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 e HUB) e anche per le generazioni precedenti. Poiché BluOS è distribuito anche da NAD Electronics, DALI, PSB Speakers, Monitor Audio, Roksan, Cyrus e Peachtree, i lettori di questi marchi espongono la stessa API e rispondono alle stesse richieste.

Connessione di rete

Non c’è nulla da cablare. Un lettore BluOS entra nella rete domestica via Ethernet o Wi-Fi tramite la procedura guidata dell’app BluOS Controller, e TapHome lo raggiunge poi via HTTP. L’unico requisito è che l’unità di controllo TapHome e il lettore si trovino sullo stesso segmento di rete, con la porta 11000 aperta tra i due.

La porta 11000 vale per ogni lettore BluOS con una sola eccezione documentata: il NAD CI580 ospita quattro nodi streamer in un unico telaio sulle porte 11000 / 11010 / 11020 / 11030. Il template si rivolge solo alla porta 11000, quindi su un CI580 controlla il nodo 1.

Configurazione

Trovare l’indirizzo IP del lettore

L’indirizzo è mostrato nella schermata Diagnostics dell’app BluOS Controller:

  • Android / iOS — scheda Players → seleziona il lettore → scheda HomeSettings → nella sezione Help & Support tocca Diagnostics.
  • Windows / macOSPlayer Drawer → seleziona il lettore → Navigation Drawer a sinistra → Help → Diagnostics.

La stessa schermata elenca sotto Other Players anche gli indirizzi degli altri lettori presenti in rete. Senza l’app, aprendo http://<ip_lettore>:11000/SyncStatus nel browser si ottiene l’attributo id del lettore (indirizzo e porta) insieme al suo attributo mac.

Mantenere stabile l’indirizzo

Il template si rivolge al lettore tramite indirizzo IP, quindi un lease DHCP cambiato interrompe silenziosamente l’integrazione. Lenbrook raccomanda esplicitamente una prenotazione DHCP sul router anziché un indirizzo statico configurato sul lettore:

  1. Apri il pannello di amministrazione del router e individua le impostazioni di prenotazione DHCP / LAN.
  2. Inserisci l’indirizzo MAC del lettore — la risposta /SyncStatus lo contiene, quindi si può leggere via HTTP anche senza l’app.
  3. Assegna l’indirizzo che il lettore deve mantenere e salva.
  4. Riavvia il lettore perché rinnovi il lease, poi verifica che abbia acquisito l’indirizzo prenotato.
Importazione del template

Il template ha un unico parametro di importazione, IpAddress (segnaposto 192.168.0.1). Inserisci l’indirizzo del lettore; la porta 11000 e il formato delle richieste fanno già parte del template.

Configurazione obbligatoria dopo l’importazione — Raggruppa con lettore

L’interruttore Raggruppa con lettore viene fornito con la variabile IP impostata sul segnaposto letterale 192.168.x.x. Non è un valore predefinito funzionante — finché non viene sostituito, lo script di lettura cerca 192.168.x.x tra i lettori secondari, non lo trova mai e l’interruttore resta sempre spento.

Dopo aver importato il template, apri il dispositivo Raggruppa con lettore nell’app TapHome e imposta IP sull’indirizzo del lettore da collegare come secondario del gruppo. Usa la schermata Diagnostics descritta sopra (Other Players elenca esattamente questi indirizzi) oppure leggi /SyncStatus su un qualsiasi lettore della rete.

Tutti gli altri dispositivi del template funzionano non appena IpAddress è compilato. Raggruppa con lettore è l’unico dispositivo che dopo l’importazione richiede un secondo valore — se 192.168.x.x resta al suo posto, l’interruttore sembrerà guasto invece di segnalare un errore.

Funzionalità del dispositivo

Controllo della riproduzione

Cinque pulsanti gestiscono la riproduzione:

  • Play — avvia la sorgente audio corrente. Riprende un lettore in pausa, ma non riavvia un lettore fermato.
  • Pausa — invia un toggle, quindi lo stesso pulsante mette in pausa un lettore in riproduzione e riprende quello in pausa. Se è in corso una sveglia con timeout, la pausa annulla anche quel timeout.
  • Stop — interrompe la riproduzione. A differenza della pausa, un lettore fermato non può essere ripreso con Play. Anche lo stop annulla il timeout di una sveglia in corso.
  • Brano successivo — avanza nella coda di riproduzione e alla fine della coda torna al primo brano, qualunque sia l’impostazione di ripetizione.
  • Brano precedente — riavvia il brano corrente se è in riproduzione da più di quattro secondi, altrimenti torna al brano precedente.

Questi pulsanti agiscono sulla coda di riproduzione. Quando il lettore trasmette una stazione radio o riproduce da un ingresso fisico, la coda non è la sorgente audio e l’avanzamento o il ritorno non sono disponibili — l’API gestisce quel caso con un endpoint separato che il template non utilizza.

Volume

Il Volume è un dimmer. Legge il livello del lettore (0–100) e lo scala nell’intervallo 0,0–1,0 del dimmer; in scrittura rimanda il valore come percentuale intera. Spegnendo il dimmer viene inviato un comando di silenziamento anziché il volume 0, così il livello proprio del lettore resta memorizzato e viene ripristinato quando si riattiva l’audio.

Entrambe le scritture includono tell_slaves=1, che corrisponde al cursore del volume di gruppo nell’app BluOS Controller: quando il lettore è il primario del gruppo, il volume di tutti i lettori del gruppo si muove insieme anziché solo quello del lettore indirizzato.

L’intervallo di volume utilizzabile si configura nell’app BluOS Controller in Settings → Player → Audio ed è tipicamente −80…0 dB. Tutti i livelli vengono riportati entro quell’intervallo, quindi un dimmer TapHome al 100 % non significa necessariamente 0 dB. I lettori con uscita a livello di linea fisso non segnalano alcun volume utilizzabile e il dimmer mostra allora un livello privo di senso anziché un errore.

Il dimmer del volume interroga il lettore ogni 2,5 secondi, mentre l’API BluOS chiede alle integrazioni che non usano il long polling di inviare al massimo una richiesta ogni 30 secondi. Su un singolo lettore si tratta di poche piccole richieste al minuto, ma in una casa piena di lettori la cosa si somma — tienilo presente su reti Wi-Fi cariche e, dove la rete è congestionata, privilegia i lettori collegati via cavo.

Riproduzione casuale e ripetizione

La Riproduzione casuale attiva e disattiva il mescolamento della coda. Il mescolamento ricostruisce la coda; disattivandolo viene ripristinato l’ordine originale.

La Ripetizione è un interruttore a tre stati — Nessuna ripetizione, Ripeti brano e Ripeti tutto. TapHome ordina questi slot in modo opposto rispetto all’API, e il template applica la stessa conversione sia in lettura sia in scrittura, così entrambe le direzioni restano coerenti.

Entrambi i dispositivi leggono il proprio stato da un valore che il modulo memorizza durante il suo polling di stato ogni 30 secondi, anziché inviare richieste proprie. Questo contiene il traffico di rete, al prezzo di un ritardo fino a 30 secondi prima che una modifica fatta nell’app BluOS compaia in TapHome.

Preset

Preset richiama un preset salvato sul lettore — una stazione radio, una playlist o un ingresso. I preset possono essere creati ed eliminati soltanto nell’app BluOS Controller; l’API può solo caricarli.

Il dispositivo è solo in scrittura: invia il comando del preset ma non rilegge mai quale preset è in riproduzione, quindi l’interruttore non riflette lo stato reale del lettore.

Usa gli slot preset 1–9. Lo slot 0 invia l’id preset 64 anziché 0, il che sembra un segnaposto rimasto più che un preset reale. Gli id dei preset inoltre non devono per forza essere consecutivi — un lettore può contenere i preset 1, 2, 3, 5, 7 e 8 — quindi verifica nell’app BluOS Controller quali id esistono davvero prima di collegare uno slot a una scena.

Raggruppamento multiroom

Raggruppa con lettore collega un secondo lettore BluOS a questo. Il lettore indirizzato da TapHome diventa il primario: sceglie la sorgente musicale e distribuisce il proprio audio, mentre il lettore indicato dalla variabile IP si unisce come secondario. Spegnendo il dispositivo quel lettore viene rimosso dal gruppo. Lo stato viene riletto dall’elenco dei secondari collegati, quindi anche un raggruppamento fatto dall’app BluOS si riflette in TapHome.

Dal funzionamento del raggruppamento BluOS derivano due conseguenze:

  • Al resto del gruppo arrivano solo gli ingressi esterni collegati al lettore primario. Se l’audio del televisore da un ingresso ottico o HDMI deve suonare ovunque, TapHome deve indirizzare il lettore su cui è attestato quell’ingresso.
  • L’app BluOS Controller gestisce al massimo otto gruppi da otto lettori, oppure quattro gruppi da sedici. Un interruttore TapHome gestisce una coppia primario–secondario, quindi un gruppo di tre lettori richiede un secondo interruttore.

Le richieste di raggruppamento usano una scrittura dei parametri che mescola la forma singolare e quella plurale dell’API. In pratica funziona perché la porta 11000 è il valore predefinito documentato, ma è utile saperlo se un comando di gruppo dovesse comportarsi in modo inatteso.

Pulsanti di esempio — dimostrazioni, non funzioni del lettore

Il template include due pulsanti chiamati Esempio – Jungle ed Esempio – Spegnimento. Sono dimostrazioni dello streaming da URL, non capacità del lettore: ciascuno interrompe la riproduzione, svuota la coda e riproduce un singolo file audio da un URL memorizzato nella variabile del dispositivo.

Sono pensati per essere modificati o eliminati. L’esempio Jungle punta a un host di campioni di terze parti fuori dal controllo di TapHome e smetterà di funzionare ogni volta che quel sito cambia. L’esempio Spegnimento punta a un MP3 ospitato da TapHome ed è un modello utilizzabile per un suono di campanello o di annuncio, se l’indirizzo viene sostituito con uno proprio — nota che l’indirizzo deve essere codificato in percentuale, perché viene passato al lettore senza modifiche.

Risoluzione dei problemi

Il lettore non risponde
  1. Apri http://<ip_lettore>:11000/SyncStatus nel browser — una risposta XML significa che il lettore è raggiungibile e l’API è attiva.
  2. Se non risponde, controlla l’indirizzo nella schermata Diagnostics dell’app BluOS Controller; un rinnovo DHCP potrebbe averlo spostato. Configura la prenotazione DHCP descritta sopra perché non accada più.
  3. Prova il nome host mDNS del lettore al posto dell’indirizzo IP.
  4. Verifica che l’unità di controllo TapHome e il lettore siano sulla stessa rete / VLAN e che nulla blocchi la porta 11000 tra i due.
L’interruttore di raggruppamento non si accende mai

La variabile IP sul dispositivo Raggruppa con lettore contiene ancora il segnaposto 192.168.x.x, oppure un indirizzo che non appartiene a un lettore BluOS. Impostala sull’indirizzo reale del lettore secondario — vedi la configurazione dopo l’importazione più sopra.

Un preset non fa nulla

O dietro quello slot non c’è alcun preset su questo lettore, oppure è stato usato lo slot 0. Apri l’app BluOS Controller, controlla quali id preset il lettore contiene davvero e mappa gli slot TapHome su quegli id. I preset vanno prima creati nell’app — il template non è in grado di crearli.

Brano successivo / precedente non fanno nulla

Il lettore non sta riproducendo dalla propria coda. Gli stream radio e gli ingressi fisici non sono basati sulla coda e l’avanzamento o il ritorno non si applicano a loro. Avvia la riproduzione da una playlist, da un album o dalla coda e i pulsanti torneranno a funzionare.

Le modifiche fatte nell’app BluOS compaiono in ritardo

Riproduzione casuale e ripetizione vengono lette dallo stato memorizzato dal modulo, che si aggiorna ogni 30 secondi. Il volume viene interrogato più spesso. I pulsanti di riproduzione e Preset sono solo in scrittura e non riflettono affatto le modifiche esterne.

Il lettore è silenziato ma TapHome mostra un livello

Il silenziamento viene scritto quando si spegne il dimmer del volume, ma lo stato di silenziamento non viene mai riletto. Un lettore silenziato dall’app BluOS Controller o dal suo telecomando continua a mostrare in TapHome il livello di dimmer precedente. Spegni e riaccendi il dimmer per riallineare i due.

Dispositivi disponibili

Bluesound Modulo
Variabili personalizzate

Bluesound

Lettura (modulo)
var response := SENDHTTPREQUEST("/Status");
shuffle := PARSEXML(response.Content, "//shuffle");
repeat := PARSEXML(response.Content, "//repeat");
Brano successivo Pulsante

Passa al brano successivo nella coda di riproduzione; alla fine della coda torna al primo brano indipendentemente dall'impostazione di ripetizione

button push

Brano successivo

Scrittura stato pulsante
SENDHTTPREQUEST("/Skip");
Volume Dimmer

Volume del lettore — spegnendo il dimmer il lettore viene silenziato anziché portato a zero, e la modifica si applica a tutti i lettori del gruppo

numeric Unità: % dimmer

Volume

Lettura livello
var response := SENDHTTPREQUEST("/Volume");
PARSEXML(response.Content, "//volume") / 100;
Scrittura livello
if St
	SENDHTTPREQUEST("/Volume?level=" + round(Le*100) + "&tell_slaves=1");
else
	SENDHTTPREQUEST("/Volume?mute=1&tell_slaves=1");
end
Riproduzione casuale Interruttore

Stato della riproduzione casuale della coda — lo stato viene letto dal valore /Status memorizzato nel modulo, mentre la scrittura passa via HTTP

boolean switch
Valori / Stati: ${shuffle} · ${noShuffle}

Riproduzione casuale

Lettura stato interruttore
shuffle
Scrittura stato interruttore
var response := SENDHTTPREQUEST("/Shuffle?state=" + St);
shuffle := PARSEXML(response.Content, "//playlist/@shuffle");
Ripetizione Interruttore multivalore

Modalità di ripetizione — nessuna ripetizione, ripeti un brano o ripeti l'intera coda

enum multi-value
Valori / Stati: Nessuna ripetizione · Ripeti brano · Ripeti tutto

Ripetizione

Lettura stato interruttore
switch(repeat,0,2,1,1,0)
Scrittura stato interruttore
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");
Pausa Pulsante

Alterna tra pausa e riproduzione — premendo di nuovo il pulsante la riproduzione riprende

button push

Pausa

Scrittura stato pulsante
SENDHTTPREQUEST("/Pause?toggle=1");
Brano precedente Pulsante

Riavvia il brano corrente se è in riproduzione da più di quattro secondi, altrimenti torna al brano precedente nella coda

button push

Brano precedente

Scrittura stato pulsante
SENDHTTPREQUEST("/Back");
Play Pulsante

Avvia la riproduzione della sorgente audio corrente — riprende un lettore in pausa, ma non uno fermato

button push

Play

Scrittura stato pulsante
SENDHTTPREQUEST("/Play");
Preset Interruttore multivalore

Carica un preset salvato sul lettore — stazioni radio, playlist e ingressi, creabili solo nell'app BluOS Controller. Solo in scrittura, quindi l'interruttore non indica quale preset è in riproduzione

enum multi-value

Preset

Scrittura stato interruttore
SENDHTTPREQUEST("/Preset?id=" + Mu);
Esempio – Jungle Pulsante

Dimostrazione dello streaming da URL, non una funzione del lettore — interrompe la riproduzione, svuota la coda e riproduce un singolo file audio dall'indirizzo configurato

button push
Variabile: encodedURLIndirizzo con codifica URL del flusso audio riprodotto da questo pulsante. Il valore predefinito punta a un host di esempi di terze parti e andrebbe sostituito

Esempio – Jungle

Scrittura stato pulsante
SENDHTTPREQUEST("/Stop");
SENDHTTPREQUEST("/Clear");
SENDHTTPREQUEST("/Play?url=" + encodedURL);
Esempio – Spegnimento Pulsante

Seconda dimostrazione dello streaming da URL — interrompe la riproduzione, svuota la coda e riproduce un singolo file audio dall'indirizzo configurato

button push
Variabile: encodedURLIndirizzo con codifica URL del flusso audio riprodotto da questo pulsante

Esempio – Spegnimento

Scrittura stato pulsante
SENDHTTPREQUEST("/Stop");
SENDHTTPREQUEST("/Clear");
SENDHTTPREQUEST("/Play?url=" + encodedURL);
Raggruppa con lettore Interruttore

Collega un secondo lettore BluOS come secondario del gruppo — il lettore controllato da TapHome diventa il primario e distribuisce il proprio audio. Dopo l'importazione occorre inserire l'indirizzo IP dell'altro lettore

boolean switch
Valori / Stati: ON · OFF
Variabile: IPIndirizzo IP del lettore BluOS da collegare come secondario del gruppo. Il valore fornito 192.168.x.x è un segnaposto e va sostituito, altrimenti l'interruttore resta sempre spento

Raggruppa con lettore

Lettura stato interruttore
var response := SENDHTTPREQUEST("/SyncStatus");
var slaves := PARSEXML(response.Content, "//SyncStatus/slave/@id");
indexof(slaves, IP) >= 0
Scrittura stato interruttore
if St
	SENDHTTPREQUEST("/AddSlave?slave=" + IP + "&ports=11000");
else
	SENDHTTPREQUEST("/RemoveSlave?slave=" + IP + "&ports=11000");
end
Stop Pulsante

Interrompe la riproduzione — a differenza della pausa, un lettore fermato non può essere ripreso con Play

button push

Stop

Scrittura stato pulsante
SENDHTTPREQUEST("/Stop");
Connessione: Packet Parser → HTTP • Hostname: {MODEL}-{MAC4}.local
Possibili miglioramenti (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.

Fonti

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Verificato da TapHome

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale