Node-RED : join 노드에서 타임 아웃 처리
소개
Node-RED로 통신을 할 때의 타임 아웃 처리는, 유저 디렉토리(~/.node-red)의 setting.js에서 변경할 수가 있습니다. 예를 들어 http 요청 시간 제한은 httpRequestTimeout에서 변경할 수 있습니다.
그러나, 전체의 처리 시간에 제한이 있는 경우 등, 호출처등에 의해 변경하고 싶은 경우는 대응할 수 없습니다. 전통적인 방법은 함수 노드에서 최선을 다할 수 있지만, 디버그 노드에서 쉽게 디버깅하는 Node-RED처럼 개발할 수 없습니다. 그래서, 표준 노드인 join 노드를 사용해, 호출시의 타임 아웃을 처리하는 방법을 생각해 보았습니다.
조인 노드
join 노드는 split 노드와 조합되는 경우가 많고, 배열 등을 split 노드로 분할하고, 각각을 비동기적으로 처리한 후에 join 노드에서 정리하는 사용법을 합니다. 사실 join 노드는 단독으로도 이용 가능하고, 복수의 msg 객체를 타임 아웃 시간내에 정리해 출력할 수 있습니다. 이것을 이용하는 것입니다.
구체적으로는, http 리퀘스트의 직전에 msg 오브젝트를 리퀘스트 처리용과 타임 아웃 처리용으로 작성해 이용합니다. join 노드에서는, 정리하는 단위 마다 공통의 id 가 필요해, 이것에는 msg._msgid 를 사용하고 있습니다. 또한 총 개수, 각 msg 개체를 식별하는 index가 필요합니다.
join 노드에서는 조인 대상의 프로퍼티 이외에는 파괴적이므로, 조인 대상의 프로퍼티에 보존해 두고 싶은 데이터를 카피해 둡니다.
흐름
실제 흐름은 다음과 같습니다. 테스트용 서버가 있기 때문에 복잡해 보이지만, 주요 처리는 상단의 7개 정도의 노드만입니다.
요점은 join 전에 필요한 속성을 설정하는 것입니다. 또, 타임 아웃시에는 체크용의 메세지가 흐른 후에 http의 응답이 돌아오기 때문에 이것을 버릴 필요가 있는 것입니다.
상단의 catch 노드는 타임 아웃시에 예외가 발생하기 때문에 붙이고 있습니다만, 이 근처는 기호로 변경해 주세요.
주의점
갱신 처리의 경우, 클라이언트측에서 타임 아웃해도 서버에서 처리가 행해질 가능성이 있으므로 주의해 주세요.
코드
다음을 가져오기(로드)하여 사용하십시오.[{"id":"75ee1c7.c0e5464","type":"join","z":"967c5dd7.dee1a","name":"","mode":"custom","build":"merged","property":"data","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"3","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":610,"y":220,"wires":[["61b5c8ec.15b63"]]},{"id":"a63fd121.9be3","type":"debug","z":"967c5dd7.dee1a","name":"時間内","active":true,"console":false,"complete":"true","x":770,"y":260,"wires":[]},{"id":"4d768f00.8ead18","type":"function","z":"967c5dd7.dee1a","name":"チェック用msg作成","func":"let ret1 = {};\nlet ret2 = {};\nret1.id = ret2.id = msg._msgid;\n// ret1.backup = msg.payload;\nret2.data = {backup: msg.payload};\n\nreturn [ret1, ret2];","outputs":2,"noerr":0,"x":160,"y":200,"wires":[["d5f777c.c4eba88"],["b07e9ae5.b5df28"]]},{"id":"61b5c8ec.15b63","type":"function","z":"967c5dd7.dee1a","name":"タイムアウト判定","func":"if (msg.data.req && msg.data.check ) {\n return [msg.data, null]; // OK;\n}\nelse if (msg.data.check ) {\n return [null, msg.data]; // timeOut\n} // ret1.data.req のみは捨てる \n","outputs":2,"noerr":0,"x":590,"y":280,"wires":[["a63fd121.9be3"],["3e7cdc8a.0b0f14"]]},{"id":"95a03086.c8a628","type":"debug","z":"967c5dd7.dee1a","name":"タイムアウト","active":true,"console":false,"complete":"true","x":800,"y":340,"wires":[]},{"id":"acf1e79b.8e7a18","type":"function","z":"967c5dd7.dee1a","name":"Join用リクエストmsg","func":"let ret1 = {};\nret1.data = msg;\nret1.data.req = true;\nret1.count = 2;\nret1.index = 0;\nret1.id = msg.id;\nret1.complete = true;\n // ch - 文字列またはバッファの場合、メッセージを文字列またはバイトの配列として分割するために使用されるデータ\n // len - 固定長の値を使って分割したときの各メッセージの長さ\n\nreturn ret1;","outputs":1,"noerr":0,"x":420,"y":160,"wires":[["75ee1c7.c0e5464"]]},{"id":"d5f777c.c4eba88","type":"http request","z":"967c5dd7.dee1a","name":"","method":"GET","ret":"txt","url":"http://localhost:1880/test","tls":"","x":370,"y":100,"wires":[["acf1e79b.8e7a18"]]},{"id":"3e7cdc8a.0b0f14","type":"change","z":"967c5dd7.dee1a","name":"タイムアウト設定","rules":[{"t":"set","p":"statusCode","pt":"msg","to":"Timeout","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"NG","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":340,"wires":[["95a03086.c8a628"]]},{"id":"c6d5d3a3.b1ad4","type":"inject","z":"967c5dd7.dee1a","name":"タイムアウト","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":380,"wires":[["16990334.237f15"]]},{"id":"ae91ea01.fc484","type":"inject","z":"967c5dd7.dee1a","name":" 正常","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":130,"y":420,"wires":[["67212cfb.acd604"]]},{"id":"16990334.237f15","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"timeout","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":380,"wires":[["413690a7.c84b7"]]},{"id":"7ccc98fd.be9938","type":"comment","z":"967c5dd7.dee1a","name":"テスト設定","info":"","x":100,"y":340,"wires":[]},{"id":"9e1e9675.3edc1","type":"comment","z":"967c5dd7.dee1a","name":"テストサーバー","info":"","x":120,"y":480,"wires":[]},{"id":"e4a3e329.67a9e","type":"http in","z":"967c5dd7.dee1a","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":140,"y":520,"wires":[["912e543.afb19a8"]]},{"id":"912e543.afb19a8","type":"switch","z":"967c5dd7.dee1a","name":"timeout==false","property":"timeout","propertyType":"global","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":330,"y":520,"wires":[["8c956349.51fd8"]]},{"id":"9961a69b.3ac7d","type":"http response","z":"967c5dd7.dee1a","name":"","statusCode":"","headers":{},"x":690,"y":520,"wires":[]},{"id":"67212cfb.acd604","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"timeout","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":420,"wires":[["413690a7.c84b7"]]},{"id":"8c956349.51fd8","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OK","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":520,"wires":[["9961a69b.3ac7d"]]},{"id":"287d1512.5e9a62","type":"inject","z":"967c5dd7.dee1a","name":"","topic":"","payload":"DATA","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":100,"wires":[["4d768f00.8ead18"]]},{"id":"b07e9ae5.b5df28","type":"function","z":"967c5dd7.dee1a","name":"join用チェックmsg","func":"msg.count = 2;\nmsg.index = 1;\nmsg.data.check = true;\n\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":220,"wires":[["75ee1c7.c0e5464"]]},{"id":"413690a7.c84b7","type":"debug","z":"967c5dd7.dee1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":400,"wires":[]},{"id":"9fa34a45.09784","type":"catch","z":"967c5dd7.dee1a","name":"","scope":["d5f777c.c4eba88"],"x":360,"y":40,"wires":[["87b6e72b.bf2598"]]},{"id":"87b6e72b.bf2598","type":"debug","z":"967c5dd7.dee1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"error","x":540,"y":40,"wires":[]}]
Reference
이 문제에 관하여(Node-RED : join 노드에서 타임 아웃 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sakaba37/items/e81cab8ead753f283859
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
join 노드는 split 노드와 조합되는 경우가 많고, 배열 등을 split 노드로 분할하고, 각각을 비동기적으로 처리한 후에 join 노드에서 정리하는 사용법을 합니다. 사실 join 노드는 단독으로도 이용 가능하고, 복수의 msg 객체를 타임 아웃 시간내에 정리해 출력할 수 있습니다. 이것을 이용하는 것입니다.
구체적으로는, http 리퀘스트의 직전에 msg 오브젝트를 리퀘스트 처리용과 타임 아웃 처리용으로 작성해 이용합니다. join 노드에서는, 정리하는 단위 마다 공통의 id 가 필요해, 이것에는 msg._msgid 를 사용하고 있습니다. 또한 총 개수, 각 msg 개체를 식별하는 index가 필요합니다.
join 노드에서는 조인 대상의 프로퍼티 이외에는 파괴적이므로, 조인 대상의 프로퍼티에 보존해 두고 싶은 데이터를 카피해 둡니다.
흐름
실제 흐름은 다음과 같습니다. 테스트용 서버가 있기 때문에 복잡해 보이지만, 주요 처리는 상단의 7개 정도의 노드만입니다.
요점은 join 전에 필요한 속성을 설정하는 것입니다. 또, 타임 아웃시에는 체크용의 메세지가 흐른 후에 http의 응답이 돌아오기 때문에 이것을 버릴 필요가 있는 것입니다.
상단의 catch 노드는 타임 아웃시에 예외가 발생하기 때문에 붙이고 있습니다만, 이 근처는 기호로 변경해 주세요.
주의점
갱신 처리의 경우, 클라이언트측에서 타임 아웃해도 서버에서 처리가 행해질 가능성이 있으므로 주의해 주세요.
코드
다음을 가져오기(로드)하여 사용하십시오.[{"id":"75ee1c7.c0e5464","type":"join","z":"967c5dd7.dee1a","name":"","mode":"custom","build":"merged","property":"data","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"3","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":610,"y":220,"wires":[["61b5c8ec.15b63"]]},{"id":"a63fd121.9be3","type":"debug","z":"967c5dd7.dee1a","name":"時間内","active":true,"console":false,"complete":"true","x":770,"y":260,"wires":[]},{"id":"4d768f00.8ead18","type":"function","z":"967c5dd7.dee1a","name":"チェック用msg作成","func":"let ret1 = {};\nlet ret2 = {};\nret1.id = ret2.id = msg._msgid;\n// ret1.backup = msg.payload;\nret2.data = {backup: msg.payload};\n\nreturn [ret1, ret2];","outputs":2,"noerr":0,"x":160,"y":200,"wires":[["d5f777c.c4eba88"],["b07e9ae5.b5df28"]]},{"id":"61b5c8ec.15b63","type":"function","z":"967c5dd7.dee1a","name":"タイムアウト判定","func":"if (msg.data.req && msg.data.check ) {\n return [msg.data, null]; // OK;\n}\nelse if (msg.data.check ) {\n return [null, msg.data]; // timeOut\n} // ret1.data.req のみは捨てる \n","outputs":2,"noerr":0,"x":590,"y":280,"wires":[["a63fd121.9be3"],["3e7cdc8a.0b0f14"]]},{"id":"95a03086.c8a628","type":"debug","z":"967c5dd7.dee1a","name":"タイムアウト","active":true,"console":false,"complete":"true","x":800,"y":340,"wires":[]},{"id":"acf1e79b.8e7a18","type":"function","z":"967c5dd7.dee1a","name":"Join用リクエストmsg","func":"let ret1 = {};\nret1.data = msg;\nret1.data.req = true;\nret1.count = 2;\nret1.index = 0;\nret1.id = msg.id;\nret1.complete = true;\n // ch - 文字列またはバッファの場合、メッセージを文字列またはバイトの配列として分割するために使用されるデータ\n // len - 固定長の値を使って分割したときの各メッセージの長さ\n\nreturn ret1;","outputs":1,"noerr":0,"x":420,"y":160,"wires":[["75ee1c7.c0e5464"]]},{"id":"d5f777c.c4eba88","type":"http request","z":"967c5dd7.dee1a","name":"","method":"GET","ret":"txt","url":"http://localhost:1880/test","tls":"","x":370,"y":100,"wires":[["acf1e79b.8e7a18"]]},{"id":"3e7cdc8a.0b0f14","type":"change","z":"967c5dd7.dee1a","name":"タイムアウト設定","rules":[{"t":"set","p":"statusCode","pt":"msg","to":"Timeout","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"NG","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":340,"wires":[["95a03086.c8a628"]]},{"id":"c6d5d3a3.b1ad4","type":"inject","z":"967c5dd7.dee1a","name":"タイムアウト","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":380,"wires":[["16990334.237f15"]]},{"id":"ae91ea01.fc484","type":"inject","z":"967c5dd7.dee1a","name":" 正常","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":130,"y":420,"wires":[["67212cfb.acd604"]]},{"id":"16990334.237f15","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"timeout","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":380,"wires":[["413690a7.c84b7"]]},{"id":"7ccc98fd.be9938","type":"comment","z":"967c5dd7.dee1a","name":"テスト設定","info":"","x":100,"y":340,"wires":[]},{"id":"9e1e9675.3edc1","type":"comment","z":"967c5dd7.dee1a","name":"テストサーバー","info":"","x":120,"y":480,"wires":[]},{"id":"e4a3e329.67a9e","type":"http in","z":"967c5dd7.dee1a","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":140,"y":520,"wires":[["912e543.afb19a8"]]},{"id":"912e543.afb19a8","type":"switch","z":"967c5dd7.dee1a","name":"timeout==false","property":"timeout","propertyType":"global","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":330,"y":520,"wires":[["8c956349.51fd8"]]},{"id":"9961a69b.3ac7d","type":"http response","z":"967c5dd7.dee1a","name":"","statusCode":"","headers":{},"x":690,"y":520,"wires":[]},{"id":"67212cfb.acd604","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"timeout","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":420,"wires":[["413690a7.c84b7"]]},{"id":"8c956349.51fd8","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OK","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":520,"wires":[["9961a69b.3ac7d"]]},{"id":"287d1512.5e9a62","type":"inject","z":"967c5dd7.dee1a","name":"","topic":"","payload":"DATA","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":100,"wires":[["4d768f00.8ead18"]]},{"id":"b07e9ae5.b5df28","type":"function","z":"967c5dd7.dee1a","name":"join用チェックmsg","func":"msg.count = 2;\nmsg.index = 1;\nmsg.data.check = true;\n\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":220,"wires":[["75ee1c7.c0e5464"]]},{"id":"413690a7.c84b7","type":"debug","z":"967c5dd7.dee1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":400,"wires":[]},{"id":"9fa34a45.09784","type":"catch","z":"967c5dd7.dee1a","name":"","scope":["d5f777c.c4eba88"],"x":360,"y":40,"wires":[["87b6e72b.bf2598"]]},{"id":"87b6e72b.bf2598","type":"debug","z":"967c5dd7.dee1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"error","x":540,"y":40,"wires":[]}]
Reference
이 문제에 관하여(Node-RED : join 노드에서 타임 아웃 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sakaba37/items/e81cab8ead753f283859
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
갱신 처리의 경우, 클라이언트측에서 타임 아웃해도 서버에서 처리가 행해질 가능성이 있으므로 주의해 주세요.
코드
다음을 가져오기(로드)하여 사용하십시오.[{"id":"75ee1c7.c0e5464","type":"join","z":"967c5dd7.dee1a","name":"","mode":"custom","build":"merged","property":"data","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"3","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":610,"y":220,"wires":[["61b5c8ec.15b63"]]},{"id":"a63fd121.9be3","type":"debug","z":"967c5dd7.dee1a","name":"時間内","active":true,"console":false,"complete":"true","x":770,"y":260,"wires":[]},{"id":"4d768f00.8ead18","type":"function","z":"967c5dd7.dee1a","name":"チェック用msg作成","func":"let ret1 = {};\nlet ret2 = {};\nret1.id = ret2.id = msg._msgid;\n// ret1.backup = msg.payload;\nret2.data = {backup: msg.payload};\n\nreturn [ret1, ret2];","outputs":2,"noerr":0,"x":160,"y":200,"wires":[["d5f777c.c4eba88"],["b07e9ae5.b5df28"]]},{"id":"61b5c8ec.15b63","type":"function","z":"967c5dd7.dee1a","name":"タイムアウト判定","func":"if (msg.data.req && msg.data.check ) {\n return [msg.data, null]; // OK;\n}\nelse if (msg.data.check ) {\n return [null, msg.data]; // timeOut\n} // ret1.data.req のみは捨てる \n","outputs":2,"noerr":0,"x":590,"y":280,"wires":[["a63fd121.9be3"],["3e7cdc8a.0b0f14"]]},{"id":"95a03086.c8a628","type":"debug","z":"967c5dd7.dee1a","name":"タイムアウト","active":true,"console":false,"complete":"true","x":800,"y":340,"wires":[]},{"id":"acf1e79b.8e7a18","type":"function","z":"967c5dd7.dee1a","name":"Join用リクエストmsg","func":"let ret1 = {};\nret1.data = msg;\nret1.data.req = true;\nret1.count = 2;\nret1.index = 0;\nret1.id = msg.id;\nret1.complete = true;\n // ch - 文字列またはバッファの場合、メッセージを文字列またはバイトの配列として分割するために使用されるデータ\n // len - 固定長の値を使って分割したときの各メッセージの長さ\n\nreturn ret1;","outputs":1,"noerr":0,"x":420,"y":160,"wires":[["75ee1c7.c0e5464"]]},{"id":"d5f777c.c4eba88","type":"http request","z":"967c5dd7.dee1a","name":"","method":"GET","ret":"txt","url":"http://localhost:1880/test","tls":"","x":370,"y":100,"wires":[["acf1e79b.8e7a18"]]},{"id":"3e7cdc8a.0b0f14","type":"change","z":"967c5dd7.dee1a","name":"タイムアウト設定","rules":[{"t":"set","p":"statusCode","pt":"msg","to":"Timeout","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"NG","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":340,"wires":[["95a03086.c8a628"]]},{"id":"c6d5d3a3.b1ad4","type":"inject","z":"967c5dd7.dee1a","name":"タイムアウト","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":380,"wires":[["16990334.237f15"]]},{"id":"ae91ea01.fc484","type":"inject","z":"967c5dd7.dee1a","name":" 正常","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":130,"y":420,"wires":[["67212cfb.acd604"]]},{"id":"16990334.237f15","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"timeout","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":380,"wires":[["413690a7.c84b7"]]},{"id":"7ccc98fd.be9938","type":"comment","z":"967c5dd7.dee1a","name":"テスト設定","info":"","x":100,"y":340,"wires":[]},{"id":"9e1e9675.3edc1","type":"comment","z":"967c5dd7.dee1a","name":"テストサーバー","info":"","x":120,"y":480,"wires":[]},{"id":"e4a3e329.67a9e","type":"http in","z":"967c5dd7.dee1a","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":140,"y":520,"wires":[["912e543.afb19a8"]]},{"id":"912e543.afb19a8","type":"switch","z":"967c5dd7.dee1a","name":"timeout==false","property":"timeout","propertyType":"global","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":330,"y":520,"wires":[["8c956349.51fd8"]]},{"id":"9961a69b.3ac7d","type":"http response","z":"967c5dd7.dee1a","name":"","statusCode":"","headers":{},"x":690,"y":520,"wires":[]},{"id":"67212cfb.acd604","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"timeout","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":420,"wires":[["413690a7.c84b7"]]},{"id":"8c956349.51fd8","type":"change","z":"967c5dd7.dee1a","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"OK","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":520,"wires":[["9961a69b.3ac7d"]]},{"id":"287d1512.5e9a62","type":"inject","z":"967c5dd7.dee1a","name":"","topic":"","payload":"DATA","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":100,"wires":[["4d768f00.8ead18"]]},{"id":"b07e9ae5.b5df28","type":"function","z":"967c5dd7.dee1a","name":"join用チェックmsg","func":"msg.count = 2;\nmsg.index = 1;\nmsg.data.check = true;\n\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":220,"wires":[["75ee1c7.c0e5464"]]},{"id":"413690a7.c84b7","type":"debug","z":"967c5dd7.dee1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":530,"y":400,"wires":[]},{"id":"9fa34a45.09784","type":"catch","z":"967c5dd7.dee1a","name":"","scope":["d5f777c.c4eba88"],"x":360,"y":40,"wires":[["87b6e72b.bf2598"]]},{"id":"87b6e72b.bf2598","type":"debug","z":"967c5dd7.dee1a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"error","x":540,"y":40,"wires":[]}]
Reference
이 문제에 관하여(Node-RED : join 노드에서 타임 아웃 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sakaba37/items/e81cab8ead753f283859
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Node-RED : join 노드에서 타임 아웃 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sakaba37/items/e81cab8ead753f283859텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)