MQTT说明
# TaskRunner MQTT说明
TaskRunner 支持通过MQTT协议传输运行指令。在使用MQTT的相关功能前,需要先设置MQTT的选项。
# 1. 设置
首先点击菜单栏中的 [服务]
- [停止服务]
停止TaskRunner服务,点击 [工具]
- [设置]
菜单栏,在MQTT选项中配置连接的MQTT服务器信息。参考以下图示中的配置进行设置,点击 [确定]
按钮。
此处我们设置主题与客户端ID均为 TaskRunner
,下面的示例以配置为例。
# 2. Cmd批处理
以下是通过直接执行的方式运行批处理的示例。可调用批处理语句执行程序重启。在已连接至同一MQTT服务器的其它客户端,向 TaskRunner
主题发布以下消息:
{"action":"script","syntaxtype":"cmd","script":"taskkill /im TARS.exe /f & ping 127.0.0.1 -n 1 & start \"\" \"C:\\Program Files\\IsoFace\\TARS\\TARS.exe\" "}
除上述方式外,也支持直接执行自定程序列表中批处理类型的自定程序。在自定程序列表中创建 tars
的cmd
类型自定程序,设计程序内容如下。
echo
:结束进程
taskkill /im TARS.exe /f
:执行下一步骤前等待1秒
ping 127.0.0.1 -n 1
start "" "C:\Program Files\IsoFace\TARS\TARS.exe"
echo
2
3
4
5
6
7
在已连接至同一MQTT服务器的其它客户端,向 TaskRunner
主题发布以下消息,实现批处理的相关功能。
{"action":"script","taskname":"tars"}
# 3. PowerShell 批处理
以下是通过直接执行的方式运行批处理的示例。可调用批处理语句执行程序重启。
{"action":"script","syntaxtype":"powershell","script":"$directory = \"E:\\setup\";$filename = \"test.txt\";$content = \"hello world\";$filePath = Join-Path -Path $directory -ChildPath $filename;if (-not (Test-Path -Path $directory)) {New-Item -ItemType Directory -Path $directory};Set-Content -Path $filePath -Value $content;Write-Output \"file created:$filePath\";"}
除上述方式外,也支持直接执行自定程序列表中批处理类型的自定程序。在自定程序列表中创建 ps_test
的PowerShell
类型自定程序,设计程序内容如下。
# 指定目录位置
$directory = "E:\setup"
# 指定文件名
$filename = "test.txt"
# 指定文件内容
$content = "hello world"
# 创建完整的文件路径
$filePath = Join-Path -Path $directory -ChildPath $filename
# 创建目录(如果不存在)
if (-not (Test-Path -Path $directory)) {
New-Item -ItemType Directory -Path $directory
}
# 创建并写入文件内容
Set-Content -Path $filePath -Value $content
# 输出文件创建成功消息
Write-Output "file created:$filePath"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在已连接至同一MQTT服务器的其它客户端,向 TaskRunner
主题发布以下消息,实现批处理的相关功能。
{"action":"script","taskname":"ps_test"}
# 4. JScript/PascalScript 任务
JScript/PascalScript任务支持执行自定程序列表中类型为 JScript
与 PascalScript
的自定程序。
{"action":"script","syntaxtype":"jscript","script":"{DoOpenBrowser(\"chrome.exe\",\"--kiosk https://www.isoface.cn \",0);}"}
除上述方式外,也支持执行自定程序列表中类型为 JScript
的自定程序。创建一个名为 browser
,类型为JScript
自定程序,内容如下。
//调用Chrome浏览器打开https://www.isoface.cn/网页
{
DoOpenBrowser("chrome.exe","--kiosk https://www.isoface.cn",0);
}
2
3
4
在已连接至同一MQTT服务器的其它客户端,向 TaskRunner
主题发布以下消息,实现打开网页的功能。
{"action":"script","taskname":"browser"}
如果要使用自定参数,比如上述示例我们需要定义 url
参数,根据传递的参数打开指定页面。则 JScript
可改写如下,将需要参数化的变量取值替换为 UgParams.Values["param_name"]
:
{
DoOpenBrowser("chrome.exe","--kiosk " + UgParams.Values["url"],0);
}
2
3
如程序与参数直接通过json传入,直接调用的用法如下:
{
"action": "script",
"syntaxtype": "jscript",
"script": "{DoOpenBrowser(\"chrome.exe\",\"--kiosk \" + UgParams.Values[\"url\"],0);}",
"params":[{"name":"url","value":"https://www.isoface.cn"}]
}
2
3
4
5
6
在已连接至同一MQTT服务器的其它客户端,向 TaskRunner
主题发布以下消息,实现打开自定参数页面的功能。
{"action":"script","taskname":"browser","params":[{"name":"url","value":"https://www.isoface.cn"}]}
使用参数的json新增了 params
队列,可在其中根据参数需要修改取值。
{
"action": "script",
"taskname": "task_name",
"params": [
{
"name": "param_name1",
"value": "param_value1"
},
{
"name": "param_name2",
"value": "param_value2"
},
...
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 5. 运行工作流
使用MQTT客户端向TaskRunner的订阅主题发送以下格式的信息,以执行工作流。
{"action":"workflow","name":"test_wf"}
如果需要从呼叫中获取参数作为工作流的变量取值使用,则发送的格式如下:
{"action":"workflow","name":"test_wf","params":[{"name":"Var1","value":"111"}]}
# 6. 在JS程序中使用MQTT
如需要在JS自定程序中使用MQTT功能,可参考自定函数与自定程序中的函数、程序说明使用。
- MQTTClient_Publish:发布MQTT 订阅消息。
# 7. 运行Python任务
使用MQTT客户端向TaskRunner的订阅主题发送以下格式的信息,以添加Python运行任务。
{
"action": "pythonscript",
"pyid": "{pyid}",
"varname": "{varname}",
"varvalue": "{varvalue}"
}
2
3
4
5
6
其中 {pyid}
为预设资料(资料类型为python
)的编号。{varname}
为python输入变量的名称。{varvalue}
为python输入变量的的取值。
这个接口的作用是从预设资料的Python脚本中创建运行任务,排入运行队列中,运行队列中的任务会按照请求的先后顺序依次进行执行。