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

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 10,161
» Latest member: onlycardgame
» Forum threads: 4,260
» Forum posts: 21,109

Full Statistics

Online Users
There are currently 252 online users.
» 0 Member(s) | 222 Guest(s)
AhrefsBot, Amazonbot, Applebot, AwarioBot, Baidu, Bytespider, Crawl, Facebook, Google, PetalBot, Sogou web, bot, facebookexternalhit

Latest Threads
Bricked KC868-A16
Forum: KC868-A series and Uair Smart Controller
Last Post: admin
42 minutes ago
» Replies: 3
» Views: 22
remember relay state
Forum: KC868-E16T
Last Post: greeryan
10 hours ago
» Replies: 6
» Views: 351
It looks like it's broken...
Forum: KinCony Server-Mini / Server-16 Raspberry Pi4 relay module
Last Post: admin
Yesterday, 08:36 AM
» Replies: 5
» Views: 93
Bidirectional reading
Forum: N10
Last Post: admin
10-05-2026, 11:35 PM
» Replies: 1
» Views: 23
Update to latest esphome
Forum: KC868-A16
Last Post: admin
10-05-2026, 12:05 PM
» Replies: 6
» Views: 142
KC868-A16 ethernet work w...
Forum: KC868-A16
Last Post: admin
10-04-2026, 11:43 PM
» Replies: 31
» Views: 26,344
B32M maximum voltage
Forum: DIY Project
Last Post: admin
10-04-2026, 11:52 AM
» Replies: 4
» Views: 561
m16v2 energy meter - cali...
Forum: KC868-M16 / M1 / MB / M30
Last Post: admin
10-02-2026, 11:50 AM
» Replies: 15
» Views: 2,495
oCBot: KC868-A6/A16 as a ...
Forum: DIY Project
Last Post: oCBot
10-01-2026, 01:32 PM
» Replies: 0
» Views: 289
N20 Energy RS485 Modbus P...
Forum: N20
Last Post: admin
10-01-2026, 12:43 PM
» Replies: 3
» Views: 1,014

  KC868-H32BS V1.50sp new firmware update
Posted by: admin - 12-14-2022, 07:18 AM - Forum: News - Replies (6)

Update content:
1. support KC868-HA RS485 button adapter.
2. support "interlock" function for "output", that can use for curtain motor, protect your motor. some "interlock" output will never ON at the same time.
   

.zip   H32BS_V150SP_20221214.zip (Size: 56.28 KB / Downloads: 879)

Print this item

  KinCony RS485 energy meter RS485 modbus protocol
Posted by: admin - 12-14-2022, 01:05 AM - Forum: KC868-HxB series Smart Controller - Replies (9)

Modbus-RTU: 9600 E 8 1  read function:03 

Register address        data                                        data type-IEEE-754      function

0000, 0001              power consumption (kWh)                 Float                        read
0100, 0101                  voltage (V)                                   Float                        read
0106, 0107                  current  (A)                                  Float                        read
0118, 0119                  power (kW)                                  Float                        read
0142, 0143                  power factor                                 Float                        read
0144, 0145                  frequency                                     Float                        read

How to change meter ID, for example: change ID:01  to 20 just send command:
01 10 0D B0 00 01 02 00 14 60 AF
first (01) current ID
14 is (20) decimal
60 AF (CRC)

   

Print this item

  KC868-A8 Novice
Posted by: BOND71 - 12-13-2022, 02:41 PM - Forum: DIY Project - Replies (1)

Hi there,
I’m an Electrician and have recently built my own house. I’d like to be able to simply switch on and off a few circuits(eg. Lights, heating, electric gates, etc.) remotely using an IPhone app when I’m away from home. I recently bought a KC868-A8 controller but am a bit at a loss for what I should do next. I’m a total novice at ’Home Automation’ but I’d like to give it a go on my own house. Any help or advice would be greatly appreciated. 
Thanks. 
BOND71

Print this item

  Rotary encoder
Posted by: pietervanstee - 12-13-2022, 09:44 AM - Forum: KC868-A series and Uair Smart Controller - Replies (3)

