TreatLife DS02F Ceiling Fan Controller

bk72xx us Comes with ESPHome switch
TreatLife DS02F Ceiling Fan Controller - treatlife_DS02F.jpg

Overview

Treatlife DS02F Switch Amazon Link

Notes

The Treatlife DS02F is similar to the DS03, but lacking the control for the light. This device comes with a Tuya WB3S chip and there are now two methods to make this device compatible with ESPHome:

  1. Use Cloudcutter to flash the device.
  2. Swap out the chip with a compatible one.

Using Cloudcutter

Cloudcutter is a tool designed to simplify the process of flashing Tuya-based devices. It allows you to bypass the need for physically opening the device and swapping out chips. By leveraging the cloud APIs, Cloudcutter enables you to flash the firmware remotely, making it a convenient and less intrusive option. Follow the instructions on the Cloudcutter GitHub repository to use this method for flashing your DS02F device.

Swap chip

The main board has the appropriate footprint for an ESP-12F. Further instructions can be found here. When desoldering the WB3S chip, take care if you use a heat gun near the black foam light guards around the speed LEDs and main switch LED. When overheated, the foam shrinks to less than half its original size. With a little patience, it is instead possible to peel the foam and adhesive off the PCB, set them to the side, and replace them after swapping out the WB3S. Like the Treatlife DS03, the Tuya MCU UART runs at a baud rate of 115200. You may see a warning like Invalid baud_rate: Integration requested baud_rate 9600 but you have 115200! logged, but it is safe to ignore.

GPIO Pinout

ESP-Based Pinout

PinFunction
GPIO1Tuya Tx
GPIO3Tuya Rx

BK72XX-Based Pinout

PinFunction
RX1Tuya Rx
TX1Tuya Tx

ESP32-C3F Pinout

PinFunction
GPIO20Tuya Rx
GPIO21Tuya Tx

Basic Configuration

esphome:
  name: ds02f
# ESP-Based Board
#esp8266:
#  board: esp01_1m
# BK72XX-Based Board
bk72xx:
  board: wb3s
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
  ssid: "ssid"
  password: "PASSWORD"
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "DS02F Fallback Hotspot"
    password: "ul57sDUAqbcl"
captive_portal:
uart:
  rx_pin: RX1
  tx_pin: TX1
  baud_rate: 115200
tuya:
 id: tuyamcu
 on_datapoint_update:
   - sensor_datapoint: 101
     datapoint_type: int
     then:
       - lambda: |-
           id(inverted_light_mode).publish_state(x == 1);
fan:
  - platform: "tuya"
    name: Treatlife DS02F Speed
    switch_datapoint: 1
    speed_datapoint: 3
    speed_count: 4
# The "Light Mode" controls the white status led ring on the button.
# Normal Mode (0): Led ON when fan power OFF, Led OFF when fan power ON
# Inverted Mode (1): Led OFF when fan power OFF, Led ON when fan power ON
switch:
  - platform: template
    id: inverted_light_mode
    name: Inverted Light Mode
    turn_on_action:
      - lambda: |-
          id(tuyamcu).set_integer_datapoint_value(101,1);
    turn_off_action:
      - lambda: |-
          id(tuyamcu).set_integer_datapoint_value(101,0);