#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
// WiFi credentials
const char *ssid = "Wokwi-GUEST";
const char *password = "";
// Adafruit IO credentials
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "anilvhatkar"
#define AIO_KEY "aio_sfab64Ct2obkeuRaIDbB9yO5aLkN"
// Store the MQTT server, username, and password in flash memory.
// This is required for using the Adafruit MQTT library.
const char MQTT_SERVER[] PROGMEM = AIO_SERVER;
const char MQTT_USERNAME[] PROGMEM = AIO_USERNAME;
const char MQTT_PASSWORD[] PROGMEM = AIO_KEY;
const char LED_FEED[] PROGMEM = AIO_USERNAME "/feeds/led";
#define ledPin 14
// Create a WiFiClient object
WiFiClient wifiClient;
// Define the Adafruit IO Feed
Adafruit_MQTT_Client mqtt(&wifiClient, AIO_SERVER , AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Subscribe feed = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/led");
void setup() {
Serial.begin(9600);
Serial.print("Connecting to WiFi");
WiFi.begin(ssid,password, 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
// Connect to Adafruit IO
mqtt.subscribe(&feed);
pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,HIGH);
}
void loop() {
// Ensure the connection to Adafruit IO is maintained
if (!mqtt.connected()) {
connectToMQTT();
}
// Monitor the Adafruit IO feed
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &feed) {
Serial.print(F("Got: "));
Serial.println((char *)feed.lastread);
String data = (char *) feed.lastread;
Serial.print("data :");
Serial.println(data);
if (data == "1")
{
digitalWrite(ledPin,HIGH);
}
else if (data == "0")
{
digitalWrite(ledPin,LOW);
}
}
}
}
void connectToMQTT() {
int8_t ret;
// Stop if already connected.
if (mqtt.connected()) {
return;
}
Serial.print("Connecting to MQTT... ");
while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Retrying MQTT connection in 5 seconds...");
mqtt.disconnect();
delay(5000); // wait 5 seconds
}
Serial.println("MQTT Connected!");
}