//#include <ESP8266WiFi.h>
#include <WiFi.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>
//pub
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String payload;
String channel="TP2";
String topic_Led1="TP2/ledR";
String topic_Led2="TP2/ledG";
String topic_Led3="TP2/ledB";
const char clientID[] = "";
const char* server = "mqtt.beebotte.com";
//const char* username ="token:token_BJuKXbM3FEmeANnM";
const char channelToken[] = "token_BJuKXbM3FEmeANnM";
const int port = 1883;
WiFiClient client;
PubSubClient clientmqtt(server,1883,client);
void setup() {
pinMode(23,OUTPUT); pinMode(22,OUTPUT); pinMode(21,OUTPUT);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
clientmqtt.setServer(server,port);
Serial.println("Server ready");
}
void loop() {
if(!clientmqtt.connected()){
Serial.println("MQTT not connected");
String username = "token:";
username += channelToken;
Serial.print("username=");Serial.println(username.c_str());
clientmqtt.connect(clientID, username.c_str(),NULL);
/*
String ClientID=String(random(1000));
clientmqtt.connect(ClientID.c_str(),username,NULL);
*/
delay(3000);
Serial.println("MQTT Try to connect");
clientmqtt.subscribe("TP2/ledR");
clientmqtt.subscribe("TP2/ledG");
clientmqtt.subscribe("TP2/ledB");
}
else // client connected
{
clientmqtt.setCallback(callback);
clientmqtt.loop();
}
}
// Handle a received message
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);
//Votre traitement............................;
DynamicJsonDocument doc(1024);
deserializeJson(doc, message);
boolean data = doc["data"];
if (strcmp(topic, "TP2/ledR") == 0 ){
Serial.println(topic);
Serial.println(data);
digitalWrite(23, data);
}
if (strcmp(topic, "TP2/ledG") == 0 ){
digitalWrite(22, data);
}
if (strcmp(topic, "TP2/ledB")== 0 ){
digitalWrite(21, data);
}
}