Smart Home Automation Forum
Tuya app by ESPHome in KC868-A16S - Printable Version

+- Smart Home Automation Forum (https://www.kincony.com/forum)
+-- Forum: Technical Support (https://www.kincony.com/forum/forumdisplay.php?fid=20)
+--- Forum: KC868-A16S (https://www.kincony.com/forum/forumdisplay.php?fid=47)
+--- Thread: Tuya app by ESPHome in KC868-A16S (/showthread.php?tid=4055)



Tuya app by ESPHome in KC868-A16S - Lamri - 01-01-2024

Hello, Can you correct the code for me to integrate the Tuya app by ESPHome in KC868-A16S ?

external_components:
  - source:
      type: git
      url: https://github.com/hzkincony/esphome-tuya-iot
      ref: v1.2.0
time:
  - platform: homeassistant
    id: homeassistant_time

    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);

    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);

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);

    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);
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);

    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);

on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output7", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output7", false);

    on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output8", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output8", false);

on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output9", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output9", false);

    on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output10", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output10", false);

on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output11", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output11", false);

    on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output12", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output12", false);

    on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output13", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output13", false);

    on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output14", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output14", false);

on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output15", true);

    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output15", false);

    on_turn_on:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output16", true);
    on_turn_off:
      - lambda: !lambda |-
          id(tuya_iot_component).property_report("output16", false);

tuya_iot:
  id: tuya_iot_component
  product_id: pxdb.........................
  device_id: 263..............................
  device_secret: Fw9..........................
  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<float, switch_::Switch*> switch_map {
                { 1, id(a16s-output1) },
                { 2, id(a16s-output2) },
                { 3, id(a16s-output3) },
                { 4, id(a16s-output4) },
                { 5, id(a16s-output5) },
                { 6, id(a16s-output6) },
                { 7, id(a16s-output7) },
                { 8, id(a16s-output8) },
                { 9, id(a16s-output9) },
                { 10, id(a16s-output10) },
                { 11, id(a16s-output11) },
                { 12, id(a16s-output12) },
                { 13, id(a16s-output13) },
                { 14, id(a16s-output14) },
                { 15, id(a16s-output15) },
                { 16, id(a16s-output16) },
              };

              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 <= 16; i++) {
                String key = "output" + String(i);
                if (x.containsKey("data") && x["data"].containsKey(key.c_str())) {
                  is_target_output = true;
                  output_state = x["data"][key.c_str()];
                  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.containsKey("data") && x["data"].containsKey("all_on")) {
                is_target_all_on = true;
                all_on_state = x["data"]["all_on"];
              }

              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.containsKey("data") && x["data"].containsKey("all_off")) {
                is_target_all_off = true;
                all_off_state = x["data"]["all_off"];
              }

              if (is_target_all_off) {
                if (all_off_state) {
                  for(const auto& pair : switch_map) {
                    auto sw = pair.second;
                    sw->turn_off();
                  }
                }
              }


RE: Tuya app by ESPHome in KC868-A16S - admin - 01-02-2024

when you running , whether work well?