Hi there,

I'm looking for some information which I can't find about the implementation of a rotary encoder.
I assume this can just be used as a binary input device... which occupies 3 inputs?
CW, CCW, & push

[Image: S366ca414d923475dbfae4b2b2cca49754.jpg?w...&hash=1600]
For example:
https://nl.aliexpress.com/item/100500382...hXBlKonYzV


Thanks,
Pieter

Print this item

Lightbulb ESP32 RF
Posted by: Matt - 12-13-2022, 09:27 AM - Forum: KC868-Server Raspberry Pi4 local server - Replies (49)

Hi! (first of all thx for nice products ;-))

I try to program RF remote.. (on server)
I follow : https://www.kincony.com/home-automation-...moter.html

Flashed the esp i see the codes in the serial monitor but the outputs are not responding..

I think i edit the example right : (just a few buttons to test)

#include <RCSwitch.h>
#include "PinDefinitionsAndMore.h"
#include <IRremote.h>

RCSwitch mySwitch = RCSwitch();
long int keycode=0;
long int temp_keycode=0;


void setup()
{
  Serial.begin(9600);
  Serial1.begin(38400);
  mySwitch.enableReceive(digitalPinToInterrupt(13));

  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN);
}

void loop() {
  if (mySwitch.available()) {
   
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );
    keycode=mySwitch.getReceivedValue();

    if (keycode==1376533) {Serial1.print("RELAY-KEY-255,1,1");delay(500);}  //toggle relay1
    if (keycode==1376532) {Serial1.print("RELAY-KEY-255,2,1");delay(500);}  //toggle relay2
    if (keycode==16405) {Serial1.print("RELAY-KEY-255,3,1");delay(500);}  //toggle relay3
    if (keycode==16404) {Serial1.print("RELAY-KEY-255,4,1");delay(500);}  //toggle relay4
    if (keycode==4117) {Serial1.print("RELAY-KEY-255,5,1");delay(500);}  //toggle relay5
    if (keycode==5723139) {Serial1.print("RELAY-KEY-255,6,1");delay(500);}  //toggle relay6
    if (keycode==20501) {Serial1.print("RELAY-KEY-255,7,1");delay(500);}  //toggle relay7
    if (keycode==20500) {Serial1.print("RELAY-KEY-255,8,1");delay(500);}  //toggle relay8
    if (keycode==5576131) {Serial1.print("RELAY-KEY-255,9,1");delay(500);}  //toggle relay9
    if (keycode==5575951) {Serial1.print("RELAY-KEY-255,10,1");delay(500);}  //toggle relay10
    if (keycode==5576188) {Serial1.print("RELAY-KEY-255,11,1");delay(500);}  //toggle relay11
    if (keycode==5576179) {Serial1.print("RELAY-KEY-255,12,1");delay(500);}  //toggle relay12
    if (keycode==5576191) {Serial1.print("RELAY-KEY-255,13,1");delay(500);}  //toggle relay13
    if (keycode==5576128) {Serial1.print("RELAY-KEY-255,14,1");delay(500);}  //toggle relay14
    if (keycode==5575987) {Serial1.print("RELAY-KEY-255,15,1");delay(500);}  //toggle relay15
    if (keycode==5575936) {Serial1.print("RELAY-KEY-255,16,1");delay(500);}  //toggle relay16

    mySwitch.resetAvailable();
  }

    if (IrReceiver.decode()) {

        // Print a short summary of received data
        IrReceiver.printIRResultShort(&Serial);
        if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
            // We have an unknown protocol here, print more info
            IrReceiver.printIRResultRawFormatted(&Serial, true);
        }
        Serial.println();
        IrReceiver.resume(); // Enable receiving of the next value
   
    if (IrReceiver.decodedIRData.command == 0x15) Serial1.print("RELAY-SET-255,1,1"); //turn ON relay1
    if (IrReceiver.decodedIRData.command == 0x16) Serial1.print("RELAY-SET-255,1,0"); //turn OFF relay1
    if (IrReceiver.decodedIRData.command == 0x17) Serial1.print("RELAY-SET-255,2,1"); //turn ON relay2
    if (IrReceiver.decodedIRData.command == 0x19) Serial1.print("RELAY-SET-255,2,0"); //turn OFF relay2
    if (IrReceiver.decodedIRData.command == 0x1A) Serial1.print("RELAY-SET-255,3,1"); //turn ON relay3
    if (IrReceiver.decodedIRData.command == 0x1B) Serial1.print("RELAY-SET-255,3,0"); //turn OFF relay3
    if (IrReceiver.decodedIRData.command == 0x1D) Serial1.print("RELAY-SET-255,4,1"); //turn ON relay4
    if (IrReceiver.decodedIRData.command == 0x1E) Serial1.print("RELAY-SET-255,4,0"); //turn OFF relay4
    if (IrReceiver.decodedIRData.command == 0x1F) Serial1.print("RELAY-SET-255,5,1"); //turn ON relay5
    if (IrReceiver.decodedIRData.command == 0x41) Serial1.print("RELAY-SET-255,5,0"); //turn OFF relay5
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,6,1"); //turn OFF relay6
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,6,0"); //turn OFF relay6
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,7,1"); //turn OFF relay7
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,7,0"); //turn OFF relay7
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,8,1"); //turn OFF relay8
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,8,0"); //turn OFF relay8
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,9,1"); //turn OFF relay9
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,9,0"); //turn OFF relay9
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,10,1"); //turn OFF relay10
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,10,0"); //turn OFF relay10
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,11,1"); //turn OFF relay11
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,11,0"); //turn OFF relay11
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,12,1"); //turn OFF relay12
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,12,0"); //turn OFF relay12
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,13,1"); //turn OFF relay13
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,13,0"); //turn OFF relay13
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,14,1"); //turn OFF relay14
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,14,0"); //turn OFF relay14
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,15,1"); //turn OFF relay15
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,15,0"); //turn OFF relay15
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,16,1"); //turn OFF relay16
    if (IrReceiver.decodedIRData.command == 0x42) Serial1.print("RELAY-SET-255,16,0"); //turn OFF relay16
    }
}


