# Basic Config esphome: name: kc868-a6-test friendly_name: KC868_A6_Test # platform: ESP32 # board: esp32dev external_components: - source: type: git url: https://github.com/hzkincony/esphome-tuya-iot ref: v1.2.2 esp32: board: esp32dev framework: # type: esp-idf # type: arduino type: esp-idf # Важно изменить на arduino version: latest # Enable logging logger: # Enable Home Assistant API api: encryption: key: "mdhQnkxHuyHBBOp3c+vVZw1mijHvK6GlGVDXbwhzSMM=" mqtt: broker: !secret mqtt_host username: !secret mqtt_username password: !secret mqtt_password id: mqtt_client ota: - platform: esphome # password: "5992f85d33c321fdc84443dbf6d1eab2" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Kc868-A6-Test Fallback Hotspot" password: "iuUkzi7OQNef" captive_portal: time: - platform: homeassistant id: homeassistant_time # Example configuration entry for ESP32 i2c: sda: 4 scl: 15 scan: true id: bus_a # Example configuration entry pcf8574: - id: 'pcf8574_hub_out_1' # for output channel 1-8 address: 0x24 - id: 'pcf8574_hub_in_1' # for input channel 1-8 address: 0x22 # Individual outputs switch: - platform: gpio name: "a6-light1" id: light1 on_turn_on: - lambda: !lambda |- id(tuya_iot_component).property_report("output1", true); on_turn_off: - lambda: !lambda |- id(tuya_iot_component).property_report("output1", false); pin: pcf8574: pcf8574_hub_out_1 number: 0 mode: OUTPUT inverted: true - platform: gpio name: "a6-light2" id: light2 on_turn_on: - lambda: !lambda |- id(tuya_iot_component).property_report("output2", true); on_turn_off: - lambda: !lambda |- id(tuya_iot_component).property_report("output2", false); pin: pcf8574: pcf8574_hub_out_1 number: 1 mode: OUTPUT inverted: true - platform: gpio name: "a6-light3" id: light3 on_turn_on: - lambda: !lambda |- id(tuya_iot_component).property_report("output3", true); on_turn_off: - lambda: !lambda |- id(tuya_iot_component).property_report("output3", false); pin: pcf8574: pcf8574_hub_out_1 number: 2 mode: OUTPUT inverted: true - platform: gpio name: "a6-light4" id: light4 on_turn_on: - lambda: !lambda |- id(tuya_iot_component).property_report("output4", true); on_turn_off: - lambda: !lambda |- id(tuya_iot_component).property_report("output4", false); pin: pcf8574: pcf8574_hub_out_1 number: 3 mode: OUTPUT inverted: true - platform: gpio name: "a6-light5" id: light5 on_turn_on: - lambda: !lambda |- id(tuya_iot_component).property_report("output5", true); on_turn_off: - lambda: !lambda |- id(tuya_iot_component).property_report("output5", false); pin: pcf8574: pcf8574_hub_out_1 number: 4 mode: OUTPUT inverted: true - platform: gpio name: "a6-light6" id: light6 on_turn_on: - lambda: !lambda |- id(tuya_iot_component).property_report("output6", true); on_turn_off: - lambda: !lambda |- id(tuya_iot_component).property_report("output6", false); pin: pcf8574: pcf8574_hub_out_1 number: 5 mode: OUTPUT inverted: true binary_sensor: - platform: gpio name: "a6-input1" pin: pcf8574: pcf8574_hub_in_1 number: 0 mode: INPUT inverted: true - platform: gpio name: "a6-input2" pin: pcf8574: pcf8574_hub_in_1 number: 1 mode: INPUT inverted: true - platform: gpio name: "a6-input3" pin: pcf8574: pcf8574_hub_in_1 number: 2 mode: INPUT inverted: true - platform: gpio name: "a6-input4" pin: pcf8574: pcf8574_hub_in_1 number: 3 mode: INPUT inverted: true - platform: gpio name: "a6-input5" pin: pcf8574: pcf8574_hub_in_1 number: 4 mode: INPUT inverted: true - platform: gpio name: "a6-input6" pin: pcf8574: pcf8574_hub_in_1 number: 5 mode: INPUT inverted: true #switch: # - platform: gpio # pin: 25 # name: "switch test 1" # id: switch_test_1 # on_turn_on: # - lambda: !lambda |- # id(tuya_iot_component).property_report("output1", true); # on_turn_off: # - lambda: !lambda |- # id(tuya_iot_component).property_report("output1", false); # - platform: gpio # pin: 26 # name: "switch test 2" # id: switch_test_2 # on_turn_on: # - lambda: !lambda |- # id(tuya_iot_component).property_report("output2", true); # on_turn_off: # - lambda: !lambda |- # id(tuya_iot_component).property_report("output2", false); tuya_iot: id: tuya_iot_component product_id: xp***lm device_id: 26***3j device_secret: H***w region: eu # eu, us, eus, weu, in, cn # eu: Central Europe Data Center # us: US West Data Center # eus: US East Data Center # weu: Western Europe Data Center # in: India Data Center # cn: Chinese Data Center on_event: - event_name: property/set then: - lambda: !lambda |- // Append the required switch in switch_map to respond to commands issued by Tuya. static std::map switch_map { { 1, id(light1) }, { 2, id(light2) }, { 3, id(light3) }, { 4, id(light4) }, { 5, id(light5) }, { 6, id(light6) }, }; bool is_target_output = false; bool output_state = false; int output_number = 0; // Modify this number 2 to match the number of switches in the above switch_map. for (int i = 1; i <= 6; i++) { std::string key = "output" + std::to_string(i); if (x["data"][key].is()) { is_target_output = true; output_state = x["data"][key].as(); output_number = i; break; } } if (is_target_output) { auto iterator = switch_map.find(output_number); if (iterator != switch_map.end()) { auto sw = iterator->second; if (output_state) { sw->turn_on(); } else { sw->turn_off(); } } } bool is_target_all_on = false; bool all_on_state = false; if (x["data"]["all_on"].is()) { is_target_all_on = true; all_on_state = x["data"]["all_on"].as(); } if (is_target_all_on) { if (all_on_state) { for(const auto& pair : switch_map) { auto sw = pair.second; sw->turn_on(); } } } bool is_target_all_off = false; bool all_off_state = false; if (x["data"]["all_off"].is()) { is_target_all_off = true; all_off_state = x["data"]["all_off"].as(); } if (is_target_all_off) { if (all_off_state) { for(const auto& pair : switch_map) { auto sw = pair.second; sw->turn_off(); } } }