Le subscriber MQTT¶
Objectif : recevoir les mesures d'un vrai broker MQTT, en temps réel.
Ce que vous allez apprendre : le chemin de production complet. Un broker
pousse les messages ; forge iot:listen lance un MqttSubscriber qui, pour
chaque message, valide (parse_message) puis stocke
(IotEventRepository.insert). C'est l'aboutissement de la progression : les
mêmes données qu'en simulation, mais venues d'un vrai capteur.
Palier 2 du niveau avancé de la progression IoT, après Valider un message IoT.
Infrastructure requise
Recevoir de vrais messages demande un broker MQTT (par exemple Mosquitto) démarré et atteignable — à votre charge. Ce starter explique et câble le chemin ; il ne fournit pas le broker.
Ce que ce starter montre¶
- la chaîne réelle :
Mosquitto → forge iot:listen → MqttSubscriber → parse_message → insert; - une route qui affiche la configuration broker effective (hôte, topic, TLS) pour la vérifier avant de lancer le subscriber ;
- la commande officielle
forge iot:listen.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_iot.config.load_iot_config |
Lire la configuration broker à vérifier. | Forge IoT — configuration |
forge iot:listen (CLI) |
Lancer le MqttSubscriber sur le broker. |
Forge IoT — listen |
MqttSubscriber |
Recevoir, valider et stocker chaque message. | Forge IoT — architecture |
Tester¶
Ouvrez https://localhost:8000/iot-subscriber : la page récapitule le broker, le
topic et l'état TLS. Puis, avec un broker démarré :
Le subscriber se connecte, s'abonne au topic et stocke chaque message reçu. Consultez-les via le tableau de bord ou l'API JSON.
Le contrôleur¶
# mvc/controllers/iot_subscriber_controller.py
from forge_mvc_iot.config import load_iot_config
class IotSubscriberController(BaseController):
@staticmethod
def index(request: Request) -> Response:
cfg = load_iot_config()
return BaseController.render(
"iot_subscriber/index.html",
context={
"broker": f"{cfg.mqtt_host}:{cfg.mqtt_port}",
"topic": cfg.mqtt_topic,
"tls_enabled": cfg.mqtt_tls_enabled,
},
request=request,
)
Comprendre ce code¶
- La route ne lance pas le subscriber : recevoir en continu est le rôle d'une
commande CLI (
forge iot:listen), pas d'une requête web. La route sert à vérifier la configuration avant de lancer. - Le
MqttSubscriber(utilisé parforge iot:listen) applique le mêmeparse_messageque le palier précédent : le contrat est le point d'entrée unique, qu'on simule ou qu'on reçoive pour de vrai. - En TLS,
load_iot_configexposemqtt_tls_enabledet le fichier CA : la connexion sécurisée est explicite, jamais devinée.
À retenir¶
- Le temps réel passe par un broker +
forge iot:listen(unMqttSubscriber). - Le subscriber valide puis stocke chaque message — même contrat qu'en simulation.
- Une route web vérifie la config ; l'écoute continue est une commande CLI.
Après ce starter¶
Vous recevez les vraies données. Dernier palier : diagnostiquer le module quand quelque chose cloche.