Exp 1:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Wi-Fi credentials
const char* ssid = "yourSSID";
const char* password = "yourPASS";

// MQTT broker
const char* mqtt_server = "broker.hivemq.com";

WiFiClient espClient;
PubSubClient client(espClient);

// Function to connect to Wi-Fi
void setup_wifi() {
  delay(10);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

// Function to reconnect to MQTT broker
void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("ESPClient")) {
      Serial.println("connected");
      // Subscribe to a topic
      client.subscribe("test/topic");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  // Example: Publish dummy sensor data
  client.publish("test/topic", "Sensor value: 45");
  Serial.println("Published: Sensor value: 45");
  delay(2000);
}

-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

Exp_2

int irSensor = 2;

int led = 13;

void setup() {

pinMode(irSensor, INPUT);

pinMode(led, OUTPUT);

}

void loop() {

int val = digitalRead(irSensor);

if (val == LOW) {

digitalWrite(led, HIGH);

} else {

digitalWrite(led, LOW);

}

}

-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
Exp - 3

import Adafruit_DHT
import time

# Define sensor type and GPIO pin
sensor = Adafruit_DHT.DHT11
pin = 4  # GPIO pin connected to the data pin of the DHT11

while True:
    # Try to grab a sensor reading
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    # or use read(sensor, pin) but read_retry is more reliable

    if humidity is not None and temperature is not None:
        print(f"Temp: {temperature:.1f}°C  Humidity: {humidity:.1f}%")
    else:
        print("Failed to read sensor data")

    time.sleep(2)

-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

Exp - 4

#define BLYNK_PRINT Serial   // For debugging messages

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>

// Your Blynk authentication token
char auth[] = "AuthToken";        // Replace with your actual token
char ssid[] = "WiFi_SSID";        // Replace with your WiFi SSID
char pass[] = "WiFi_PASSWORD";    // Replace with your WiFi password

#define DHTPIN D4                 // DHT11 data pin connected to D4
#define DHTTYPE DHT11             // Sensor type

DHT dht(DHTPIN, DHTTYPE);

BlynkTimer timer;  // Timer for sending sensor data at intervals

// Function to send DHT readings to Blynk app
void sendSensor() {
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // Celsius

  // Check if reads failed
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Send temperature and humidity to Blynk Virtual Pins
  Blynk.virtualWrite(V5, t);  // Temperature
  Blynk.virtualWrite(V6, h);  // Humidity

  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" °C  |  Humidity: ");
  Serial.print(h);
  Serial.println(" %");
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);

  dht.begin();
  timer.setInterval(2000L, sendSensor);  // Run sendSensor() every 2 seconds

  pinMode(D5, OUTPUT);  // For LED/relay output
}

// Virtual Pin V1 used to control an LED or relay
BLYNK_WRITE(V1) {
  int pinValue = param.asInt();
  digitalWrite(D5, pinValue);
}

void loop() {
  Blynk.run();
  timer.run();
}

-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
Exp - 5:

#include <DHT.h>

#define DHΤΡΙΝ 2

#define DHTTYPE DHT11 DHT dht(DHTΡΙΝ, DHTTYPE);

int ledPin = 13;

void setup() {

Serial.begin(9600);

dht.begin();

pinMode(ledPin, OUTPUT);

}

void loop() {

float temp = dht.readTemperature();

Serial.print("Temp: ");

Serial.println(temp);

if (temp > 30) digitalWrite(ledPin, HIGH);

else digitalWrite(ledPin, LOW);

delay(2000);

}
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

Exp - 6 

# include <SoftwazeSeriaI . h>
SoftwareSeziaI XBee (1O, 11) ;
void setup ( ) {
Serial . begin (9600) ;
XBee.begin (9600) ;
randomseed (analogRead (O) ) ;
void loop ( ) {
int randomnumber  = random (256) ;
XBee . print (randomNumber) ;
XBee . print In ( ) ;
Serial . print ("Sent number.
Serial . print In (randomNumber) ;
delay (1000) ;

#include<SoftwareSerial.h>
SoftwareSerial XBEE(10,11);
bool started = false;
bool ended = false;
char data;
char msg[4];
byte index = 0;
void setup()
{
	Serial . begin (9600) ;
	XBee . begin (9600) ;
}


void loop ( )
{
	while (XBee. available() > O)
	{
		data = XBee . read ( ) ;
		if(data=='<')
		{
			started = true;
            index = 0;
            msg[index] = '\0;
		}
        else if(data=='>)
        {
            ended = true;
            break;
        }
        else if(started&&index<3)
        {
            msg[index] = data;
            index++;
            msg[index] = '\0';
        }

        if(started&&ended)
        {
            int val = atoi(msg)
            started = false;
            ended = false;
        }
	}

}

-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

from flask import Flask
import serial

app = Flask(__name__)

# Update this to match your Arduino serial port
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)

@app.route("/on")
def turn_on():
    ser.write(b'1')
    return "Device ON"

@app.route("/off")
def turn_off():
    ser.write(b'0')
    return "Device OFF"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)



int relayPin = 8;

void setup() {
  pinMode(relayPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    char data = Serial.read();

    if (data == '1') {
      digitalWrite(relayPin, HIGH);
    }
    if (data == '0') {
      digitalWrite(relayPin, LOW);
    }
  }
}

