#include <WiFi.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String payload;
const char* username = "Token:token_SL2S6jWRhhr6dtBg";
const char* channel = "geolocalisation";
String topic_gps="geolocalisation/location";
String topic_temp="geolocalisation/temperature";
String topic_hum="geolocalisation/humidity";
String topic_speed="geolocalisation/windspeed";
String clientID = "abir";
// The Beebotte server
const char host[] = "ds-lce3-2023.japaneast.cloudapp.azure.com";
WiFiClient Clientwifi;
PubSubClient clientmqtt(host,1883,Clientwifi);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(2000);
}
clientmqtt.setServer("ds-lce3-2023.japaneast.cloudapp.azure.com",1883);
}
void callback(char* topic, byte* payload, unsigned int length)
{
Serial.println("mqtt callback executed");
Serial.print("topic");
Serial.println(topic);
char message[length+1];
for(int i=0;i<length;i++)
message[i]=(char)payload[i];
Serial.print("received Json:");
Serial.println(message);
StaticJsonDocument<1024> doc;
deserializeJson(doc,message);
float longitude = doc["location"]["logitude"];
Serial.println(longitude);
float latitude = doc["location"]["latitude"];
Serial.println(latitude);
float temp = doc["data"]["temperature"];
Serial.println(temp);
float hum = doc["data"]["humidity"];
Serial.println(hum);
float speed = doc["windSpeed"];
Serial.println(speed);
}
void publish(const char* resource, float data)
{
StaticJsonDocument<128> root;
root["geolocalisation"] = channel;
root["temperature"] = temp;
root["humidity"] = hum;
root["windSpeed"] = speed;
root["data"]["latitude"] = latitude;
root["data"]["longitude"] = longitude;
}
void loop() {
if(!clientmqtt.connected()){
Serial.println("MQTT not connected");
clientmqtt.connect(clientID.c_str(),username,NULL);
clientmqtt.subscribe("geolocalisation/location");
clientmqtt.subscribe("geolocalisation/temperature");
clientmqtt.subscribe("geolocalisationt/humidity");
clientmqtt.subscribe("geolocalisation/windspeed");
delay(3000);
Serial.println("MQTT Try to connect");
}
else // client connected
{
clientmqtt.setCallback(callback);
clientmqtt.loop();
}
}
/*
https://wokwi.com/projects/383743707764206593
On se propose de réaliser un système IoT à base de microcontrôleur ESP32
qui permet de:
1.récupérer les données suivant (longitude,latitude,temperature,humidity et windSpeed) a partir de Serveur Beebotte
2.Mettre à jour notre Broker MQTT
parametre Beebotte
channel:geolocalisation
Channel Token:token_SL2S6jWRhhr6dtBg
resource:"data" de type GPS (nous devons envoyer le format suivant :{ "latitude":36.8340123, "longitude":10.1440694})
resource:"temperature"
resource:"humidity"
resource:"windSpeed"
lien public de visualisation:https://beebotte.com/dash/7c16c760-978b-11ee-a7c0-99ff9311e4cf
parametre de Broker MQTT:
server: ds-lce3-2023.japaneast.cloudapp.azure.com
port:1883
username:student
password:lce3
clientID: <Your Name>
topic:lundi/ds
FORMAT Json File: {"nom_prenom":"kamel echaieb","data":{"Temp":24,"hum":72},"loction"{ "latitude":36.8340123, "longitude":10.1440694}}
*/
/*
https://wokwi.com/projects/383743707764206593
On se propose de réaliser un système IoT à base de microcontrôleur ESP32
qui permet de:
1.récupérer les données suivant (longitude,latitude,temperature,humidity et windSpeed) a partir de Serveur Beebotte
2.Mettre à jour notre Broker MQTT
parametre Beebotte
channel:geolocalisation
Channel Token:token_SL2S6jWRhhr6dtBg
resource:"data" de type GPS (nous devons envoyer le format suivant :{ "latitude":36.8340123, "longitude":10.1440694})
resource:"temperature"
resource:"humidity"
resource:"windSpeed"
lien public de visualisation:https://beebotte.com/dash/7c16c760-978b-11ee-a7c0-99ff9311e4cf
parametre de Broker MQTT:
server: ds-lce3-2023.japaneast.cloudapp.azure.com
port:1883
username:student
password:lce3
clientID: <Your Name>
topic:lundi/ds
FORMAT Json File: {"nom_prenom":"kamel echaieb","data":{"Temp":24,"hum":72},"loction"{ "latitude":36.8340123, "longitude":10.1440694}}
*/