#include <WiFi.h>
#include <PubSubClient.h>
#include <digitalWriteFast.h>
#define LED 5
#define LED2 4
#define LED3 2
#define LDR_PIN 32
#define THRESHOLD_VAL 800
// WiFi and MQTT credentials
#define ORG "stuloy"
#define DEVICE_TYPE "abcd"
#define DEVICE_ID "1234"
#define TOKEN "12345678"
// MQTT topics
#define PUBLISH_TOPIC "iot-2/evt/Data/fmt/json"
#define SUBSCRIBE_TOPIC "iot-2/cmd/test/fmt/String"
// WiFi client and MQTT client
WiFiClient wifiClient;
PubSubClient client(wifiClient);
// Variable declarations
char server[] = ORG ".messaging.internetofthings.ibmcloud.com";
char authMethod[] = "use-token-auth";
char token[] = TOKEN;
char clientId[] = "d:" ORG ":" DEVICE_TYPE ":" DEVICE_ID;
char payloadBuffer[128]; // Buffer for MQTT payload
// Function prototypes
void callback(char* topic, byte* payload, unsigned int payloadLength);
void mqttConnect();
void wifiConnect();
void initManagedDevice();
void setup()
{
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
wifiConnect();
mqttConnect();
}
void loop()
{
if (!client.loop()) {
mqttConnect();
}
// Read LDR sensor
int ldrReading = analogRead(LDR_PIN);
if (ldrReading > THRESHOLD_VAL) {
int ledBrightness = map(ldrReading, 0, 1023, 0, 255);
digitalWriteFast(LED, ledBrightness);
digitalWriteFast(LED2, ledBrightness);
digitalWriteFast(LED3, ledBrightness);
}
else {
digitalWriteFast(LED, LOW);
digitalWriteFast(LED2, LOW);
digitalWriteFast(LED3, LOW);
}
}
void mqttConnect()
{
if (!client.connected()) {
Serial.print("Connecting to MQTT server...");
while (!client.connect(clientId, authMethod, token)) {
Serial.print(".");
delay(500);
}
Serial.println(" Connected");
initManagedDevice();
}
}
void wifiConnect()
{
Serial.print("Connecting to WiFi...");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}