Thx in advance..

Kind regards,

Matt

Print this item

  Home Assistant 2022.12.0
Posted by: Mandlap - 12-12-2022, 09:31 PM - Forum: KC868-Server Raspberry Pi4 local server - Replies (9)

I have updated my KC868-server to Home Assistant 2022.12.0, now all my sensors and switches from my KC868-Server are "unavailable".
below is my sample configuration. Is the a new configuration for HA 2022.12.0, as they have been warning that this updates will affect the sensor.
 
mqtt:
  broker: 192.168.0.118
  port: 1883
  username: mqtt
  password: 1232332TESETEST

# Example configuration.yaml entry
switch:
  - platform: mqtt
    name: 'output-1'
    unique_id: output-1
    state_topic: 'server/a767350037679/state'
    command_topic: 'server/a767350037679/set'
    payload_on:  '{"relay1":{"on":1}}'
    payload_off:  '{"relay1":{"on":0}}'
    value_template: '{{ value_json.relay1.on }}'
    state_on: 1
    state_off: 0

  - platform: mqtt
    name: 'output-2'
    unique_id: output-2
    state_topic: 'server/a767350037679/state'
    command_topic: 'server/a767350037679/set'
    payload_on:  '{"relay2":{"on":1}}'
    payload_off:  '{"relay2":{"on":0}}'


binary_sensor:
  - platform: mqtt
    name: 'input-1'
    unique_id: input-1
    state_topic: 'server/a767350037679/state'
    value_template: '{{ value_json.input1.on }}'
    payload_on: 1
    payload_off: 0

  - platform: mqtt
    name: 'input-2'
    unique_id: input-2
    state_topic: 'server/a767350037679/state'
    value_template: '{{ value_json.input2.on }}'
    payload_on: 1
    payload_off: 0
    value_template: '{{ value_json.relay2.on }}'
    state_on: 1
    state_off: 0

