This commit is contained in:
2025-12-08 12:46:07 +01:00
parent 7abd6a1a04
commit 457aa963c2

59
tp3.md
View File

@@ -39,7 +39,7 @@ docker run --detach --name rabbitmq \
--network proxy_net \ --network proxy_net \
-p "5672:5672" -p "1883:1883" \ -p "5672:5672" -p "1883:1883" \
-e "PRABBITMQ_DEFAULT_USER=admin" \ -e "PRABBITMQ_DEFAULT_USER=admin" \
-e "RABBITMQ_DEFAULT_PASS=ChangeMe" \ -e "RABBITMQ_DEFAULT_PASS=geii2025" \
-e "RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_mqtt tcp_listeners [1883]" \ -e "RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbitmq_mqtt tcp_listeners [1883]" \
-v rabbitmq_data:/var/lib/rabbitmq \ -v rabbitmq_data:/var/lib/rabbitmq \
-l "caddy=rabbitmq.localhost" \ -l "caddy=rabbitmq.localhost" \
@@ -49,6 +49,8 @@ docker run --detach --name rabbitmq \
sh -c "rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_management && rabbitmq-server" sh -c "rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_management && rabbitmq-server"
``` ```
Ajouter la bibliothèque Dashboard2
## Programme C ## Programme C
Ajouter la bibliothèque MQTT Ajouter la bibliothèque MQTT
@@ -72,6 +74,49 @@ Ajouter la bibliothèque MQTT
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
``` ```
Déclarer les constantes
```c
/* Configuration MQTT */
const std::string ADDRESS = "tcp://rabbitmq:1883";
const std::string CLIENTID = "CppClientTP";
const std::string TOPIC = "geii/ordre/#";
const int QOS = 1;
const int CYCLE_MS = 100;
```
Écrire la fonction qui va traiter l'arrivée des messages
```c
class callback : public virtual mqtt::callback {
public:
void message_arrived(mqtt::const_message_ptr msg) override {
std::string payload = msg->to_string();
//... Effectuer les actions en conséquences
}
};
```
```c
mqtt::async_client client(ADDRESS, CLIENTID);
callback cb;
client.set_callback(cb);
mqtt::connect_options connOpts;
connOpts.set_clean_session(true);
connOpts.set_user_name("admin");
connOpts.set_password("geii2025");
try {
client.connect(connOpts)->wait();
client.start_consuming();
client.subscribe(TOPIC, QOS)->wait();
} catch (const mqtt::exception &exc) {
std::cerr << "Erreur MQTT: " << exc.what() << "\n";
return 1;
}
```
Dans la fonction ProcessMQTT créer un objet JSON avec les valeurs des différents capteurs. Dans la fonction ProcessMQTT créer un objet JSON avec les valeurs des différents capteurs.
```c ```c
@@ -89,3 +134,15 @@ auto msg = mqtt::make_message("geii/telemetry", payload);
msg->set_qos(1); msg->set_qos(1);
client->publish(msg); client->publish(msg);
``` ```
Après la boucle principale déconnecter MQTT.
```c
try {
client.unsubscribe(TOPIC)->wait();
client.stop_consuming();
client.disconnect()->wait();
} catch(const mqtt::exception &exc){
std::cerr << "Erreur déconnexion MQTT: " << exc.what() << "\n";
}
```