#include <WiFi.h>
#include <ESP32Servo.h>
#include <PubSubClient.h>
const char* ssid = "Ajio-5G"; //Enter your WIFI SSID
const char* password = "Ajio@#90&&4G!5G";//Enter your WIFI Password
const char* mqtt_server = "test.mosquitto.org";
const int mqtt_port = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
int servo_pin = 2;
Servo s;
int p = 0;
int blue = 26;
int green = 27;
int yellow = 14;
int red = 12;
int sensorPin = 21;
void setup()
{
Serial.begin(9600);
s.attach(servo_pin);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client.setServer(mqtt_server, mqtt_port);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(red, OUTPUT);
}
void loop()
{
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
if (sensorValue < 2000) {
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
for(p=0;p<180;p+=5){
s.write(p);
delay(50);
}
} else if (sensorValue < 2500 && sensorValue > 2000) {
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
s.write(0);
} else if (sensorValue < 3000 && sensorValue > 2500) {
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
digitalWrite(blue, LOW);
s.write(0);
} else {
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, HIGH);
s.write(0);
}
if (!client.connected()) {
reconnect();
}
client.loop();
// Example: Publishing sensor data to MQTT
// int sensorValue = analogRead();
String payload = String(sensorValue);
client.publish("esp32/sensor_data", payload.c_str());
delay(100);
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP32Client")) {
Serial.println("connected");
// Subscribe to topics if needed
client.subscribe("node_red/control_topic");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}