devices.esphome.io
UltraPro WFD4001 Light Switch
UltraPro WFD4001 Light Switch
Device Type: switchElectrical Standard: usBoard: bk72xxDifficulty: Plug-n-flash, 2/5
      
  
        
GPIO Pinout
| Pin | Alternate Pin Name | Function | Active | 
|---|---|---|---|
| P6 | PWM0 | Reset Button | Low | 
| P8 | PWM2 | On Button | Low | 
| P9 | PWM3 | Off Button | Low | 
| P24 | PWM4 | Status Led | High | 
| P6 | PWM5 | Relay | High | 
Tuya Cloudcutter
The board is easily flashed without disassembly using tuya-cloudcutter.
Basic Configuration
On and off will activate the relay. Holding the reset button for more than 5 seconds will reset the wifi password and revert the device to the captive portal.
# You should only need to modify the substitutions.substitutions:  device_name: back-door-lights  friendly_name: Back Door Lights
# Nothing below should need modification.esphome:  name: ${device_name}  friendly_name: ${friendly_name}
bk72xx:  board: wb3s
logger:api:captive_portal:ota:  - platform: esphome
wifi: # Get the SSID and password from the captive portal.  ap:
output:  - platform: libretiny_pwm    id: output_blue_led    pin: PWM4switch:  - platform: gpio    pin: PWM5    id: relay    name: None    restore_mode: RESTORE_DEFAULT_OFF    device_class: switch    on_turn_on:      then:        - light.turn_on: blue_led    on_turn_off:      then:        - light.turn_off: blue_ledbutton:  - platform: restart    id: do_restart    name: "Restart"  - platform: factory_reset    id: do_factory_reset    name: "Factory Reset to AP mode"binary_sensor:  - platform: gpio    pin:      number: PWM2      inverted: True # The on button is active low.    id: input_on_button    on_press:      then:        - switch.turn_on: relay  - platform: gpio    pin:      number: PWM3      inverted: True # The off button is active low.    id: input_off_button    on_press:      then:        - switch.turn_off: relay  - platform: gpio    pin:      number: PWM0      inverted: True # The config button is active low.    id: input_config_button    on_press:      then:        - while:            condition:              - binary_sensor.is_on: input_config_button            then:              - light.toggle: blue_led              - delay: 250ms    on_release:      then:        - if:            condition:              - switch.is_on: relay            then:              - light.turn_on: blue_led            else:              - light.turn_off: blue_led    on_click:      - min_length: 5s        max_length: 100s        then:          - repeat:              count: 6              then:                - light.toggle: blue_led                - delay: 100ms          - button.press: do_factory_resetlight:  - platform: status_led    id: blue_led    name: Blue LED    output: output_blue_led    disabled_by_default: True    restore_mode: RESTORE_DEFAULT_OFF