[Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - admin - 09-02-2022
this arduino source code is web server use for Ethernet via KC868-A32
digital input can trigger relay output. just connect with ethernet cable
KC868-A32_Web_Server - ETH.zip (Size: 478.62 KB / Downloads: 350)
Code: /********************************************************************
* Create Your own Ethernet-WebServer for KC868-A32 Smart Controller*
* https://www.kincony.com ***********
*********************************************************************/
#include "PCF8574.h"
#define DEBUG_ETHERNET_WEBSERVER_PORT Serial
// Debug Level from 0 to 4
#define _ETHERNET_WEBSERVER_LOGLEVEL_ 3
#include <WebServer_WT32_ETH01.h>
WiFiServer server(80);
// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0;
// Define timeout time in milliseconds (example: 2000ms = 2s)
const long timeoutTime = 2000;
int flag_read_di=0;
// Variable to store the HTTP request
String header;
TwoWire I2Cone = TwoWire(0);
TwoWire I2Ctwo = TwoWire(1);
PCF8574 pcf8574_R1(&I2Ctwo, 0x24, 15, 13);
PCF8574 pcf8574_R2(&I2Ctwo, 0x25, 15, 13);
PCF8574 pcf8574_R3(&I2Ctwo, 0x21, 15, 13);
PCF8574 pcf8574_R4(&I2Ctwo, 0x22, 15, 13);
// Set digital input i2c address
PCF8574 pcf8574_I1(&I2Cone, 0x24, 4, 5);
PCF8574 pcf8574_I2(&I2Cone, 0x25, 4, 5);
PCF8574 pcf8574_I3(&I2Cone, 0x21, 4, 5);
PCF8574 pcf8574_I4(&I2Cone, 0x22, 4, 5);
String relaystate[32]={
"relay1state","relay2state","relay3state","relay4state","relay5state","relay6state","relay7state","relay8state",
"relay9state","relay10state","relay11state","relay12state","relay13state","relay14state","relay15state","relay16state",
"relay17state","relay18state","relay19state","relay20state","relay21state","relay22state","relay23state","relay24state",
"relay25state","relay26state","relay27state","relay18state","relay296state","relay30state","relay31state","relay32state",
};
String relay1state = "off";// state of relay1
String relay2state = "off";// state of relay2
String relay3state = "off";// state of relay3
String relay4state = "off";// state of relay4
String relay5state = "off";// state of relay5
String relay6state = "off";// state of relay6
String relay7state = "off";// state of relay7
String relay8state = "off";// state of relay8
String relay9state = "off";// state of relay9
String relay10state = "off";// state of relay10
String relay11state = "off";// state of relay11
String relay12state = "off";// state of relay12
String relay13state = "off";// state of relay13
String relay14state = "off";// state of relay14
String relay15state = "off";// state of relay15
String relay16state = "off";// state of relay16
String relay17state = "off";// state of relay17
String relay18state = "off";// state of relay18
String relay19state = "off";// state of relay19
String relay20state = "off";// state of relay20
String relay21state = "off";// state of relay21
String relay22state = "off";// state of relay22
String relay23state = "off";// state of relay23
String relay24state = "off";// state of relay24
String relay25state = "off";// state of relay25
String relay26state = "off";// state of relay26
String relay27state = "off";// state of relay27
String relay28state = "off";// state of relay28
String relay29state = "off";// state of relay29
String relay30state = "off";// state of relay30
String relay31state = "off";// state of relay31
String relay32state = "off";// state of relay32
void setup() {
Serial.begin(115200);
// Set PCF8574 pinMode to OUTPUT
for(int i=0;i<=7;i++)
{
pcf8574_R1.pinMode(i, OUTPUT);
pcf8574_R2.pinMode(i, OUTPUT);
pcf8574_R3.pinMode(i, OUTPUT);
pcf8574_R4.pinMode(i, OUTPUT);
}
pcf8574_R1.begin();
pcf8574_R2.begin();
pcf8574_R3.begin();
pcf8574_R4.begin();
for(int i=0;i<=7;i++){
pcf8574_I1.pinMode(i, INPUT);
pcf8574_I2.pinMode(i, INPUT);
pcf8574_I3.pinMode(i, INPUT);
pcf8574_I4.pinMode(i, INPUT);
}
pcf8574_I1.begin();
pcf8574_I2.begin();
pcf8574_I3.begin();
pcf8574_I4.begin();
for(int i=0;i<=7;i++)
{
pcf8574_R1.digitalWrite(i, HIGH);
pcf8574_R2.digitalWrite(i, HIGH);
pcf8574_R3.digitalWrite(i, HIGH);
pcf8574_R4.digitalWrite(i, HIGH);
}
while (!Serial);
// Using this if Serial debugging is not necessary or not using Serial port
//while (!Serial && (millis() < 3000));
Serial.print("\nStarting WebServer on " + String(ARDUINO_BOARD));
Serial.println(" with " + String(SHIELD_TYPE));
Serial.println(WEBSERVER_WT32_ETH01_VERSION);
// To be called before ETH.begin()
WT32_ETH01_onEvent();
//bool begin(uint8_t phy_addr=ETH_PHY_ADDR, int power=ETH_PHY_POWER, int mdc=ETH_PHY_MDC, int mdio=ETH_PHY_MDIO,
// eth_phy_type_t type=ETH_PHY_TYPE, eth_clock_mode_t clk_mode=ETH_CLK_MODE);
//ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER, ETH_PHY_MDC, ETH_PHY_MDIO, ETH_PHY_TYPE, ETH_CLK_MODE);
ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER);
// Static IP, leave without this line to get IP via DHCP
//bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0);
// ETH.config(myIP, myGW, mySN, myDNS);
//WT32_ETH01_waitForConnect();
// start the web server on port 80
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
if (client) { // If a new client connects,
Serial.println("New Client."); // print a message out in the serial port
String currentLine = ""; // make a String to hold incoming data from the client
currentTime = millis();
previousTime = currentTime;
while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected
currentTime = millis();
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write(c); // print it out the serial monitor
header += c;
if (c == '\n') { // if the byte is a newline character
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
// turns 16 relays on and off
if (header.indexOf("GET /1/on") >= 0) {relay1state = "on";pcf8574_R1.digitalWrite(P0, LOW);}
else if (header.indexOf("GET /1/off") >= 0) {relay1state = "off";pcf8574_R1.digitalWrite(P0, HIGH);}
else if (header.indexOf("GET /2/on") >= 0) {relay2state = "on";pcf8574_R1.digitalWrite(P1, LOW);}
else if (header.indexOf("GET /2/off") >= 0) {relay2state = "off";pcf8574_R1.digitalWrite(P1, HIGH);}
else if (header.indexOf("GET /3/on") >= 0) {relay3state = "on";pcf8574_R1.digitalWrite(P2, LOW);}
else if (header.indexOf("GET /3/off") >= 0) {relay3state = "off";pcf8574_R1.digitalWrite(P2, HIGH);}
else if (header.indexOf("GET /4/on") >= 0) {relay4state = "on";pcf8574_R1.digitalWrite(P3, LOW);}
else if (header.indexOf("GET /4/off") >= 0) {relay4state = "off";pcf8574_R1.digitalWrite(P3, HIGH);}
else if (header.indexOf("GET /5/on") >= 0) {relay5state = "on";pcf8574_R1.digitalWrite(P4, LOW);}
else if (header.indexOf("GET /5/off") >= 0) {relay5state = "off";pcf8574_R1.digitalWrite(P4, HIGH);}
else if (header.indexOf("GET /6/on") >= 0) {relay6state = "on";pcf8574_R1.digitalWrite(P5, LOW);}
else if (header.indexOf("GET /6/off") >= 0) {relay6state = "off";pcf8574_R1.digitalWrite(P5, HIGH);}
else if (header.indexOf("GET /7/on") >= 0) {relay7state = "on";pcf8574_R1.digitalWrite(P6, LOW);}
else if (header.indexOf("GET /7/off") >= 0) {relay7state = "off";pcf8574_R1.digitalWrite(P6, HIGH);}
else if (header.indexOf("GET /8/on") >= 0) {relay8state = "on";pcf8574_R1.digitalWrite(P7, LOW);}
else if (header.indexOf("GET /8/off") >= 0) {relay8state = "off";pcf8574_R1.digitalWrite(P7, HIGH);}
else if (header.indexOf("GET /9/on") >= 0) {relay9state = "on";pcf8574_R2.digitalWrite(P0, LOW);}
else if (header.indexOf("GET /9/off") >= 0) {relay9state = "off";pcf8574_R2.digitalWrite(P0, HIGH);}
else if (header.indexOf("GET /10/on") >= 0) {relay10state = "on";pcf8574_R2.digitalWrite(P1, LOW);}
else if (header.indexOf("GET /10/off") >= 0) {relay10state = "off";pcf8574_R2.digitalWrite(P1, HIGH);}
else if (header.indexOf("GET /11/on") >= 0) {relay11state = "on";pcf8574_R2.digitalWrite(P2, LOW);}
else if (header.indexOf("GET /11/off") >= 0) {relay11state = "off";pcf8574_R2.digitalWrite(P2, HIGH);}
else if (header.indexOf("GET /12/on") >= 0) {relay12state = "on";pcf8574_R2.digitalWrite(P3, LOW);}
else if (header.indexOf("GET /12/off") >= 0) {relay12state = "off";pcf8574_R2.digitalWrite(P3, HIGH);}
else if (header.indexOf("GET /13/on") >= 0) {relay13state = "on";pcf8574_R2.digitalWrite(P4, LOW);}
else if (header.indexOf("GET /13/off") >= 0) {relay13state = "off";pcf8574_R2.digitalWrite(P4, HIGH);}
else if (header.indexOf("GET /14/on") >= 0) {relay14state = "on";pcf8574_R2.digitalWrite(P5, LOW);}
else if (header.indexOf("GET /14/off") >= 0) {relay14state = "off";pcf8574_R2.digitalWrite(P5, HIGH);}
else if (header.indexOf("GET /15/on") >= 0) {relay15state = "on";pcf8574_R2.digitalWrite(P6, LOW);}
else if (header.indexOf("GET /15/off") >= 0) {relay15state = "off";pcf8574_R2.digitalWrite(P6, HIGH);}
else if (header.indexOf("GET /16/on") >= 0) {relay16state = "on";pcf8574_R2.digitalWrite(P7, LOW);}
else if (header.indexOf("GET /16/off") >= 0) {relay16state = "off";pcf8574_R2.digitalWrite(P7, HIGH);}
else if (header.indexOf("GET /17/on") >= 0) {relay17state = "on";pcf8574_R3.digitalWrite(P0, LOW);}
else if (header.indexOf("GET /17/off") >= 0) {relay17state = "off";pcf8574_R3.digitalWrite(P0, HIGH);}
else if (header.indexOf("GET /18/on") >= 0) {relay18state = "on";pcf8574_R3.digitalWrite(P1, LOW);}
else if (header.indexOf("GET /18/off") >= 0) {relay18state = "off";pcf8574_R3.digitalWrite(P1, HIGH);}
else if (header.indexOf("GET /19/on") >= 0) {relay19state = "on";pcf8574_R3.digitalWrite(P2, LOW);}
else if (header.indexOf("GET /19/off") >= 0) {relay19state = "off";pcf8574_R3.digitalWrite(P2, HIGH);}
else if (header.indexOf("GET /20/on") >= 0) {relay20state = "on";pcf8574_R3.digitalWrite(P3, LOW);}
else if (header.indexOf("GET /20/off") >= 0) {relay20state = "off";pcf8574_R3.digitalWrite(P3, HIGH);}
else if (header.indexOf("GET /21/on") >= 0) {relay21state = "on";pcf8574_R3.digitalWrite(P4, LOW);}
else if (header.indexOf("GET /21/off") >= 0) {relay21state = "off";pcf8574_R3.digitalWrite(P4, HIGH);}
else if (header.indexOf("GET /22/on") >= 0) {relay22state = "on";pcf8574_R3.digitalWrite(P5, LOW);}
else if (header.indexOf("GET /22/off") >= 0) {relay22state = "off";pcf8574_R3.digitalWrite(P5, HIGH);}
else if (header.indexOf("GET /23/on") >= 0) {relay23state = "on";pcf8574_R3.digitalWrite(P6, LOW);}
else if (header.indexOf("GET /23/off") >= 0) {relay23state = "off";pcf8574_R3.digitalWrite(P6, HIGH);}
else if (header.indexOf("GET /24/on") >= 0) {relay24state = "on";pcf8574_R3.digitalWrite(P7, LOW);}
else if (header.indexOf("GET /24/off") >= 0) {relay24state = "off";pcf8574_R3.digitalWrite(P7, HIGH);}
else if (header.indexOf("GET /25/on") >= 0) {relay25state = "on";pcf8574_R4.digitalWrite(P0, LOW);}
else if (header.indexOf("GET /25/off") >= 0) {relay25state = "off";pcf8574_R4.digitalWrite(P0, HIGH);}
else if (header.indexOf("GET /26/on") >= 0) {relay26state = "on";pcf8574_R4.digitalWrite(P1, LOW);}
else if (header.indexOf("GET /26/off") >= 0) {relay26state = "off";pcf8574_R4.digitalWrite(P1, HIGH);}
else if (header.indexOf("GET /27/on") >= 0) {relay27state = "on";pcf8574_R4.digitalWrite(P2, LOW);}
else if (header.indexOf("GET /27/off") >= 0) {relay27state = "off";pcf8574_R4.digitalWrite(P2, HIGH);}
else if (header.indexOf("GET /28/on") >= 0) {relay28state = "on";pcf8574_R4.digitalWrite(P3, LOW);}
else if (header.indexOf("GET /28/off") >= 0) {relay28state = "off";pcf8574_R4.digitalWrite(P3, HIGH);}
else if (header.indexOf("GET /29/on") >= 0) {relay29state = "on";pcf8574_R4.digitalWrite(P4, LOW);}
else if (header.indexOf("GET /29/off") >= 0) {relay29state = "off";pcf8574_R4.digitalWrite(P4, HIGH);}
else if (header.indexOf("GET /30/on") >= 0) {relay30state = "on";pcf8574_R4.digitalWrite(P5, LOW);}
else if (header.indexOf("GET /30/off") >= 0) {relay30state = "off";pcf8574_R4.digitalWrite(P5, HIGH);}
else if (header.indexOf("GET /31/on") >= 0) {relay31state = "on";pcf8574_R4.digitalWrite(P6, LOW);}
else if (header.indexOf("GET /31/off") >= 0) {relay31state = "off";pcf8574_R4.digitalWrite(P6, HIGH);}
else if (header.indexOf("GET /32/on") >= 0) {relay32state = "on";pcf8574_R4.digitalWrite(P7, LOW);}
else if (header.indexOf("GET /32/off") >= 0) {relay32state = "off";pcf8574_R4.digitalWrite(P7, HIGH);}
else if (header.indexOf("GET /read") >= 0) flag_read_di=1;
else if (header.indexOf("GET /all/on") >= 0)
{
/* for(int i=0;i<32;i++)
{
relaystate[i]="on";
}*/
relay1state = "on";// state of relay1
relay2state = "on";// state of relay2
relay3state = "on";// state of relay3
relay4state = "on";// state of relay4
relay5state = "on";// state of relay5
relay6state = "on";// state of relay6
relay7state = "on";// state of relay7
relay8state = "on";// state of relay8
relay9state = "on";// state of relay9
relay10state = "on";// state of relay10
relay11state = "on";// state of relay11
relay12state = "on";// state of relay12
relay13state = "on";// state of relay13
relay14state = "on";// state of relay14
relay15state = "on";// state of relay15
relay16state = "on";// state of relay16
relay17state = "on";// state of relay1
relay18state = "on";// state of relay2
relay19state = "on";// state of relay3
relay20state = "on";// state of relay4
relay21state = "on";// state of relay5
relay22state = "on";// state of relay6
relay23state = "on";// state of relay7
relay24state = "on";// state of relay8
relay25state = "on";// state of relay9
relay26state = "on";// state of relay10
relay27state = "on";// state of relay11
relay28state = "on";// state of relay12
relay29state = "on";// state of relay13
relay30state = "on";// state of relay14
relay31state = "on";// state of relay15
relay32state = "on";// state of relay16
for(int i=0;i<=7;i++)
{
pcf8574_R1.digitalWrite(i,LOW);
pcf8574_R2.digitalWrite(i,LOW);
pcf8574_R3.digitalWrite(i,LOW);
pcf8574_R4.digitalWrite(i,LOW);
}
}
else if (header.indexOf("GET /all/off") >= 0)
{
/*for(int i=0;i<32;i++)
{
relaystate[i]="off";
}*/
relay1state = "off";// state of relay1
relay2state = "off";// state of relay2
relay3state = "off";// state of relay3
relay4state = "off";// state of relay4
relay5state = "off";// state of relay5
relay6state = "off";// state of relay6
relay7state = "off";// state of relay7
relay8state = "off";// state of relay8
relay9state = "off";// state of relay9
relay10state = "off";// state of relay10
relay11state = "off";// state of relay11
relay12state = "off";// state of relay12
relay13state = "off";// state of relay13
relay14state = "off";// state of relay14
relay15state = "off";// state of relay15
relay16state = "off";// state of relay16
relay17state = "off";// state of relay1
relay18state = "off";// state of relay2
relay19state = "off";// state of relay3
relay20state = "off";// state of relay4
relay21state = "off";// state of relay5
relay22state = "off";// state of relay6
relay23state = "off";// state of relay7
relay24state = "off";// state of relay8
relay25state = "off";// state of relay9
relay26state = "off";// state of relay10
relay27state = "off";// state of relay11
relay28state = "off";// state of relay12
relay29state = "off";// state of relay13
relay30state = "off";// state of relay14
relay31state = "off";// state of relay15
relay32state = "off";// state of relay16
for(int i=0;i<=7;i++)
{
pcf8574_R1.digitalWrite(i, HIGH);
pcf8574_R2.digitalWrite(i, HIGH);
pcf8574_R3.digitalWrite(i, HIGH);
pcf8574_R4.digitalWrite(i, HIGH);
}
}
// Display the HTML web page
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
// CSS to style the on/off buttons
// Feel free to change the background-color and font-size attributes to fit your preferences
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
//client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
//client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button { background-color: #195B10; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 35px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #77878A;}</style></head>");
if (flag_read_di==1)
{
client.println(" relay1:" + relay1state + " relay2:" + relay2state + " relay3:" + relay3state + " relay4:" + relay4state + " relay5:" + relay5state + " relay6:" + relay6state + " relay7:" + relay7state + " relay8:" + relay8state + " relay9:" + relay9state + " relay10:" + relay10state + " relay11:" + relay11state + " relay12:" + relay12state + " relay13:" + relay13state + " relay14:" + relay14state + " relay15:" + relay15state + " relay16:" + relay16state + " relay17:" + relay17state + " relay18:" + relay18state + " relay19:" + relay19state + " relay20:" + relay20state + " relay21:" + relay21state + " relay22:" + relay22state + " relay23:" + relay23state + " relay24:" + relay24state + " relay25:" + relay25state + " relay26:" + relay26state + " relay27:" + relay27state + " relay28:" + relay28state + " relay29:" + relay29state + " relay30:" + relay30state + " relay31:" + relay31state + " relay32:" + relay32state);
}
else
{
// Web Page Heading
client.println("<body><h1>KC868-A32 Web Server</h1>");
// Display current state, and ON/OFF buttons for relay
//client.println("<p>relay1 - State " + relay1state + "</p>");
// If the relay is off, it displays the ON button
if (relay1state == "off") client.println("<a href=\"/1/on\"><button class=\"button\">01-OFF</button></a>"); else client.println("<a href=\"/1/off\"><button class=\"button\">01-ON </button></a>");
if (relay2state == "off") client.println("<a href=\"/2/on\"><button class=\"button\">02-OFF</button></a>"); else client.println("<a href=\"/2/off\"><button class=\"button\">02-ON </button></a>");
if (relay3state == "off") client.println("<a href=\"/3/on\"><button class=\"button\">03-OFF</button></a>"); else client.println("<a href=\"/3/off\"><button class=\"button\">03-ON </button></a>");
if (relay4state == "off") client.println("<a href=\"/4/on\"><button class=\"button\">04-OFF</button></a>"); else client.println("<a href=\"/4/off\"><button class=\"button\">04-ON </button></a>");
if (relay5state == "off") client.println("<a href=\"/5/on\"><button class=\"button\">05-OFF</button></a>"); else client.println("<a href=\"/5/off\"><button class=\"button\">05-ON </button></a>");
if (relay6state == "off") client.println("<a href=\"/6/on\"><button class=\"button\">06-OFF</button></a>"); else client.println("<a href=\"/6/off\"><button class=\"button\">06-ON </button></a>");
if (relay7state == "off") client.println("<a href=\"/7/on\"><button class=\"button\">07-OFF</button></a>"); else client.println("<a href=\"/7/off\"><button class=\"button\">07-ON </button></a>");
if (relay8state == "off") client.println("<a href=\"/8/on\"><button class=\"button\">08-OFF</button></a>"); else client.println("<a href=\"/8/off\"><button class=\"button\">08-ON </button></a>");
if (relay9state == "off") client.println("<a href=\"/9/on\"><button class=\"button\">09-OFF</button></a>"); else client.println("<a href=\"/9/off\"><button class=\"button\">09-ON </button></a>");
if (relay10state == "off") client.println("<a href=\"/10/on\"><button class=\"button\">10-OFF</button></a>"); else client.println("<a href=\"/10/off\"><button class=\"button\">10-ON</button></a>");
if (relay11state == "off") client.println("<a href=\"/11/on\"><button class=\"button\">11-OFF</button></a>"); else client.println("<a href=\"/11/off\"><button class=\"button\">11-ON</button></a>");
if (relay12state == "off") client.println("<a href=\"/12/on\"><button class=\"button\">12-OFF</button></a>"); else client.println("<a href=\"/12/off\"><button class=\"button\">12-ON</button></a>");
if (relay13state == "off") client.println("<a href=\"/13/on\"><button class=\"button\">13-OFF</button></a>"); else client.println("<a href=\"/13/off\"><button class=\"button\">13-ON</button></a>");
if (relay14state == "off") client.println("<a href=\"/14/on\"><button class=\"button\">14-OFF</button></a>"); else client.println("<a href=\"/14/off\"><button class=\"button\">14-ON</button></a>");
if (relay15state == "off") client.println("<a href=\"/15/on\"><button class=\"button\">15-OFF</button></a>"); else client.println("<a href=\"/15/off\"><button class=\"button\">15-ON</button></a>");
if (relay16state == "off") client.println("<a href=\"/16/on\"><button class=\"button\">16-OFF</button></a>"); else client.println("<a href=\"/16/off\"><button class=\"button\">16-ON</button></a>");
if (relay17state == "off") client.println("<a href=\"/17/on\"><button class=\"button\">17-OFF</button></a>"); else client.println("<a href=\"/17/off\"><button class=\"button\">17-ON</button></a>");
if (relay18state == "off") client.println("<a href=\"/18/on\"><button class=\"button\">18-OFF</button></a>"); else client.println("<a href=\"/18/off\"><button class=\"button\">18-ON</button></a>");
if (relay19state == "off") client.println("<a href=\"/19/on\"><button class=\"button\">19-OFF</button></a>"); else client.println("<a href=\"/19/off\"><button class=\"button\">19-ON</button></a>");
if (relay20state == "off") client.println("<a href=\"/20/on\"><button class=\"button\">20-OFF</button></a>"); else client.println("<a href=\"/20/off\"><button class=\"button\">20-ON</button></a>");
if (relay21state == "off") client.println("<a href=\"/21/on\"><button class=\"button\">21-OFF</button></a>"); else client.println("<a href=\"/21/off\"><button class=\"button\">21-ON</button></a>");
if (relay22state == "off") client.println("<a href=\"/22/on\"><button class=\"button\">22-OFF</button></a>"); else client.println("<a href=\"/22/off\"><button class=\"button\">22-ON</button></a>");
if (relay23state == "off") client.println("<a href=\"/23/on\"><button class=\"button\">23-OFF</button></a>"); else client.println("<a href=\"/23/off\"><button class=\"button\">23-ON</button></a>");
if (relay24state == "off") client.println("<a href=\"/24/on\"><button class=\"button\">24-OFF</button></a>"); else client.println("<a href=\"/24/off\"><button class=\"button\">24-ON</button></a>");
if (relay25state == "off") client.println("<a href=\"/25/on\"><button class=\"button\">25-OFF</button></a>"); else client.println("<a href=\"/25/off\"><button class=\"button\">25-ON</button></a>");
if (relay26state == "off") client.println("<a href=\"/26/on\"><button class=\"button\">26-OFF</button></a>"); else client.println("<a href=\"/26/off\"><button class=\"button\">26-ON</button></a>");
if (relay27state == "off") client.println("<a href=\"/27/on\"><button class=\"button\">27-OFF</button></a>"); else client.println("<a href=\"/27/off\"><button class=\"button\">27-ON</button></a>");
if (relay28state == "off") client.println("<a href=\"/28/on\"><button class=\"button\">28-OFF</button></a>"); else client.println("<a href=\"/28/off\"><button class=\"button\">28-ON</button></a>");
if (relay29state == "off") client.println("<a href=\"/29/on\"><button class=\"button\">29-OFF</button></a>"); else client.println("<a href=\"/29/off\"><button class=\"button\">29-ON</button></a>");
if (relay30state == "off") client.println("<a href=\"/30/on\"><button class=\"button\">30-OFF</button></a>"); else client.println("<a href=\"/30/off\"><button class=\"button\">30-ON</button></a>");
if (relay31state == "off") client.println("<a href=\"/31/on\"><button class=\"button\">31-OFF</button></a>"); else client.println("<a href=\"/31/off\"><button class=\"button\">31-ON</button></a>");
if (relay32state == "off") client.println("<a href=\"/32/on\"><button class=\"button\">32-OFF</button></a>"); else client.println("<a href=\"/32/off\"><button class=\"button\">32-ON</button></a>");
client.println("<a href=\"/all/on\"><button class=\"button\">all ON</button></a>");
client.println("<a href=\"/all/off\"><button class=\"button\">all OFF</button></a>");
}
client.println("</body></html>");
// The HTTP response ends with another blank line
client.println();
// Break out of the while loop
break;
} else { // if you got a newline, then clear currentLine
currentLine = "";
}
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
flag_read_di=0;
}
ScanKey(); //scan key
}
void ScanKey()
{
for(int i=0;i<=7;i++)
{
if(pcf8574_I1.digitalRead(i) == LOW) //key pressed
{
delay(20);
if(pcf8574_I1.digitalRead(i) == LOW) //key pressed again
{
pcf8574_R1.digitalWrite(i,!pcf8574_R1.digitalRead(i)); // toggle relay1 state
while(pcf8574_I1.digitalRead(i) == LOW); //wait remove hand
if (pcf8574_R1.digitalRead(i) == LOW) relaystate[i+1]="on";else relaystate[i+1]="off";
}
}
}
for(int i=0;i<=7;i++)
{
if(pcf8574_I2.digitalRead(i) == LOW) //key pressed
{
delay(20);
if(pcf8574_I2.digitalRead(i) == LOW) //key pressed again
{
pcf8574_R2.digitalWrite(i,!pcf8574_R2.digitalRead(i)); // toggle relay1 state
while(pcf8574_I2.digitalRead(i) == LOW); //wait remove hand
if (pcf8574_R2.digitalRead(i) == LOW) relaystate[i+9]="on";else relaystate[i+9]="off";
}
}
}
for(int i=0;i<=7;i++)
{
if(pcf8574_I3.digitalRead(i) == LOW) //key pressed
{
delay(20);
if(pcf8574_I3.digitalRead(i) == LOW) //key pressed again
{
pcf8574_R3.digitalWrite(i,!pcf8574_R3.digitalRead(i)); // toggle relay1 state
while(pcf8574_I3.digitalRead(i) == LOW); //wait remove hand
if (pcf8574_R3.digitalRead(i) == LOW) relaystate[i+17]="on";else relaystate[i+17]="off";
}
}
}
for(int i=0;i<=7;i++)
{
if(pcf8574_I4.digitalRead(i) == LOW) //key pressed
{
delay(20);
if(pcf8574_I4.digitalRead(i) == LOW) //key pressed again
{
pcf8574_R4.digitalWrite(i,!pcf8574_R4.digitalRead(i)); // toggle relay1 state
while(pcf8574_I4.digitalRead(i) == LOW); //wait remove hand
if (pcf8574_R4.digitalRead(i) == LOW) relaystate[i+25]="on";else relaystate[i+25]="off";
}
}
}
}
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - tugalsan - 03-03-2023
Hello I tried to compile the code but getting an error. Could you help me, what I am doing wrong?
Error Message: Compilation error:
Code: WebServer_WT32_ETH01.h: No such file or directory
Code: Using board 'nodemcu-32s' from platform in folder: C:\Users\tugal\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6
Using core 'esp32' from platform in folder: C:\Users\tugal\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6
cmd /c if exist "C:\\me\\codes\\arduino\\KinCony\\KC868-A32_Web_Server - ETH\\KC868-A32_Ethernet-WebServer\\partitions.csv" copy /y "C:\\me\\codes\\arduino\\KinCony\\KC868-A32_Web_Server - ETH\\KC868-A32_Ethernet-WebServer\\partitions.csv" "C:\\Users\\tugal\\AppData\\Local\\Temp\\arduino\\sketches\\F9C5D244B8014A3484EB69CC2958BCC1\\partitions.csv"
cmd /c if not exist "C:\\Users\\tugal\\AppData\\Local\\Temp\\arduino\\sketches\\F9C5D244B8014A3484EB69CC2958BCC1\\partitions.csv" copy "C:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\tools\\partitions\\default.csv" "C:\\Users\\tugal\\AppData\\Local\\Temp\\arduino\\sketches\\F9C5D244B8014A3484EB69CC2958BCC1\\partitions.csv"
Detecting libraries used...
"C:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace" "-
...
IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_NodeMCU_32S -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"NodeMCU_32S\"" "-DARDUINO_VARIANT=\"nodemcu-32s\"" -DESP32 -DCORE_DEBUG_LEVEL=0 "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\nodemcu-32s" "C:\\Users\\tugal\\AppData\\Local\\Temp\\arduino\\sketches\\F9C5D244B8014A3484EB69CC2958BCC1\\sketch\\KC868-A32_Ethernet-WebServer.ino.cpp" -o nul
Alternatives for PCF8574.h: [PCF8574 library@2.3.5]
ResolveLibrary(PCF8574.h)
-> candidates: [PCF8574 library@2.3.5]
"C:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace" "-
...
IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_NodeMCU_32S -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"NodeMCU_32S\"" "-DARDUINO_VARIANT=\"nodemcu-32s\"" -DESP32 -DCORE_DEBUG_LEVEL=0 "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\nodemcu-32s" "-Ic:\\me\\docs\\Arduino\\libraries\\PCF8574_library" "C:\\Users\\tugal\\AppData\\Local\\Temp\\arduino\\sketches\\F9C5D244B8014A3484EB69CC2958BCC1\\sketch\\KC868-A32_Ethernet-WebServer.ino.cpp" -o nul
Alternatives for Wire.h: [Wire@1.0.1]
ResolveLibrary(Wire.h)
-> candidates: [Wire@1.0.1]
"C:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++" -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace" "-
...
IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx" -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10607 -DARDUINO_NodeMCU_32S -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"NodeMCU_32S\"" "-DARDUINO_VARIANT=\"nodemcu-32s\"" -DESP32 -DCORE_DEBUG_LEVEL=0 "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\nodemcu-32s" "-Ic:\\me\\docs\\Arduino\\libraries\\PCF8574_library" "-IC:\\Users\\tugal\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\libraries\\Wire\\src" "C:\\Users\\tugal\\AppData\\Local\\Temp\\arduino\\sketches\\F9C5D244B8014A3484EB69CC2958BCC1\\sketch\\KC868-A32_Ethernet-WebServer.ino.cpp" -o nul
Alternatives for WebServer_WT32_ETH01.h: []
ResolveLibrary(WebServer_WT32_ETH01.h)
-> candidates: []
C:\me\codes\arduino\KinCony\KC868-A32_Web_Server - ETH\KC868-A32_Ethernet-WebServer\KC868-A32_Ethernet-WebServer.ino:12:34: fatal error: WebServer_WT32_ETH01.h: No such file or directory
compilation terminated.
Using library PCF8574 library at version 2.3.5 in folder: C:\me\docs\Arduino\libraries\PCF8574_library
Using library Wire at version 1.0.1 in folder: C:\Users\tugal\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire
exit status 1
Compilation error: WebServer_WT32_ETH01.h: No such file or directory
```
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - admin - 03-03-2023
maybe you have not chosed correct "board" in arduino IDE. need use board -- "NodeMcu-32S"
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - tugalsan - 03-03-2023
(03-03-2023, 09:04 AM)admin Wrote: maybe you have not chosed correct "board" in arduino IDE. need use board -- "NodeMcu-32S"
I did actually. But I have never plugged the board phsically or bind the COM yet.
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - admin - 03-03-2023
do you have use ESP32 board v2.0? i think you can try to use ESP32 board V1.0.6 for a test.
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - tugalsan - 03-03-2023
(03-03-2023, 09:54 AM)admin Wrote: do you have use ESP32 board v2.0? i think you can try to use ESP32 board V1.0.6 for a test.
No actually.
I am just a java programmer, I do not have many inventory.
Although I have EEE diploma, I am just good with screw driver trainning
That is why, I really want to use this board.
But i feel think the fix is, somehow written here.
I just have to do a controlled experiment with copying files and such.
https://github.com/khoih-prog/WebServer_WT32_ETH01
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - admin - 03-03-2023
my means: do you have installed "ESP32 v2.0 board" in arduino IDE.
not error "WebServer_WT32_ETH01.h: No such file or directory" , is wrong of your arudino environment.
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - tugalsan - 03-06-2023
(03-03-2023, 10:33 AM)admin Wrote: my means: do you have installed "ESP32 v2.0 board" in arduino IDE.
not error "WebServer_WT32_ETH01.h: No such file or directory" , is wrong of your arudino environment.
For the product: KinCony KC868-A32 Rev:1.2
With arduino: 2.0.4
With the custom libraries below:
CF8574_library.zip
WebServer_WT32_ETH01 (click Code button, and download zip)
When I open up the arduino, It wants to update the custom libraries. I Updated
Then I restarted the Arduino.
Then, I could able to compile the project with below warnings:
Code: In file included from C:\me\codes\arduino\KinCony\KC868-A32_Web_Server - ETH\KC868-A32_Ethernet-WebServer\KC868-A32_Ethernet-WebServer.ino:14:0:
c:\me\codes\arduino\libraries\WebServer_WT32_ETH01-main\src/WebServer_WT32_ETH01.h:47:6: warning: #warning Using code for ESP32 core v1.0.6- in WebServer_WT32_ETH01.h [-Wcpp]
#warning Using code for ESP32 core v1.0.6- in WebServer_WT32_ETH01.h
^
c:\me\codes\arduino\libraries\WebServer_WT32_ETH01-main\src/WebServer_WT32_ETH01.h:60:4: warning: #warning Using ESP32 architecture for WebServer_WT32_ETH01 [-Wcpp]
#warning Using ESP32 architecture for WebServer_WT32_ETH01
^
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - admin - 03-06-2023
can you test with arduino IDE 1.8.19. i am tested with this version.
RE: [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server - tugalsan - 03-08-2023
(03-06-2023, 10:29 AM)admin Wrote: can you test with arduino IDE 1.8.19. i am tested with this version.
I installed IDE 1.8.19, and compile. As you have mentioned, there was no compile warning.
Then i looked at prefrences, Compiler warnings are set to none.
If I change it to Default manually, you can see the warnings.
I think, warnings are not important enough that, IDE 1.8.19 comes with CompilerWarning set to None.
Hence, it can compile, ok.
|