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://isoface.net \",0);}"}
除上述方式外,也支援執行自定程式列表中型別為 JScript
的自定程式。建立一個名為 browser
,型別為JScript
自定程式,內容如下。
//呼叫Chrome瀏覽器打開https://isoface.net/網頁
{
DoOpenBrowser("chrome.exe","--kiosk https://isoface.net",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://isoface.net"}]
}
2
3
4
5
6
在已連線至同一MQTT伺服器的其它客戶端,向 TaskRunner
主題發佈以下訊息,實現打開自定參數頁面的功能。
{"action":"script","taskname":"browser","params":[{"name":"url","value":"https://isoface.net"}]}
使用參數的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 訂閱訊息。