#include <ArduinoJson.h>
#include "PubSubClient.h"
#include "WiFi.h"
const int LED_PIN = 22;
WiFiClient wificlient;
PubSubClient MQTTClient(wificlient);
const char* brokerHostname = "mqtt.beebotte.com";
const int brokerPort = 1883;
const char* username = "token:token_kUnyAhGfna6GKwbP";
const char* password = "";
const char* pubTopic = "revision/pub";
const char* testTopic = "revision/test";
void callback(char* topic, byte* payload, unsigned int length) {
Serial.println("detected publish");
Serial.println((char*)payload);
if(!strcmp(topic, pubTopic)) {
DynamicJsonDocument subDoc(1024);
deserializeJson(subDoc, payload);
boolean data = subDoc["data"];
DynamicJsonDocument pubDoc(1024);
pubDoc["channel"] = "revision";
pubDoc["resource"] = "test";
pubDoc["write"] = true;
pubDoc["data"] = subDoc["data"];
char Buffer[128];
serializeJson(pubDoc, Buffer, sizeof(Buffer));
MQTTClient.publish(testTopic, Buffer, true);
if(data) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
}
void connect_(const char* clientID) {
while(!MQTTClient.connected()){
if(MQTTClient.connect(clientID, username, password)) {
//Subscribe to test
MQTTClient.subscribe(pubTopic);
Serial.print("MQTTClient Connected!");
}
};
}
void setup() {
Serial.begin(9600);
WiFi.begin("Wokwi-GUEST", "");
while(WiFi.status() != WL_CONNECTED)
{
Serial.println(".");
delay(1000);
}
pinMode(LED_PIN, OUTPUT);
MQTTClient.setServer(brokerHostname, brokerPort);
MQTTClient.setCallback(callback);
}
void loop() {
if(!MQTTClient.connected()){
connect_("yassineahmedali");
}
delay(1000);
MQTTClient.loop();
}