Satya
Published © GPL3+

Smart Light Automation

Smart Light Automation uses sensors, mobile apps, and Wi-Fi/MQTT/Firebase to automatically control lights

BeginnerFull instructions provided8 hours2
Smart Light Automation

Story

Read more

Code

esp32_light_ws.ino

C/C++
#include <WiFi.h>
#include <WebSocketsServer.h>

#define RELAY_PIN 5
#define SWITCH_PIN 14

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

WebSocketsServer webSocket = WebSocketsServer(81);
bool lightState = false;

void notifyClients() {
  webSocket.broadcastTXT(lightState ? "on" : "off");
}

void switchISR() {
  lightState = !lightState;
  digitalWrite(RELAY_PIN, lightState ? HIGH : LOW);
  notifyClients();
}

void onWebSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
  if (type == WStype_TEXT) {
    String msg = String((char*)payload);
    if (msg == "on") lightState = true;
    else if (msg == "off") lightState = false;
    digitalWrite(RELAY_PIN, lightState ? HIGH : LOW);
    notifyClients();
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(RELAY_PIN, OUTPUT);
  pinMode(SWITCH_PIN, INPUT_PULLUP);

  digitalWrite(RELAY_PIN, LOW);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting...");
  }
  Serial.println("Connected to WiFi");

  webSocket.begin();
  webSocket.onEvent(onWebSocketEvent);

  attachInterrupt(digitalPinToInterrupt(SWITCH_PIN), switchISR, FALLING);
}

void loop() {
  webSocket.loop();
}

Credits

Satya
2 projects • 0 followers

Comments