LoraTap In-Wall SC411WSC
GPIO Pinout
| Pin | Function | 
|---|---|
| P6 | Green LED all buttons (inverted) | 
| P24 | Yellow Led top button (inverted) | 
| P8 | Yellow Led middle button (inverted) | 
| P14 | Open Relay L2 | 
| P26 | Close Relay L1 | 
| P23 | Open button | 
| P7 | Stop button | 
| P9 | Close button | 
Basic Config
The LoraTap Sc411WSC curtain switch has 3 buttons, 2 yellow LED, 2 relay output (blue LED tied to buttons).
substitutions:
  device_friendly_name: Blind Switch
  device_description: Cover
  open_duration: 10sec
  close_duration: 10sec
  ledlinki: P6
  open_switch: P23
  close_switch: P9
  stop_switch: P7
  close_relay: P14
  open_relay: P26
  interlock_time: 200ms
bk72xx:
  board: generic-bk7231n-qfn32-tuya
status_led:
  pin:
    number: P6
    inverted: true
binary_sensor:
  - platform: gpio
    name: ${device_friendly_name} S1 switch input
    pin: ${open_switch}
    id: open_cover_switch
    disabled_by_default: true
    filters:
      - invert:
    on_press:
      then:
        - lambda: |
            if (id(cover1).current_operation == COVER_OPERATION_IDLE) {
              // Cover is idle, check current state and open cover.
              id(cover1).make_call().set_command_open().perform();
            }
            else {
              // Cover is opening/closing. Stop it.
              id(cover1).make_call().set_command_stop().perform();
            }
  - platform: gpio
    name: ${device_friendly_name} S2 switch input
    pin: ${close_switch}
    id: close_cover_switch
    disabled_by_default: true
    filters:
      - invert:
    on_press:
      then:
        - lambda: |
            if (id(cover1).current_operation == COVER_OPERATION_IDLE) {
              // Cover is idle, check current state and close cover.
              id(cover1).make_call().set_command_close().perform();
            }
            else {
              // Cover is opening/closing. Stop it.
              id(cover1).make_call().set_command_stop().perform();
            }
  - platform: gpio
    name: ${device_friendly_name} remote stop switch
    pin: ${stop_switch}
    id: stop_cover_switch
    disabled_by_default: true
    filters:
      - invert:
    on_press:
      then:
        - lambda: |
            //Stop cover.
            id(cover1).make_call().set_command_stop().perform();
switch:
  - platform: gpio
    pin: ${open_relay}
    name: "Relay #1"
    internal: true
    id: relay1
    interlock_wait_time: ${interlock_time}
    interlock: &interlock_group [relay1, relay2]
    restore_mode: always off
  - platform: gpio
    pin: ${close_relay}
    name: "Relay #2"
    internal: true
    id: relay2
    interlock_wait_time: ${interlock_time}
    interlock: *interlock_group
    restore_mode: always off
cover:
  - platform: time_based
    name: "${device_friendly_name}"
    id: cover1
    #has_built_in_endstop: True
    open_action:
      - switch.turn_on: relay2
    open_duration: ${open_duration}
    close_action:
      - switch.turn_on: relay1
    close_duration: ${close_duration}
    stop_action:
      - switch.turn_off: relay2
      - switch.turn_off: relay1