sensor:
  - platform: mqtt
    name: 'analog-1'
    unique_id: analog-1
    state_topic: 'server/a767350037679/state'
    unit_of_measurement: 'v'
    value_template: '{{ value_json.analog1.value }} ' 
   
  - platform: mqtt
    name: 'analog-2'
    unique_id: analog-2
    state_topic: 'server/a767350037679/state'
    unit_of_measurement: 'v'
    value_template: '{{ value_json.analog2.value }} '

Print this item

  how to connect celling pir sensor with h32b pro
Posted by: engmohades - 12-12-2022, 12:17 PM - Forum: News - Replies (3)

how to connect celling pir sensor with h32b pro ?

there are ( + - ) ( tamper ) ( alarm ) 

What is the tamper and How can I use the tamper in the home automation ?



Attached Files Thumbnail(s)
   
Print this item

  facttoy values KC868-A8
Posted by: Isaac639 - 12-12-2022, 08:43 AM - Forum: KC868-A8 - Replies (1)

Hello, 
I have KC868-A8 v.1.4
How can I reset the motherboard to factory settings?

Thank you very much!
Isaac.

Print this item

  KC868-HA ESP32 arduino demo code work with KC868-A8S
Posted by: admin - 12-12-2022, 12:43 AM - Forum: KC868-HxB series Smart Controller - Replies (4)

This is arduino demo code for KC868-A8S board, you can use for any KC868-A series board just have RS485 interface.
The function is press 6 digital input trigger relay output and feedback relay state to switch panel's LEDs. When press the switch panel buttons, will control KC868-A8S relay output.
arduino code download link:

.zip   KC868-HA-A8S-Demo.zip (Size: 1.79 KB / Downloads: 1092)

           

Print this item

  KC868-HA ESP32 arduino demo code work with KC868-A8S
Posted by: admin - 12-12-2022, 12:39 AM - Forum: KC868-A series and Uair Smart Controller - No Replies

This is arduino demo code for KC868-A8S board, you can use for any KC868-A series board just have RS485 interface.
The function is press 6 digital input trigger relay output and feedback relay state to switch panel's LEDs. When press the switch panel buttons, will control KC868-A8S relay output.
arduino code download link:

.zip   KC868-HA-A8S-Demo.zip (Size: 1.79 KB / Downloads: 952)
           

Code:
#include "Arduino.h"
#include "PCF8574.h"
#include "CRC16.h"
#include "CRC.h"

#define  RS485Address   0x01

#define  USB_TX_PIN   1
#define  USB_RX_PIN   3
#define  M485_TX_PIN   33
#define  M485_RX_PIN   32

// Set i2c address
PCF8574 pcf8574o(0x24,4,5);
PCF8574 pcf8574i(0x22,4,5);

unsigned long switch_32_1_state = 0;

uint16_t  CRC16_Data = 0;
uint8_t  CRC16_Data_H = 0;
uint8_t  CRC16_Data_L = 0;

unsigned char Rs485_Str[30] = {0};

String indata="";
String val="";

String outdata="";

void setup()
{
  // Serial 0 with USB
  Serial.begin(9600,SERIAL_8N1,USB_RX_PIN,USB_TX_PIN);
  // Serial 2 with 485
  Serial2.begin(9600,SERIAL_8N1,M485_RX_PIN,M485_TX_PIN);

  Serial.println();

  // Set pinMode to OUTPUT
  pcf8574o.pinMode(P0, OUTPUT);
  pcf8574o.pinMode(P1, OUTPUT);
  pcf8574o.pinMode(P2, OUTPUT);
  pcf8574o.pinMode(P3, OUTPUT);
  pcf8574o.pinMode(P4, OUTPUT);
  pcf8574o.pinMode(P5, OUTPUT);
  pcf8574o.pinMode(P6, OUTPUT);
  pcf8574o.pinMode(P7, OUTPUT);

  Serial.print("Init pcf8574o...");
  if (pcf8574o.begin()){
    Serial.println("OK");
  }else{
    Serial.println("KO");
  }


pcf8574i.pinMode(P0, INPUT);
pcf8574i.pinMode(P1, INPUT);
pcf8574i.pinMode(P2, INPUT);
pcf8574i.pinMode(P3, INPUT);
pcf8574i.pinMode(P4, INPUT);
pcf8574i.pinMode(P5, INPUT);
pcf8574i.pinMode(P6, INPUT);
pcf8574i.pinMode(P7, INPUT);

  Serial.print("Init pcf8574i...");
  if (pcf8574i.begin()){
    Serial.println("OK");
  }else{
    Serial.println("KO");
  }


pcf8574o.digitalWrite(P0, HIGH);
pcf8574o.digitalWrite(P1, HIGH);
pcf8574o.digitalWrite(P2, HIGH);
pcf8574o.digitalWrite(P3, HIGH);
pcf8574o.digitalWrite(P4, HIGH);
pcf8574o.digitalWrite(P5, HIGH);
pcf8574o.digitalWrite(P6, HIGH);
pcf8574o.digitalWrite(P7, HIGH);


}

