Nodemcu 4 Relay

ESP8266 NodeMCU Webserver Access point

control with Android app - four relay control – ip on lcd display

programming

//Tutorial https://sites.google.com/site/kyrosprojects/

#include <ESP8266WiFi.h>

#include <Wire.h> // i2C Conection Library

#include <LiquidCrystal_I2C.h> //i2C LCD Library

//Gunakan define dibawah ini untuk jenis Relay Module LOW ACTIVE

#define ON 0

#define OFF 1

// Set the LCD address to 0x27 for a 16 chars and 2 line display

//pastikan i2C Address LCD anda sesuai dengan yang ditulis di sketch

LiquidCrystal_I2C lcd(0x27, 16, 2);

const char* ssid = "Wifi-Repeater"; //<-Ganti dengan nama jaringan wifi anda

const char* password = "f1b22a7ca0"; //<- Ganti dengan password wifi anda

//Wiring Relay ke module Nodemcu

const int LED1 = 15; //D8 on ESP Board

const int LED2 = 13; //D7 on ESP Board

const int LED3 = 12; //D6 on ESP Board

const int LED4 = 14; //D5 on ESP Board

bool value1 = LOW;

bool value2 = LOW;

bool value3 = LOW;

bool value4 = LOW;

WiFiServer server(80); // Wifi PORT

int delayLCD = 750; // delay pergantian text pada LCD 1602 (mS)

void setup() {

Serial.begin(115200);

// initialize the LCD

Wire.begin(2, 0);

lcd.init(); // initializing the LCD

lcd.backlight();

lcd.setCursor(0,0);

lcd.print(" Welcome! ");

delay (delayLCD);

pinMode(LED1, OUTPUT); digitalWrite(LED1, HIGH);

pinMode(LED2, OUTPUT); digitalWrite(LED2, HIGH);

pinMode(LED3, OUTPUT); digitalWrite(LED3, HIGH);

pinMode(LED4, OUTPUT); digitalWrite(LED4, HIGH);

// Connect to WiFi network

Serial.println("");

lcd.clear();

Serial.print("Connecting to ");

Serial.println(ssid);

lcd.setCursor (0,0);

lcd.print ("Connecting to...");

lcd.setCursor (0,1);

lcd.print (ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

lcd.print (".");

}

Serial.println("");

Serial.println("WiFi connected");

lcd.clear();

lcd.setCursor (0,0);

lcd.print (" WiFi connected ");

// Start the server

server.begin();

Serial.println("Server started");

lcd.setCursor (0,1);

lcd.print (" Server started ");

delay (2000);

// Print the IP address

Serial.print("Use this URL to connect: ");

Serial.print("http://");

Serial.print(WiFi.localIP());

Serial.println("/");

lcd.clear();

lcd.setCursor (0,0);

lcd.print ("ESP8266 URL ADRS");

lcd.setCursor (0,1);

lcd.print (WiFi.localIP());

delay (2000);

}

