Одним из возможных способов удовлетворения ваших требований является использование узла коммутатора в качестве шлюза. Эти ворота будут первоначально открыты, позволяя поток сообщений. Когда полезная нагрузка равна «1», что указывает на то, что PIR запущен, код внутри узла функции закроет шлюз, изменив переменную контекста потока, которая управляет узлом коммутатора. В то же время код в узле функции настроит функцию обратного вызова для повторного открытия шлюза в течение 10 секунд.
Код внутри функции:
if (msg.payload === 1) {
closeGate();
}
function closeGate() {
flow.set("gateopen", false); //close gate
setTimeout(openGate, 10000); // reopen gate within 10 seconds
}
function openGate() {
flow.set("gateopen", true);
}
flow.get("gateopen") ? node.status({fill:"green",shape:"ring",text:"Opened"}) :
node.status({fill:"red",shape:"ring",text:"Closed"});
return msg;
Поток:
[{"id":"8696aea0.42f8f","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"e3f585c9.421cb8","type":"inject","z":"8696aea0.42f8f","name":"","topic":"","payload":"0","payloadType":"num","repeat":"2","crontab":"","once":true,"onceDelay":"0.5","x":190,"y":200,"wires":[["be4bd9b8.de4d78"]]},{"id":"be4bd9b8.de4d78","type":"switch","z":"8696aea0.42f8f","name":"","property":"gateopen","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":370,"y":220,"wires":[["23cd0407.7efcec"]]},{"id":"63b4ec7c.b18904","type":"inject","z":"8696aea0.42f8f","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":240,"wires":[["be4bd9b8.de4d78"]]},{"id":"db6c9c0d.4c21b","type":"debug","z":"8696aea0.42f8f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":670,"y":220,"wires":[]},{"id":"fbf0ec86.55906","type":"inject","z":"8696aea0.42f8f","name":"Open gate","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":"0.5","x":190,"y":120,"wires":[["2325a5f7.0d1d1a"]]},{"id":"23cd0407.7efcec","type":"function","z":"8696aea0.42f8f","name":"Gate","func":"if (msg.payload === 1) {\n closeGate();\n}\n\n\nfunction closeGate() {\n flow.set(\"gateopen\", false); //close gate\n setTimeout(openGate, 10000); // reopen gate within 10 seconds\n}\n\n\nfunction openGate() {\n flow.set(\"gateopen\", true);\n}\n\nflow.get(\"gateopen\") ? node.status({fill:\"green\",shape:\"ring\",text:\"Opened\"}) :\n node.status({fill:\"red\",shape:\"ring\",text:\"Closed\"});\n\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":220,"wires":[["db6c9c0d.4c21b"]]},{"id":"2325a5f7.0d1d1a","type":"change","z":"8696aea0.42f8f","name":"Open gate","rules":[{"t":"set","p":"gateopen","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":120,"wires":[[]]}]

Ниже альтернативного потока для расширения таймера, если происходит новое событие PIR:
[{"id":"585ba08b.3667e","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"4cb35501.7c04fc","type":"inject","z":"585ba08b.3667e","name":"","topic":"","payload":"0","payloadType":"num","repeat":"2","crontab":"","once":true,"onceDelay":"0.5","x":190,"y":200,"wires":[["87ab9f12.fd8ad"]]},{"id":"e1699672.cb5788","type":"switch","z":"585ba08b.3667e","name":"","property":"gateopen","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":590,"y":200,"wires":[["c40dbf1f.79ef4"]]},{"id":"aafaf20e.95d46","type":"inject","z":"585ba08b.3667e","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":240,"wires":[["87ab9f12.fd8ad"]]},{"id":"c40dbf1f.79ef4","type":"debug","z":"585ba08b.3667e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":810,"y":200,"wires":[]},{"id":"5e76c261.a4f9ac","type":"inject","z":"585ba08b.3667e","name":"Open gate","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":"0.5","x":190,"y":120,"wires":[["b255cf40.af298"]]},{"id":"4c13bbad.850434","type":"function","z":"585ba08b.3667e","name":"Gate","func":"if (flow.get(\"gateopen\")) {\n closeGate(); // gate is opened and will be closes it for 10 seconds\n} else {\n extendGate(); // gate is already closed. The timer will reset and new 10 second timeout will start\n}\n\n\nfunction closeGate() {\n flow.set(\"gateopen\", false); //close gate\n flow.set(\"gateid\", setTimeout(openGate, 10000));\n}\n\n\nfunction openGate() {\n flow.set(\"gateopen\", true);\n}\n\nfunction extendGate() {\n clearTimeout(flow.get(\"gateid\"));\n closeGate();\n}\n\n\nreturn msg;","outputs":1,"noerr":0,"x":590,"y":240,"wires":[["c40dbf1f.79ef4"]]},{"id":"b255cf40.af298","type":"change","z":"585ba08b.3667e","name":"Open gate","rules":[{"t":"set","p":"gateopen","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":120,"wires":[[]]},{"id":"87ab9f12.fd8ad","type":"switch","z":"585ba08b.3667e","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":370,"y":220,"wires":[["e1699672.cb5788"],["4c13bbad.850434"]]}]
