#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6odLv8gbV"
#define BLYNK_TEMPLATE_NAME "TempDHT"
#define BLYNK_AUTH_TOKEN "as_Lm3Sm2R2t7H_3D185zP-t_KYbF_R5"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <PubSubClient.h>
#include <Servo.h>
// Pins
#define LED_PIN 2
#define RELAY_PIN 5
#define SERVO_PIN 18
// MQTT and Blynk settings
const char* mqtt_server = "broker.hivemq.com"; // HiveMQ Broker
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// MQTT client
WiFiClient espClient;
PubSubClient client(espClient);
Servo myServo;
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
client.setServer(mqtt_server, 1883);
myServo.attach(SERVO_PIN);
pinMode(LED_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
timer.setInterval(1000L, sendStatus);
}
void sendStatus() {
Blynk.virtualWrite(V0, digitalRead(LED_PIN)); // Send LED state to Blynk
Blynk.virtualWrite(V1, digitalRead(RELAY_PIN)); // Send Relay state to Blynk
}
void loop() {
Blynk.run();
client.loop();
timer.run();
if (Blynk.virtualRead(V4) == 1) {
digitalWrite(LED_PIN, HIGH); // Turn on LED from Blynk
} else {
digitalWrite(LED_PIN, LOW); // Turn off LED
}
if (Blynk.virtualRead(V5) == 1) {
digitalWrite(RELAY_PIN, HIGH); // Turn on Relay from Blynk
} else {
digitalWrite(RELAY_PIN, LOW); // Turn off Relay
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32Client")) {
client.subscribe("control_topic"); // Subscribe to control topic
}
}
}