#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
WiFiClient Clientwifi;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char host[] = "mqtt.beebotte.com";
PubSubClient clientmqtt(host,1883,Clientwifi);
const char channelToken[] = "token_IGp6v1qqBmVQu3ZY";
String payload ;
// Channel name at Beebotte
const char *channel = "channel1";
// resource name at Beebotte
const char *topicr = "channel1/ledr";
const char *topicv = "channel1/ledv";
const char *topicb= "channel1/ledb";
// client ID
const char clientID[] = "hibalimeme";
// The Beebotte server
void setup()
{
Serial.begin(115200);
Serial.println();
pinMode(23, OUTPUT);
pinMode(22, OUTPUT);
pinMode(21, OUTPUT);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi Connected");
clientmqtt.setServer(host,1883);
}
void loop()
{
if (!clientmqtt.connected()){
Serial.print("not connected");
clientmqtt.connect(clientID,"token:token_IGp6v1qqBmVQu3ZY",NULL);
delay(5000);
Serial.print("connected");
clientmqtt.subscribe("channel1/ledr");
clientmqtt.subscribe("channel1/ledv");
clientmqtt.subscribe("channel1/ledb");
}
else{
clientmqtt.setCallback(callback);
clientmqtt.loop();
delay(2000);
}
}
//callback
void callback(char*topic,byte* payload,unsigned int lenght )
{
Serial.println("MQTT callback executed");
Serial.print("topic:");
Serial.println(topic);
char message[lenght+1];
for(int i=0;i<lenght;i++){
message[i] = (char)payload[i];
}
Serial.print("recieved json:");
Serial.println(message);
//traintement
StaticJsonDocument<400> doc;
deserializeJson(doc, message);
boolean etat=doc["data"];
if (strcmp(topic,"channel1/ledr")==0){
digitalWrite(23, etat);
Serial.println("led red switched");
}
if (strcmp(topic,"channel1/ledb")==0){
digitalWrite(22, etat);
Serial.println("led blue switched");
}
if (strcmp(topic,"channel1/ledv")==0){
digitalWrite(21, etat);
Serial.println("led vert switched");
}
}