void loop()
{
//------------------------------------

//sample IO
  PCF8574::DigitalInput di = pcf8574i.digitalReadAll();

  if(!((di.p0)&&(di.p1)&&(di.p2)&&(di.p3)&&(di.p4)&&(di.p5)&&(di.p6)&&(di.p7)))
  {
      if(di.p0==0)  
      {
        if(((switch_32_1_state&0x01)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P0, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(1-1));
        }
        else
        {
        pcf8574o.digitalWrite(P0, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(1-1)));
        }

      }     


      if(di.p1==0)  
      {
     
        if(((switch_32_1_state&0x02)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P1, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(2-1));
        }
        else
        {
        pcf8574o.digitalWrite(P1, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(2-1)));
        }

      }     


      if(di.p2==0)  
      {
     
        if(((switch_32_1_state&0x04)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P2, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(3-1));
        }
        else
        {
        pcf8574o.digitalWrite(P2, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(3-1)));
        }

      }     


      if(di.p3==0)  
      {
     
        if(((switch_32_1_state&0x08)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P3, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(4-1));
        }
        else
        {
        pcf8574o.digitalWrite(P3, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(4-1)));
        }

   }     


      if(di.p4==0)  
      {
        if(((switch_32_1_state&0x10)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P4, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(5-1));
        }
        else
        {
        pcf8574o.digitalWrite(P4, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(5-1)));
        }

      }     


      if(di.p5==0)  
      {
        if(((switch_32_1_state&0x20)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P5, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(6-1));
        }
        else
        {
        pcf8574o.digitalWrite(P5, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(6-1)));
        }

      }     


      if(di.p6==0)  
      {
        if(((switch_32_1_state&0x40)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P6, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(7-1));
        }
        else
        {
        pcf8574o.digitalWrite(P6, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(7-1)));
        }

      }     


      if(di.p7==0)  
      {
     
        if(((switch_32_1_state&0x80)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P7, LOW);
        switch_32_1_state = switch_32_1_state | (1<<(8-1));
        }
        else
        {
        pcf8574o.digitalWrite(P7, HIGH);
        switch_32_1_state = switch_32_1_state & (~(1<<(8-1)));
        }

      }   


     rs485_feedback();
}

  while(!((di.p0==1)&&(di.p1==1)&&(di.p2==1)&&(di.p3==1)&&(di.p4==1)&&(di.p5==1)&&(di.p6==1)&&(di.p7==1)))
   {
    di = pcf8574i.digitalReadAll();
   }
//------------------------------------
//read RS485 data
while(Serial2.available()>0)
   {
    indata+=char(Serial2.read());   //read  via 485
    delay(2);
    if(Serial2.available()<=0)
     {
        //Serial2.print(indata);
     }
   }   
