/*
https://wokwi.com/projects/383852217730642945
On se propose de réaliser un système IoT à base de microcontrôleur ESP32
1. Créer une Dashboard (Deux Switches) sur votre compte BeeBotte
2. SI SW1 est activé
envoyer les informations suivant aux différentes ressources suivantes: votre-Nom votre-prenom du serveur Beebotte
3. SI SW2 est activé
envoyer le fichier Json suivant {"data":["Nom":"votre-Nom","Prenom":"votre-prenom"],"etat":"ok" } au Broker MQTT (topic:Mardi/Info)
4. configurer Beerule afin de garantir le remise à zéro du sw1 et sw2 s'ils sont à l'état "1"
parametre Beebotte
channel:Mardi
Channel Token:<a recuperer>
resource:"sw1"
resource:"sw2"
resource:"Nom"
resource:"Prenom"
parametre de Broker MQTT:
server: ds-lce3-2023.japaneast.cloudapp.azure.com
port:1883
username:student
password:lce3
clientID: <Your Name>
*/
#include <WiFi.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
WiFiClient WiFi;
HTTPClient http;
PubSubClient clientmqtt("ds-lce3-2023.japaneast.cloudapp.azure.com",1883);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("** Connected **");
clientmqtt.setServer("ds-lce3-2023.japaneast.cloudapp.azure.com",1883);
Serial.println("Server ready");
}
void loop() {
http.begin("http://beebotte.com/molkbouali/Mardi");
http.addHeader("Content-Type", "application/json");
http.addHeader("X-Auth-Token","token_sX5gIOfruS10Bb0e");
int httpResponseCode = http.GET();
String payload = http.getString();
StaticJsonDocument<1024> doc;
deserializeJson (doc, payload);
boolean SW1_status = doc["data"]["sw1"];
boolean SW2_status = doc["data"]["sw2"];
if (SW1_status){
DynamicJsonDocument prenom_Nom(1024);
prenom_Nom["data"]["Nom"]="Bouali";
prenom_Nom["data"]["Prenom"]="Molk";
serializeJson(prenom_Nom,PN);
int httpResponse2 = http.POST(PN);
http.end();
}
else if (SW2_status) { // preparer Json et l'envoyer au broker mqtt
DynamicJsonDocument mqtt_Json(1024);
mqtt_Json["data"]["Nom"]="Bouali";
mqtt_Json["data"]["Prenom"]="Molk";
mqtt_Json["etat"]="ok";
serializeJson(mqtt_Json,mq);
if (! clientmqtt.connected()) {
Serial.println("MQTT NOT connected");
delay(5000);
String username = "student";
String ClientID= "Molk"+ String(random(100));
clientmqtt.connect(ClientID.c_str(), username.c_str(),"lce3");
Serial.println("MQTT is trying to connect");
}
else { // Client connected
Serial.println("MQTT connected");
delay(1000);
clientmqtt.subscribe("Mardi/Info");
client.publish("Mardi/Info", mq);
clientmqtt.loop();
}
}
delay(4000);
}