Partie 3
Partie 3
Partie 3
Plan
Contact: chiheb.abid@fst.utm.tn
MQTT en bref
Qualité de service (QoS)
å La Qualité de Service (QoS) est un accord qui définit la garantie de livraison d’un message
spécifique et le type d’authentification utilisé
å Il y a trois niveaux de QoS dans MQTT
Les topics et les jokers (wildcards) Les topics et les jokers (wildcards)
Bonnes pratiques
1 Mise en place d’une application IOT
å Ne jamais utiliser un slash avant ( / )
Z Le slash avant introduit un niveau de sujet inutile avec un caractère zéro au début
2 Développer un client MQTT sur RPI
å N’utilisez jamais d’espaces dans un sujet
å Gardez le sujet court et concis
å Utilisez uniquement des caractères ASCII, évitez les caractères non imprimables
å Intégrer un identifiant unique ou le Client Id dans le sujet
å Ne vous abonnez pas à #
Présentation Chiheb Ameur ABID 19/ 32 Présentation Chiheb Ameur ABID 20/ 32
Développer un client MQTT sur RPI Développer un client MQTT sur RPI
Installation de la bibliothèque Paho MQTT C++ Installation de la bibliothèque Paho MQTT C++
Démarrer la réception des messages Z const_message_ptr : un pointeur sur l’objet encapsulant le message. Si
nullptr : échec de lecture
å Démarrer la réception asynchrone des messages et les stocker dans une file
void mqtt::async_client::start_consuming()
å Lecture non bloquante
bool mqtt::async_client::try_consume_message(const_message_ptr * msg)
å Renvoyer sous forme d’une chaine de caractère la charge utile d’un message reçu
string mqtt::message::to_string() const
Présentation Chiheb Ameur ABID 29/ 32 Présentation Chiheb Ameur ABID 30/ 32
Développer un client MQTT sur RPI Développer un client MQTT sur RPI
Exemple : Réception asynchrone et lecture synchrone des messages M ERCI POUR VOTRE ATTENTION
client.publish(pubmsg)->wait_for(TIMEOUT);
cout << "First message was sent..." << endl;
// Now try with itemized publish
mqtt::delivery_token_ptr pubtok;
pubtok = client.publish(TOPIC, PAYLOAD2);
pubtok->wait(); Questions ?
client.disconnect()->wait();
cout << "\nDisconnected" << endl;
return 0;
}