#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
// WiFi (Wokwi)
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
// Adafruit IO
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define IO_USERNAME "Nesanjoe"
#define IO_KEY "aio_nECi452kP8M9UJGtMV7j4axBa74l"
// LED Feed
#define LED_FEED IO_USERNAME "/feeds/led"
// WiFi client
WiFiClient client;
// MQTT client
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT,
IO_USERNAME, IO_KEY);
// SUBSCRIBE object (IMPORTANT)
Adafruit_MQTT_Subscribe ledFeed =
Adafruit_MQTT_Subscribe(&mqtt, LED_FEED);
const int ledPin = 2;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Connect WiFi
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected");
// Subscribe to feed
mqtt.subscribe(&ledFeed);
}
void loop() {
// Reconnect MQTT if needed
if (!mqtt.connected()) {
Serial.print("Connecting to MQTT... ");
while (mqtt.connect() != 0) {
Serial.println("Failed, retrying...");
delay(2000);
}
Serial.println("Connected!");
}
// Process incoming packets
mqtt.processPackets(100);
// Read subscription
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &ledFeed) {
char *value = (char *)ledFeed.lastread;
Serial.print("Received: ");
Serial.println(value);
if (strcmp(value, "1") == 0) {
digitalWrite(ledPin, HIGH);
Serial.println("LED ON");
}
else {
digitalWrite(ledPin, LOW);
Serial.println("LED OFF");
}
}
}
mqtt.ping();
}