Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 6,366
» Latest member: Aubergine
» Forum threads: 2,844
» Forum posts: 15,031

Full Statistics

Online Users
There are currently 73 online users.
» 1 Member(s) | 52 Guest(s)
AhrefsBot, Amazonbot, Bing, Bytespider, Crawl, Google, PetalBot, WordPress/, Yandex, bot, owler, salvolivigni

Latest Threads
KinCony ESP32-S3 Core Boa...
Forum: Extender module
Last Post: AshS
17 minutes ago
» Replies: 36
» Views: 1,388
A16: IFTTT Time based act...
Forum: KC868-A16
Last Post: sebfromgermany
2 hours ago
» Replies: 17
» Views: 157
analog input resolution 3...
Forum: KC868-A16
Last Post: Yosemite
2 hours ago
» Replies: 15
» Views: 384
[Arduino IDE demo source ...
Forum: KC868-A16
Last Post: wolli
3 hours ago
» Replies: 7
» Views: 2,576
KC868-HA-V21 serial port ...
Forum: KC868-HA /HA v2
Last Post: admin
5 hours ago
» Replies: 8
» Views: 92
Using B16M for driving LE...
Forum: B16M
Last Post: admin
5 hours ago
» Replies: 3
» Views: 11
KC868-M30 - how to get it...
Forum: KC868-M16 / M1 / MB / M30
Last Post: msmrz
6 hours ago
» Replies: 4
» Views: 43
KC868-HA RS485 INPUT & OU...
Forum: KC868-HA /HA v2
Last Post: admin
Yesterday, 10:57 PM
» Replies: 29
» Views: 6,584
MQTT Connection issues
Forum: KC868-A16
Last Post: admin
Yesterday, 10:55 PM
» Replies: 1
» Views: 9
KCS868-A6 not found
Forum: KC868-A series and Uair Smart Controller
Last Post: admin
Yesterday, 10:50 PM
» Replies: 12
» Views: 55

  [Arduino IDE demo source code for KC868-A8]--#11-Ethernet_Web server_code
Posted by: KinCony Support - 09-05-2022, 03:12 AM - Forum: KC868-A8 - Replies (1)

[Arduino IDE demo source code for KC868-A8]--#11-Ethernet_Web server_code
   

.zip   KC868-A8_Web_Server-ETH.zip (Size: 33.43 MB / Downloads: 468)
   



Code:
/***********************************************************
* Create Your own WebServer for KC868-A8 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);
//set I2C of A8
PCF8574 pcf8574_I1(&I2Cone,0x22,4,5);
PCF8574 pcf8574_R1(&I2Cone,0x24,4,5);

String relaystate[8]={"relay1state","relay2state","relay3state","relay4state",
                       "relay5state","relay6state","relay7state","relay8state",
                     };
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
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";
        }
      }
  }

}

void setup() {

  Serial.begin(115200);

  // Set PCF8574 pinMode to OUTPUT
  for(int i=0;i<=7;i++)
  {
     pcf8574_R1.pinMode(i, OUTPUT);
  }
 
  pcf8574_R1.begin();
 
  for(int i=0;i<=7;i++)
  {
     pcf8574_I1.pinMode(i, INPUT);
  }

    pcf8574_I1.begin();
     

  for(int i=0;i<=7;i++)
  {
     pcf8574_R1.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 /read") >= 0) flag_read_di=1;
            else if (header.indexOf("GET /all/on") >= 0)
            {
              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

              for(int i=0;i<=7;i++)
              {
                 pcf8574_R1.digitalWrite(i, LOW);
              }
             
            }
            else if (header.indexOf("GET /all/off") >= 0)
            {
              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

              for(int i=0;i<=7;i++)
              {
                 pcf8574_R1.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; border: 3px solid green;margin: 0px auto;text-align: center;font-size: 10px;}");
            client.println(".button { background-color: #195B00; border-radius: 10px;color: white; padding: 10px 40px;");
            client.println("text-decoration: none; font-size: 20px; margin: 2px;text-align: center; 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);
            }
            else
            {
            // Web Page Heading
            client.println("<body><h1>KC868-A8 Web Server</h1>");


            // Display current state, and ON/OFF buttons for relay
            //client.println("<p>relay1 - State " + relay1state + "</p>");
              
            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>");
           
              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;
          } 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
}

Print this item

  [Arduino IDE demo source code for KC868-A32]--#08-Ethernet_LAN_Web_server
Posted by: admin - 09-02-2022, 11:24 PM - Forum: KC868-A32/A32 Pro - Replies (16)

this arduino source code is web server use for Ethernet via KC868-A32

digital input can trigger relay output. just connect with ethernet cable

.zip   KC868-A32_Web_Server - ETH.zip (Size: 478.62 KB / Downloads: 393)
   

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";
       
        }
      }
  }

}

Print this item

  [Arduino demo source code for KC868-A4]-16 homekit with DS18B20 temperature sensor
Posted by: admin - 09-02-2022, 01:13 PM - Forum: KC868-A4 - Replies (2)

here is source code used by homespan library and onewire library.

.zip   KC868-A4-HomeKit-DS18B20.zip (Size: 3.23 KB / Downloads: 440)
   
apple homekit pair code
   
   
   

Print this item

  alexa
Posted by: davesmithr1 - 09-01-2022, 02:58 PM - Forum: KC868-A16 - Replies (1)

hi, im looking to set this up to work with alexa and is there an app for these, also i want to web browse to it for setup so what is the ip address and login?

Print this item

  KC868-A16 work with KC868-E16
Posted by: admin - 08-30-2022, 11:34 AM - Forum: Schematic and diagram - No Replies

   

Print this item

  ESP32 firmware download tool
Posted by: admin - 08-26-2022, 01:42 AM - Forum: KC868-A series and Uair Smart Controller - No Replies


.zip   flash_download_tool_3.9.2_0.zip (Size: 31.22 MB / Downloads: 636)

[b][Image: 11-1.jpg][Image: 22-1.jpg][/b]

Print this item

  [Arduino IDE demo source code for KC868-A16]--#10-KC868-A16_RS485_send and receive
Posted by: KinCony Support - 08-26-2022, 12:51 AM - Forum: KC868-A16 - Replies (9)

[Arduino IDE demo source code for KC868-A16]--#10-KC868-A16_RS485_send and receive

.zip   KC868-A16-RS485.zip (Size: 571.74 KB / Downloads: 652)

   

Code:
/*KC868-A16   RS485 SEND AND RECEIVE CODE*/


void setup() {
  Serial.begin(115200);
   // Serial2.begin(115200,SERIAL_8N1,32,33);//a8&a8s
  Serial2.begin(115200,SERIAL_8N1,16,13);//a16
  //Serial2.begin(115200,SERIAL_8N1,16,14);//a32
  //Serial2.begin(115200,SERIAL_8N1,13,14);//a64
   Serial2.println("RS485 SEND is OK!!");
   Serial2.println("******************");
 
}

void loop() {
  /*print the received data of RS485 port*/
  while(Serial2.available()>0)
   {
    Serial2.print((char)Serial2.read());//Read rs485 receive data  and print it
   }
  delay(200);
}

Print this item

  KC868-A8S_WS2812-RGB_LED
Posted by: garrip - 08-24-2022, 08:26 PM - Forum: Development - Replies (4)

I am trying to use this example code

[Arduino IDE demo source code for KC868-A8S]--#08-KC868-A8S_WS2812-RGB_LED_code

but WS2812 is alway off.
PIN 12 is LOW.

I'm wrong, but I can not understand why.

I  test output, input (digital and analog), GSM, and RF433 using my code, everything works fine.

I can't get it to work (tried different code and library) is the RBG WS2812 led on the board only.

I tested my code on RBG WS2812 ring using a ESP32-Wrover-E and it works.

Can someone help me,  please?

Can someone tell me how I can download a demo firmware, when I turn on the board  the first time,  the led changed color.
I want to test the RBG WS2812 LED, so if I have broken it, I'll change with a new one.

Thank, best regards.


Marco

Print this item

Thumbs Up RS485
Posted by: iulius - 08-24-2022, 05:00 PM - Forum: KC868-A16 - Replies (4)

Hi~I'm big fan of KINCONY.

I want to communicate with other devices through RS485 of KC868-A16.

I tried various things for this using ESPHOME, but the signal does not come out from the RS485 port of KC868-A16 and the signal is not received either.

Can you give me a simple example of sending and receiving signals via RS485 in KC868-A16?

please please~~~~~!!

Print this item

  An experience of installation KC868-A32 in to my own flat.
Posted by: Lastnovik - 08-24-2022, 09:58 AM - Forum: KC868-A32/A32 Pro - Replies (1)

The KC868-A32 is used as controller of  light and water leak powered by Esphome.[/url]
Water leak detector used this [url=https://aliexpress.ru/item/1005004546201091.html]https://aliexpress.ru/item/1005004546201091.html
 connected through zigbee2mqtt and Home Assistant.
More photo you can find https://drive.google.com/drive/folders/1...sp=sharing


Identified deficiencies of the device:
1. Inconvenient connectors for connecting the load, the wires should go parallel to the board.
2. The connector for the signal wires is not removable and it is not convenient. There is no way to quickly dismantle the device without disconnecting the signal wires.

[Image: DSC-0153.jpg]

Print this item