LOUD — Controle de Zonas via UDP
Referência técnica para integradores. Mostra como descobrir e controlar as zonas de um amplificador LOUD na rede local usando o protocolo ASCII dos dispositivos Xcene/LOUD.
1. Formato do pacote ASCII
Seção intitulada “1. Formato do pacote ASCII”$<ID>><PATH>@<PROTOCOLO>?<QUERY>&_to=<IP><SEED>#Exemplo:
$3A7F>/ac/zona0@0?vl=50&_to=192.168.0.10<123456#| Campo | Descrição |
|---|---|
$3A7F |
4 últimos dígitos do MAC do device destino. 0000 = broadcast. |
>/ac/zona0 |
Path da ação. |
@0 |
Número do protocolo (tabela abaixo). |
?vl=50 |
Parâmetros chave=valor separados por &. Vazio = leitura do estado atual. |
&_to=192.168.0.10 |
(Opcional) IP para resposta exclusiva. Device abre TCP de volta neste IP. |
<123456 |
Seed — número único por envio, evita processamento duplicado. Use 0 apenas para testes. |
# |
Fim do pacote. |
Os separadores $ > @ ? < # são obrigatórios, mesmo que o campo esteja vazio.
Tabela de protocolos
Seção intitulada “Tabela de protocolos”| Código | Nome | Uso |
|---|---|---|
0 |
Set Data | Ler ou definir valores no device |
1 |
Delete Data | Remover dados (ex.: itens de cena) |
8 |
Send All | Broadcast — mesma mensagem para vários devices |
9 |
Description | Descobrir ações e parâmetros disponíveis |
2. Device LOUD
Seção intitulada “2. Device LOUD”| Propriedade | Valor |
|---|---|
| ID | 3A7F |
| Modelo | Multiroom |
| Zonas de controle | /ac/zona0, /ac/zona1, /ac/zona2, /ac/zona3, /ac/zona4, /ac/zona5 |
| Config avançada de zonas | /lb/Zona (indexada por _n=0..5) |
Outras ações (Bluetooth, Inputs, IR, WiFi, modo Dualzone/Singlezone/4.1) também estão disponíveis via path /lb/*, mas não são cobertas aqui.
3. Descoberta — Protocolo 9 (DESCRIPTION)
Seção intitulada “3. Descoberta — Protocolo 9 (DESCRIPTION)”Pergunta ao device quais zonas e parâmetros ele expõe. Suporta wildcard ou path específico.
Listar todas as ações do device:
$3A7F>/*@9?<12345#Listar apenas a zona 0:
$3A7F>/ac/zona0@9?<12345#Modelo de resposta (zona 0):
$3A7F>/ac/zona0@9?{"name":"zona0","path":"/ac/zona0","params":[ {"name":"pw","friendlyName":"power","params":["toggle","on","off"],"type":"Boolean"}, {"name":"mt","friendlyName":"mute","params":["toggle","on","off"],"type":"Boolean"}, {"name":"in","friendlyName":"input","params":["AUX1","AUX2","AUX3","AUX4","AUX5","BT","OPT"],"type":"Chosen"}, {"name":"vl","friendlyName":"volume","params":["$inc=[1,20]","$dec=[1,20]","$max=99","$min=0"],"type":"Integer"}, {"name":"bs","friendlyName":"bass","params":["$inc=[1,20]","$dec=[1,20]","$max=0","$min=-15"],"type":"Integer"}, {"name":"tr","friendlyName":"treble","params":["$inc=[1,20]","$dec=[1,20]","$max=0","$min=-15"],"type":"Integer"}, {"name":"md","friendlyName":"middle","params":["$inc=[1,20]","$dec=[1,20]","$max=0","$min=-15"],"type":"Integer"}]}<12345#4. Parâmetros de uma zona (/ac/zonaN)
Seção intitulada “4. Parâmetros de uma zona (/ac/zonaN)”| Param | Nome amigável | Tipo | Valores / Faixa | Exemplo |
|---|---|---|---|---|
pw |
power | Boolean | on, off, toggle |
pw=on |
mt |
mute | Boolean | on, off, toggle |
mt=off |
in |
input | Chosen | AUX1, AUX2, AUX3, AUX4, AUX5, BT, OPT |
in=BT |
vl |
volume | Integer | 0 a 99 |
vl=50 |
bs |
bass | Integer | -15 a 0 (dB) |
bs=-5 |
tr |
treble | Integer | -15 a 0 (dB) |
tr=-3 |
md |
middle | Integer | -15 a 0 (dB) |
md=-2 |
5. Comandos práticos
Seção intitulada “5. Comandos práticos”Todos os exemplos usam a zona 0 (/ac/zona0) do device 3A7F. Para outras zonas, troque o path (/ac/zona1, /ac/zona2, …). A seed (<123#) deve ser trocada a cada envio.
5.1 Consultar estado completo
Seção intitulada “5.1 Consultar estado completo”Envio:
$3A7F>/ac/zona0@0?<111#Resposta:
$3A7F>/ac/zona0@0?code=1&pw=on&mt=off&in=AUX1&vl=50&bs=0&tr=0&md=0<111#code=1 = sucesso.
5.2 Ligar / desligar / toggle
Seção intitulada “5.2 Ligar / desligar / toggle”$3A7F>/ac/zona0@0?pw=on<112#$3A7F>/ac/zona0@0?pw=off<113#$3A7F>/ac/zona0@0?pw=toggle<114#Resposta (eco de confirmação):
$3A7F>/ac/zona0@0?code=1&pw=on<112#5.3 Mutar / desmutar
Seção intitulada “5.3 Mutar / desmutar”$3A7F>/ac/zona0@0?mt=on<115#$3A7F>/ac/zona0@0?mt=off<116#Resposta:
$3A7F>/ac/zona0@0?code=1&mt=on<115#5.4 Trocar fonte de áudio
Seção intitulada “5.4 Trocar fonte de áudio”$3A7F>/ac/zona0@0?in=AUX1<117#$3A7F>/ac/zona0@0?in=BT<118#$3A7F>/ac/zona0@0?in=OPT<119#Resposta:
$3A7F>/ac/zona0@0?code=1&in=BT<118#5.5 Definir volume
Seção intitulada “5.5 Definir volume”$3A7F>/ac/zona0@0?vl=75<120#Resposta:
$3A7F>/ac/zona0@0?code=1&vl=75<120#5.6 Ajustar equalização (graves, médios, agudos)
Seção intitulada “5.6 Ajustar equalização (graves, médios, agudos)”$3A7F>/ac/zona0@0?bs=-5<121#$3A7F>/ac/zona0@0?md=-3<122#$3A7F>/ac/zona0@0?tr=-2<123#Resposta:
$3A7F>/ac/zona0@0?code=1&bs=-5<121#6.7 Comando combinado (múltiplos parâmetros)
Seção intitulada “6.7 Comando combinado (múltiplos parâmetros)”$3A7F>/ac/zona0@0?pw=on&in=BT&vl=60&mt=off<124#Resposta:
$3A7F>/ac/zona0@0?code=1&pw=on&in=BT&vl=60&mt=off<124#6. Configuração avançada da zona (/lb/Zona)
Seção intitulada “6. Configuração avançada da zona (/lb/Zona)”/lb/Zona guarda a configuração persistente de cada zona (nome, limites, defaults). Como o device tem 6 zonas, as operações usam o parâmetro _n (0 a 5) para indicar qual zona está sendo lida/gravada.
Parâmetros
Seção intitulada “Parâmetros”| Param | Tipo | Faixa / Valores | Descrição |
|---|---|---|---|
nmc |
String | até 15 caracteres | Nome amigável da zona |
vli |
Integer | 0 a 30 |
Volume inicial (ao ligar) |
vll |
Integer | 40 a 99 |
Volume máximo permitido |
ii |
Chosen | AUX1..AUX5, BT, OPT |
Fonte padrão ao ligar |
mdda |
Chosen | Normal, Power Automático |
Modo de ligar automático |
md |
Integer | -15 a 0 |
Médio default |
tb |
Integer | -15 a 0 |
Agudo default |
bs |
Integer | -15 a 0 |
Grave default |
6.1 Ler a configuração da zona 0
Seção intitulada “6.1 Ler a configuração da zona 0”Envio:
$3A7F>/lb/Zona@0?_n=0<130#Resposta:
$3A7F>/lb/Zona@0?code=1&nmc=Sala&vli=15&vll=99&ii=AUX1&mdda=Normal&md=-5&tb=-3&bs=-2&_n=0<130#6.2 Renomear a zona 0 para “Sala”
Seção intitulada “6.2 Renomear a zona 0 para “Sala””$3A7F>/lb/Zona@0?nmc=Sala&_n=0<131#O valor em nmc pode ser URI-encoded se tiver espaços/acentos (ex.: nmc=Sala%20de%20Estar).
6.3 Definir volume inicial e máximo da zona 1
Seção intitulada “6.3 Definir volume inicial e máximo da zona 1”$3A7F>/lb/Zona@0?vli=20&vll=80&_n=1<132#7. Notas rápidas
Seção intitulada “7. Notas rápidas”- Seed única por envio: o device descarta pacotes com seed repetida recente (deduplicação anti-eco). Gere um número novo a cada pacote.
_to=<IP>: opcional mas recomendado quando você quer resposta unicast direta para a sua máquina (ex.: atrás de firewall multicast restritivo). O device também pode abrir TCP de volta neste IP na porta5203.- Separadores:
$ > @ ? < #são obrigatórios mesmo se o campo estiver vazio. Ex.: leitura sem parâmetros é$3A7F>/ac/zona0@0?<SEED#. - Envios sequenciais: equipamentos são low-energy; evite enviar múltiplos pacotes UDP em paralelo. Use intervalo de ~50 ms entre envios consecutivos.
codena resposta:code=1(ou que começa com1) indica sucesso. Respostas semcodeem protocolo@9(DESCRIPTION) são normais.- Broadcast
0000: substitua$3A7Fpor$0000para enviar a todos os devices da rede. Útil apenas para descoberta (/if/device@0), não para controle.