Aller au contenu
Pour les développeurs

Étendre Presenter avec MQTT

Chaque installation de Presenter intègre un serveur MQTT local. Connectez-vous en TCP ou WebSocket sur le réseau local pour créer vos commandes personnalisées, outils de scène, passerelles d’éclairage ou automatisations, sans modifier Presenter.

Vous cherchez plutôt une présentation du produit ? Découvrir Presenter.

Pourquoi MQTT ?

Presenter utilise déjà MQTT pour Remote par code QR, l’état en direct et les sujets de l’IA locale. Le même serveur est accessible à vos clients sur le réseau local de l’Église. Le serveur intégré est conforme à MQTT v5 et accepte aussi les clients MQTT v3.1.1 / v3.0 : vous pouvez utiliser l’une ou l’autre version. Vous publiez et vous abonnez comme dans toute application MQTT ; Presenter répond aux messages de commande et publie les mises à jour de la présentation et de son état.

Se connecter au serveur intégré

Lorsque Presenter fonctionne, le serveur écoute sur l’adresse réseau locale de l’ordinateur. Si le port par défaut est occupé, Presenter essaie le suivant dans la plage.

TransportPoints d’accèsPrécisions
MQTT sur TCPtcp://<presenter-lan-ip>:1883–1887Adapté aux scripts de bureau, à Node, Python et aux passerelles matérielles.
MQTT sur WebSocketws://<presenter-lan-ip>:9883–9887/mqttLe chemin est toujours /mqtt. Utilisez-le depuis un navigateur ou un client compatible WebSocket.
tcp://192.168.1.40:1883
ws://192.168.1.40:9883/mqtt

Premiers pas

Utilisez un client MQTT v5 ou v3.x, en TCP ou WebSocket. Connectez-le à l’hôte Presenter lorsqu’une rencontre est ouverte, ou après le démarrage de Remote pour que le serveur soit actif. Les échanges de Remote avec Presenter utilisent MQTT 3.1.1 ; vos clients peuvent employer les fonctions propres à v5, qui sont adaptées lors des échanges avec des clients v3.

  • Restez sur le même Wi-Fi ou réseau local que l’ordinateur Presenter pour l’accès local.
  • Retrouvez l’adresse IP de l’hôte dans l’interface réseau ou le code QR Remote de Presenter, ou dans la liste des clients de votre routeur.
  • Si 1883 ou 9883 ne répond pas, essayez le port suivant dans la plage de secours : Presenter consigne les ports utilisés au démarrage.
  • QoS 0 convient généralement aux commandes en direct ; gardez les messages petits et encodez-les en JSON UTF-8.

Arborescence des sujets Remote

La plupart des intégrations utilisent le préfixe des sujets Remote. Remplacez {prefix} par proweave/remote dans une configuration locale courante, ou par proweave/<machine-scope>/remote lorsque Presenter utilise un périmètre lié à l’adresse MAC de l’ordinateur.

Préfixe : proweave/remote par défaut en réseau local, ou proweave/<scope>/remote. Les identifiants de session proviennent de l’association : associez d’abord le client, puis publiez sous cette session.

Structure du sujetSensRôle
{prefix}/pairClient → PresenterDemande OTP / d’association pour créer une session
{prefix}/<sessionId>/pairedPresenter → ClientAssociation acceptée ou refusée
{prefix}/<sessionId>/controlClient → PresenterCommandes (advance, goto, blank, …)
{prefix}/<sessionId>/heartbeatClient → PresenterMaintient la session active ; inclure le rôle controller ou viewer
{prefix}/<sessionId>/deckPresenter → ClientJSON de la présentation complète pour les clients de commande ou de préparation
{prefix}/<sessionId>/statePresenter → ClientÉtat en direct de la projection et de la commande
{prefix}/<sessionId>/viewer/statePresenter → ClientEnveloppe de l’image matricielle de la diapositive Spectateur, avec ses variantes découpées
{prefix}/ai/*Moteur ↔ PresenterSujets de l’IA locale

Structure du message de commande

Publiez du JSON sur {prefix}/<sessionId>/control après une association réussie. Les noms des champs correspondent à remoteControlPayload dans Presenter : cmd et les champs de navigation facultatifs.

{
  "cmd": "advance"
}

{
  "cmd": "goto",
  "deckIdx": 2,
  "page": 0
}
cmdSignification
presentDémarrer la projection
stopArrêter la projection
advanceÉlément ou étape de diapositive suivant
backÉlément ou étape de diapositive précédent
gotoAller à la position indiquée par deckIdx / page et les champs associés
blankMasquer ou rétablir la projection
nextItemÉlément suivant de la présentation
prevItemÉlément précédent de la présentation
setStanzaAller à une partie de la structure du chant
setPageDéfinir la page d’un PDF ou d’un élément à plusieurs pages
pingVérifier que la connexion est active

Sécurité et limites

  • Traitez le serveur comme un service local : ne redirigez pas son port vers Internet.
  • Toute personne pouvant publier sur le sujet /control d’une session associée peut commander la présentation en direct ; protégez le réseau et le parcours d’association.
  • Les sujets sous proweave/<scope>/remote/ peuvent aussi être relayés vers SundayAssist Cloud lorsque la commande par le cloud avec Complete est activée : testez d’abord en réseau local.
  • Cette page décrit l’interface d’intégration livrée ; des champs peuvent s’ajouter. Pendant le prototypage, observez de préférence /deck et /state dans une véritable session Remote.
  • Les changements incompatibles de noms de sujets sont rares ; si vous publiez une intégration, prévenez-nous à [email protected] pour que nous puissions vous avertir avant un renommage.

Construire avec nous

Vous souhaitez contribuer au projet ou avez besoin d’une interface stable pour un produit audiovisuel d’Église ? Parlons-en avec plaisir.