Por que MQTT?
O Presenter já usa MQTT para Remote por QR, estado ao vivo e tópicos de IA local. O mesmo broker está disponível aos seus clientes na LAN da igreja. O broker integrado é compatível com MQTT v5 e também aceita clientes MQTT v3.1.1 / v3.0. Você publica e assina como em qualquer aplicativo MQTT; o Presenter reage às mensagens de controle e publica atualizações da apresentação e do estado.
Conectar ao broker integrado
Com o Presenter aberto, o broker escuta no endereço LAN da máquina. Se a porta padrão estiver ocupada, o Presenter tenta a próxima do intervalo.
| Transporte | Endereços de conexão | Notas |
|---|---|---|
| MQTT por TCP | tcp://<presenter-lan-ip>:1883–1887 | Ideal para scripts de desktop, Node, Python e interfaces de hardware. |
| MQTT por WebSocket | ws://<presenter-lan-ip>:9883–9887/mqtt | O caminho é sempre /mqtt. Use em navegadores ou clientes com WebSocket. |
tcp://192.168.1.40:1883
ws://192.168.1.40:9883/mqttPrimeiros passos
Use um cliente MQTT v5 ou v3.x (TCP ou WebSocket). Aponte ao host do Presenter com um encontro aberto ou após iniciar o Remote, para o broker estar ativo. O tráfego do próprio Remote do Presenter usa MQTT 3.1.1; recursos exclusivos da v5 podem ser usados pelos seus clientes e são adaptados ao misturar com clientes v3.
- Fique no mesmo Wi-Fi / LAN do computador Presenter para acesso local.
- Descubra o IP do host na interface de rede / QR do Remote no Presenter ou na lista de clientes do roteador.
- Se 1883 ou 9883 falhar, tente a próxima porta do intervalo — o Presenter registra as portas vinculadas na inicialização.
- QoS 0 é comum para controle ao vivo; mantenha as mensagens pequenas e codificadas em JSON UTF-8.
Árvore de tópicos do Remote
A maioria das integrações usa o prefixo de tópicos do Remote. Substitua {prefix} por proweave/remote em uma configuração de rede local comum, ou por proweave/<machine-scope>/remote quando o Presenter estiver associado ao MAC de uma máquina.
Prefixo: proweave/remote (padrão na rede local) ou proweave/<scope>/remote. Os IDs de sessão são gerados na conexão: conecte primeiro e depois publique nessa sessão.
| Padrão do tópico | Direção | Finalidade |
|---|---|---|
| {prefix}/pair | Cliente → Presenter | Solicitação de OTP / conexão para criar uma sessão |
| {prefix}/<sessionId>/paired | Presenter → Cliente | Conexão aceita ou recusada |
| {prefix}/<sessionId>/control | Cliente → Presenter | Comandos (advance, goto, blank, …) |
| {prefix}/<sessionId>/heartbeat | Cliente → Presenter | Manter a sessão ativa; incluir a função controller ou viewer |
| {prefix}/<sessionId>/deck | Presenter → Cliente | JSON completo da apresentação para controles / editores |
| {prefix}/<sessionId>/state | Presenter → Cliente | Estado ao vivo da projeção / do controle |
| {prefix}/<sessionId>/viewer/state | Presenter → Cliente | Envelope com a imagem rasterizada do slide para o visualizador (e variantes em partes) |
| {prefix}/ai/* | Motor ↔ Presenter | Tópicos da IA local |
Estrutura da mensagem de controle
Publique JSON em {prefix}/<sessionId>/control após a conexão ser aceita. Os nomes dos campos correspondem a remoteControlPayload do Presenter (cmd e campos opcionais de navegação).
{
"cmd": "advance"
}
{
"cmd": "goto",
"deckIdx": 2,
"page": 0
}| cmd | Significado |
|---|---|
| present | Iniciar apresentação |
| stop | Parar apresentação |
| advance | Próximo item / etapa do slide |
| back | Item / etapa do slide anterior |
| goto | Ir para uma posição usando deckIdx / page (e campos relacionados) |
| blank | Apagar ou restaurar a tela |
| nextItem | Próximo item da apresentação |
| prevItem | Item anterior da apresentação |
| setStanza | Ir para uma parte da música |
| setPage | Definir a página de um PDF / item com várias páginas |
| ping | Verificação de atividade |
Segurança e limites
- Trate o broker como um serviço de rede local: não redirecione suas portas para a internet pública.
- Qualquer pessoa que consiga publicar no tópico /control de uma sessão conectada pode controlar a apresentação ao vivo; proteja a rede e o processo de conexão.
- Os tópicos em proweave/<scope>/remote/ também podem ser encaminhados para o SundayAssist Cloud quando o controle remoto pela nuvem do Complete estiver habilitado. Teste primeiro na rede local.
- Esta página documenta a interface de integração disponível na versão atual; novos campos podem ser adicionados. Durante a criação do protótipo, observe /deck e /state de uma sessão real do Remote.
- Alterações incompatíveis nos nomes dos tópicos são raras. Se você publicar uma integração, avise pelo endereço [email protected] para que possamos informar antes de uma mudança de nome.
Construa com a gente
Quer contribuir com o projeto ou precisa de um contrato de integração estável para um produto audiovisual de igreja? Vamos conversar.