//------------------------------------
//deal with RS485 data
if(indata.length()>0)
  {
     val=indata;   //
               Serial.print(indata);

      //----Key control relay command 
    if((val[0]==RS485Address)&&(val[1]==0x10)&&(val[2]==0x00)&&(val[3]==0x0A)&&(val[4]==0x00)&&(val[5]==0x06)&&(val[6]==0x0C))
    {
        val[7] = (((val[7]>>4) & 0x0F)*10)+(val[7]& 0x0F); //bcd to hex
        val[8] = val[8] & 0x01;
        switch_32_1_state = switch_32_1_state ^ (val[8]<<(val[7]-1));

        val[9]  = (((val[9]>>4) & 0x0F)*10)+(val[9]& 0x0F); //bcd to hex
        val[10] = val[10] & 0x01;
        switch_32_1_state = switch_32_1_state ^ (val[10]<<(val[9]-1));
       
        val[11]  = (((val[11]>>4) & 0x0F)*10)+(val[11]& 0x0F); //bcd to hex
        val[12] = val[12] & 0x01;
        switch_32_1_state = switch_32_1_state ^ (val[12]<<(val[11]-1));
       
        val[13]  = (((val[13]>>4) & 0x0F)*10)+(val[13]& 0x0F); //bcd to hex
        val[14] = val[14] & 0x01;
        switch_32_1_state = switch_32_1_state ^ (val[14]<<(val[13]-1));
      
        val[15]  = (((val[15]>>4) & 0x0F)*10)+(val[15]& 0x0F); //bcd to hex
        val[16] = val[16] & 0x01;
        switch_32_1_state = switch_32_1_state ^ (val[16]<<(val[15]-1));

        val[17]  = (((val[17]>>4) & 0x0F)*10)+(val[17]& 0x0F); //bcd to hex
        val[18] = val[18] & 0x01;
        switch_32_1_state = switch_32_1_state ^ (val[18]<<(val[17]-1));

        //switch_1_state
        if(((switch_32_1_state&0x01)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P0, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P0, LOW);
        }

        //switch_2_state
        if(((switch_32_1_state&0x02)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P1, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P1, LOW);
        }

        //switch_3_state
        if(((switch_32_1_state&0x04)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P2, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P2, LOW);
        }

        //switch_4_state
        if(((switch_32_1_state&0x08)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P3, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P3, LOW);
        }

        //switch_5_state
        if(((switch_32_1_state&0x10)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P4, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P4, LOW);
        }

        //switch_6_state
        if(((switch_32_1_state&0x20)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P5, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P5, LOW);
        }

        //switch_7_state
        if(((switch_32_1_state&0x40)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P6, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P6, LOW);
        }

        //switch_8_state
        if(((switch_32_1_state&0x80)?1:0) == 0 )
        {
        pcf8574o.digitalWrite(P7, HIGH);
        }
        else
        {
        pcf8574o.digitalWrite(P7, LOW);
        }

     rs485_feedback();
   
    }

  }
   
   
    indata="";   //clear indata
//--------------------------------------------------

 
  delay(30);
 
}

void rs485_feedback(void)
{
       Rs485_Str[0] = RS485Address;
       Rs485_Str[1] = 0x03;
       Rs485_Str[2] = 0x06;
       Rs485_Str[3] = 0x55;
       Rs485_Str[4] = 0xAA;
       Rs485_Str[5] = (int)((switch_32_1_state >> 24) & 0xFF);
       Rs485_Str[6] = (int)((switch_32_1_state >> 16) & 0xFF);
       Rs485_Str[7] = (int)((switch_32_1_state >> 8) & 0xFF);
       Rs485_Str[8] = (int)(switch_32_1_state & 0xFF);
      
       outdata = "12345678901";
       outdata[0] = Rs485_Str[0];
       outdata[1] = Rs485_Str[1];
       outdata[2] = Rs485_Str[2];
       outdata[3] = Rs485_Str[3];
       outdata[4] = Rs485_Str[4];
       outdata[5] = Rs485_Str[5];
       outdata[6] = Rs485_Str[6];
       outdata[7] = Rs485_Str[7];
       outdata[8] = Rs485_Str[8];
    
       CRC16_Data = (crc16((uint8_t *) Rs485_Str, 9, 0x8005, 0xFFFF, 0, true, true));
       CRC16_Data_H = CRC16_Data/256;
       CRC16_Data_L = CRC16_Data%256;
       outdata[9] = CRC16_Data_L;
       outdata[10] = CRC16_Data_H;
       Serial.print(outdata);
       Serial2.print(outdata);
}

Print this item