void loop() {

// Check if a client has connected

WiFiClient client = server.available();

if (!client) {

//lcd.clear();

lcd.setCursor (0,0);

lcd.print ("ESP8266 ");

lcd.setCursor (0,1);

lcd.print (WiFi.localIP());

lcd.print (" ");

return;

}

// Wait until the client sends some data

Serial.println("new client");

lcd.clear();

lcd.setCursor (0,0);

lcd.print ("Client Send Data");

while(!client.available()){

delay(1);

}

// Read the first line of the request

String request = client.readStringUntil('\r');

Serial.println(request);

lcd.setCursor (0,1);

lcd.print (request);

delay(1000);

client.flush();

// Set LED according to the request

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println(""); // do not forget this one

client.println("<!DOCTYPE HTML>");

client.println("<html>");

client.println("<fieldset>");

client.println("<font color = redq>");

client.print("Control 4 LED Via Wifi");

client.println("</font>");

client.println("</fieldset>");

client.println("<br><br>");

//Program Here

// Return the response LED1

//client.print("LED1 is now: ");

// Control LED 1

if (request.indexOf("/status1=1") != -1) {

digitalWrite(LED1, ON);

value1 = HIGH;

lcd.setCursor(0,0);

lcd.print("LED1 set to ON ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if (request.indexOf("/status1=0") != -1) {

digitalWrite(LED1, OFF);

value1 = LOW;

lcd.setCursor(0,0);

lcd.print("LED1 set to OFF ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if(value1==HIGH){

client.println("<br><br>");

client.print("status1=1");

}

if(value1==LOW){

client.println("<br><br>");

client.print("status1=0");

}

//client.println("<br><br>");

//client.println("<a href=\"/LED1=ON\"\"><button>LED1 ON </button></a>");

//client.println("<a href=\"/LED1=OFF\"\"><button>LED1 OFF </button></a><br />");

//client.println("</html>");

// Return the response LED2

//client.println("<br><br>");

//client.print("LED2 is now: ");

// Control LED 2

if (request.indexOf("/status2=1") != -1) {

digitalWrite(LED2, ON);

value2 = HIGH;

lcd.setCursor(0,0);

lcd.print("LED2 set to ON ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if (request.indexOf("/status2=0") != -1) {

digitalWrite(LED2, OFF);

value2 = LOW;

lcd.setCursor(0,0);

lcd.print("LED2 set to OFF ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if(value2==HIGH){

client.println("<br><br>");

client.print("status2=1");

}

if(value2==LOW){

client.println("<br><br>");

client.print("status2=0");

}

//client.println("<br><br>");

//client.println("<a href=\"/LED2=ON\"\"><button>LED2 ON </button></a>");

//client.println("<a href=\"/LED2=OFF\"\"><button>LED2 OFF </button></a><br />");

//client.println("</html>");

// Return the response LED3

//client.println("<br><br>");

//client.print("LED3 is now: ");

// Control LED 3

if (request.indexOf("/status3=1") != -1) {

digitalWrite(LED3, ON);

value3 = HIGH;

lcd.setCursor(0,0);

lcd.print("LED3 set to ON ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if (request.indexOf("/status3=0") != -1) {

digitalWrite(LED3, OFF);

value3 = LOW;

lcd.setCursor(0,0);

lcd.println("LED3 set to OFF ");

lcd.setCursor(0,1);

lcd.println("by Client Reques");

delay (delayLCD);

}

if(value3==LOW){

client.println("<br><br>");

client.print("status3=1");

}

if(value3==HIGH){

client.println("<br><br>");

client.print("status3=0");

}

//client.println("<br><br>");

//client.println("<a href=\"/LED3=ON\"\"><button>LED3 ON </button></a>");

//client.println("<a href=\"/LED3=OFF\"\"><button>LED3 OFF </button></a><br />");

//client.println("</html>");

// Return the response LED4

//client.println("<br><br>");

//client.print("LED4 is now: ");

// Control LED 4

if (request.indexOf("/status4=1") != -1) {

digitalWrite(LED4, ON);

value4 = HIGH;

lcd.setCursor(0,0);

lcd.print("LED4 set to ON ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if (request.indexOf("/status4=0") != -1) {

digitalWrite(LED4, OFF);

value4 = LOW;

lcd.setCursor(0,0);

lcd.print("LED4 set to OFF ");

lcd.setCursor(0,1);

lcd.print("by Client Reques");

delay (delayLCD);

}

if(value4==LOW){

client.println("<br><br>");

client.print("status4=1");

}

if(value4==HIGH){

client.println("<br><br>");

client.print("status4=0");

}

//client.println("<br><br>");

//client.println("<a href=\"/LED4=ON\"\"><button>LED4 ON </button></a>");

//client.println("<a href=\"/LED4=OFF\"\"><button>LED4 OFF </button></a><br />");

//client.println("</html>");

delay(1);

Serial.println("Client disonnected");

Serial.println("");

lcd.setCursor(0,1);

lcd.print("Client Disconect");

delay(1000);

}