Fondamentalement, MQTT réduit la latence là où il y a une latence relativement élevée comme le Wi-Fi en gardant la connexion TCP active afin que les données puissent être publiées et reçues très rapidement. Il utilise le port 1883 et non 80. D'après ce que je comprends, les éditeurs et les abonnés se connectent une fois au courtier puis cinglent régulièrement le courtier pour maintenir la connexion active; La fréquence à laquelle le courtier reçoit un ping dépend de la période de maintien en vie préalablement convenue. Les paquets MQTT sont également nettement plus petits que les requêtes HTTP. Si la connexion est interrompue d'une manière ou d'une autre, le client essaie à plusieurs reprises de rétablir la connexion et, en cas de succès, les abonnés se réinscrivent.
Les abonnés définissent des rappels qui sont appelés après la mise à jour d'un sujet par un éditeur. . MQTT est le meilleur pour les travaux urgents où les requêtes HTTP prendraient trop de temps et où une notification rapide des sujets modifiés est souhaitée. Je ne suis pas sûr, mais cela consommera probablement plus d'énergie, car il y a cette question d'un lien TCP constant vers le courtier.
Puisque vous n'attendez que des mises à jour de données toutes les minutes, je pense qu'il est plus judicieux de se connecter et d'obtenir les données de flux du serveur toutes les 60 secondes. Vous pouvez utiliser l'horodatage Dernière mise à jour
du flux (s'il n'existe pas, créez-en un) pour vérifier si le flux a déjà été mis à jour par l'Arduino. Une technique MQTT passerait juste la plupart du temps connecté à un courtier sans raison puisque vous savez déjà que les événements de mise à jour se produisent toutes les minutes; c'est une quantité considérable de temps et d'énergie passé à attendre des données prévisibles.
Cependant, vous pouvez attendre environ 55 secondes, vous abonner au sujet et lorsque vous obtenez les nouvelles données, vous vous déconnectez puis attendez à nouveau 55 secondes, même si je ne sais pas si ce sera vraiment un amélioration par rapport à REST. Si vous utilisez cette méthode, vous pouvez également définir la période de maintien en vie à environ 10 secondes, afin que l'Arduino ait suffisamment de temps pour mettre à jour le flux avant que votre application ne soit notifiée et qu'il n'y ait pas besoin de pings réguliers.
Si vous décidez d'utiliser MQTT, consultez cette bibliothèque Arduino.