创建任务
# 创建任务
任务编辑页面的html文件编写好以后,上传到服务器里。
清理浏览器缓存,在后台创建脚本任务,就可以看到刚编写的html内容了。

这里我在form表单里,编写了3个脚本运行参数,供你参考。
点击下一步,进入到设备树。
选择单个或多个设备,继续下一步

设置脚本执行参数,创建任务

创建完成后,列表显示简要的任务信息

# 查看任务
任务分为总任务和子任务。
刚才我们创建的那条任务,任务ID 是 1
这就是一条总任务。
**总任务**显示在任务总表,记录在Mysql表里

因为选择设备的时候,勾选了两台设备,所以每台设备,都创建了一条任务。
这条任务,就是子任务。
**子任务**显示在任务详表,记录在Redis表里

任务创建好以后,被控端的轮询就可以从任务详表里取到这条新创建的任务。
如果你一次性创建了多个排队任务,那么被控端会按照创建的先后顺序,来获取任务并依次执行。
如果你创建了定时任务,那么只有时间到达指定的时间点,被控端才能取到这条任务。
如果到达定时任务的指定时间点,被控端是正在执行脚本任务的状态,那么定时任务会被挂起,直到当前脚本执行完毕,才会被设备获取到并开始执行。
# 查看子任务Redis数据
在宝塔的redis数据管理工具里,可以看到子任务的完整参数
[Redis数据库表](doc:tqQO2Xca)

任务json信息如下
```json
{
"task_id": "1",
"module_id": "1",
"module_name": "yanghao",
"module_group_id": "1",
"module_param": {
"watch_num": "3",
"watch_min": "3",
"watch_max": "5",
"layuiTreeChe“ck_1": "1",
"layuiTreeCheck_9B2EDAE5239A1B55": "9B2EDAE5239A1B55",
"layuiTreeCheck_CE36CD237F859F17": "CE36CD237F859F17"
},
"custom_param": {
"is_limited_time": "0",
"limit_time": "600",
"wait_time_min": "1",
"wait_time_max": "3",
"delay_min": "1",
"delay_max": "3"
},
"module_url": "http://new-cloud.feiyunjs.cn/components/Module/aweme/yanghao.js",
"mode": "1",
"start_time": "",
"task_source": 0,
"state": "1",
"imei": "CE36CD237F859F17",
"device_number": "9F17",
"callback_data": "",
"remarks": "",
"add_time": "2023-04-21 20:33:42",
"update_time": "",
"replenish_num": 0,
"complete_num": 0
}
```
其中的module_param,就是脚本运行参数。
这些参数,是在前面我们编写的html的第一个form表单里得到的。
custom_param是任务相关的参数,也是从前面html的分步表单里的最后一个form里得到的。
>w 如果你的宝塔里没有安装redis数据管理工具,可以在数据库里查看redis数据,或者使用远程redis数据库管理工具来查看。

# 查看任务参数
为了方便开发脚本,在数据——全部任务表里,提供了一个复制脚本参数的功能。
找到刚才创建的任务,一键复制脚本任务参数。

复制出来的json内容如下
```json
{"watch_num":"3","watch_min":"3","watch_max":"5","layuiTreeCheck_1":"1","layuiTreeCheck_9B2EDAE5239A1B55":"9B2EDAE5239A1B55","layuiTreeCheck_CE36CD237F859F17":"CE36CD237F859F17"}
```
为了方便查看,我们找一个在线json格式化工具,来对脚本参数进行格式化操作。
[宝塔JSON格式化工具](https://www.bt.cn/tools/json.html)
格式化结果如下
其中前3个,就是我们在执行js脚本的时候,要运用的参数了。
后面几条是设备树生成的数据,是无用的。

被控端获取子任务的时候,会取到任务对应的脚本运行参数。