Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht.
Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen:
[
{
"id": "0101b52dd8b0e69c",
"type": "inject",
"z": "tab_restart",
"name": "Flow neu starten",
"props": [
{
"p": "baseUrl",
"v": "http://nuc.fritz.box:1880",
"vt": "str"
},
{
"p": "flowId",
"v": "56a35d28dbb8d4c1",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "",
"topic": "",
"x": 160,
"y": 140,
"wires": [
[
"ffb73632947a1b74"
]
]
},
{
"id": "ffb73632947a1b74",
"type": "http request",
"z": "tab_restart",
"name": "GET /flow/:id",
"method": "GET",
"ret": "obj",
"paytoqs": "ignore",
"url": "{{{baseUrl}}}/flow/{{flowId}}",
"tls": "",
"persist": false,
"proxy": "",
"insecureHTTPParser": false,
"authType": "",
"senderr": false,
"headers": [],
"x": 370,
"y": 140,
"wires": [
[
"78e47724692d9c26"
]
]
},
{
"id": "78e47724692d9c26",
"type": "change",
"z": "tab_restart",
"name": "deaktivieren",
"rules": [
{
"t": "set",
"p": "flow",
"pt": "msg",
"to": "payload",
"tot": "msg"
},
{
"t": "set",
"p": "flow.disabled",
"pt": "msg",
"to": "true",
"tot": "bool"
},
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "flow",
"tot": "msg"
},
{
"t": "set",
"p": "headers",
"pt": "msg",
"to": "{}",
"tot": "json"
},
{
"t": "set",
"p": "headers.content-type",
"pt": "msg",
"to": "application/json",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 570,
"y": 140,
"wires": [
[
"b570b346c80301a6"
]
]
},
{
"id": "b570b346c80301a6",
"type": "http request",
"z": "tab_restart",
"name": "PUT (aus)",
"method": "PUT",
"ret": "obj",
"paytoqs": "ignore",
"url": "{{{baseUrl}}}/flow/{{flowId}}",
"tls": "",
"persist": false,
"proxy": "",
"insecureHTTPParser": false,
"authType": "",
"senderr": false,
"headers": [],
"x": 770,
"y": 140,
"wires": [
[
"a062c2baa0932d3e"
]
]
},
{
"id": "a062c2baa0932d3e",
"type": "delay",
"z": "tab_restart",
"name": "1s warten",
"pauseType": "delay",
"timeout": "1",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"outputs": 1,
"x": 960,
"y": 140,
"wires": [
[
"664a32887d83b305"
]
]
},
{
"id": "664a32887d83b305",
"type": "change",
"z": "tab_restart",
"name": "aktivieren",
"rules": [
{
"t": "set",
"p": "flow.disabled",
"pt": "msg",
"to": "false",
"tot": "bool"
},
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "flow",
"tot": "msg"
},
{
"t": "set",
"p": "headers",
"pt": "msg",
"to": "{}",
"tot": "json"
},
{
"t": "set",
"p": "headers.content-type",
"pt": "msg",
"to": "application/json",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 140,
"y": 220,
"wires": [
[
"83d399c90d46240f"
]
]
},
{
"id": "83d399c90d46240f",
"type": "http request",
"z": "tab_restart",
"name": "PUT (ein)",
"method": "PUT",
"ret": "obj",
"paytoqs": "ignore",
"url": "{{{baseUrl}}}/flow/{{flowId}}",
"tls": "",
"persist": false,
"proxy": "",
"insecureHTTPParser": false,
"authType": "",
"senderr": false,
"headers": [],
"x": 320,
"y": 220,
"wires": [
[
"529c0e1896d1f278"
]
]
},
{
"id": "529c0e1896d1f278",
"type": "debug",
"z": "tab_restart",
"name": "Ergebnis",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 480,
"y": 220,
"wires": []
}
]