Cloudcutter Profile Used: https://github.com/tuya-cloudcutter/tuya-clou...ter/devices/atarm-tmwf02-wifi-fan-module.json
Links for the dumped firmware: https://github.com/tuya-cloudcutter/tuya-cloudcutter/issues/470
This module is basically a light dimmer that is used for Fan Speed Control.
Can be easily flashed to OpenBeken without any kind of soldering using Cloudcutter
The device heavily relies on TuyaMCU for controls. The DpID used on this device is the same with the stock firmware
DP 1 = Toggle Switch (power on/off)
DP 2 = Timer (measured in seconds)
DP 3 = it exists but non-functional (level1 - 5)
DP 4 = Speed (or rather the dimmer itself)
Dimmer range is from 1 to 100
This is what I used to get it functional under OpenBeken firmware. Just add this text to autoexec.bat text file and upload it via Openbeken's webapp under filesystem tab and reboot the device.
Since there's no way for openbeken to make this appear as fan so I created a badly made yaml file for esphome instead. works great so far, the reason why this yaml file is badly made is because you cant really set the data type for fan on esphome, it only defines it as enum for some weird reason when majority of the fan speed controls with tuya are either using string or integer as data type.
Links for the dumped firmware: https://github.com/tuya-cloudcutter/tuya-cloudcutter/issues/470
This module is basically a light dimmer that is used for Fan Speed Control.



Can be easily flashed to OpenBeken without any kind of soldering using Cloudcutter
The device heavily relies on TuyaMCU for controls. The DpID used on this device is the same with the stock firmware
DP 1 = Toggle Switch (power on/off)
DP 2 = Timer (measured in seconds)
DP 3 = it exists but non-functional (level1 - 5)
DP 4 = Speed (or rather the dimmer itself)
Dimmer range is from 1 to 100
This is what I used to get it functional under OpenBeken firmware. Just add this text to autoexec.bat text file and upload it via Openbeken's webapp under filesystem tab and reboot the device.
startDriver TuyaMCU
setChannelType 1 toggle
setChannelType 4 dimmer
tuyaMcu_setDimmerRange 0 100
linkTuyaMCUOutputToChannel 1 bool 1
linkTuyaMCUOutputToChannel 4 val 4
Since there's no way for openbeken to make this appear as fan so I created a badly made yaml file for esphome instead. works great so far, the reason why this yaml file is badly made is because you cant really set the data type for fan on esphome, it only defines it as enum for some weird reason when majority of the fan speed controls with tuya are either using string or integer as data type.
esphome:
name: tmwf02_exhaust
friendly_name: tmwf02_exhaust
name_add_mac_suffix: false
bk72xx:
board: generic-bk7231t-qfn32-tuya
logger:
baud_rate: 0
web_server:
port: 80
api:
ota:
captive_portal:
mdns:
tuya:
uart:
rx_pin: P10
tx_pin: P11
baud_rate: 9600
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: ${name}AP
password: "ESPNotHome"
button:
- platform: restart
name: Restart
debug:
update_interval: 30s
text_sensor:
- platform: debug
reset_reason:
name: Reset Reason
- platform: libretiny
version:
name: LibreTiny Version
sensor:
- platform: uptime
name: Uptime
fan:
- platform: tuya
name: "Exhaust Fan"
switch_datapoint: 1
speed_datapoint: 4
speed_count: 100