on
Node Red 기본 노드 사용 방법
Node Red 기본 노드 사용 방법
Node Red 설치 시 바로 사용할 수 있는 노드들 중 자주 사용하는 노드에 대한 사용 방법에 대해 정리했습니다.
정리한 노드는 inject, debug, function, switch, delay, split, join, json 노드입니다.
inject
inject 노드는 플로우를 시작 할 때 사용합니다. 좌측의 버튼을 클릭하면 설정한 데이터 값이 오른쪽으로 출력됩니다.
처음에 inject 노드를 배치하고 열어보면
이런식으로 되어있습니다. 여기에 새로운 데이터를 추가 하거나
입력할 msg.payload 의 값을 다르게 변경 하는 등의 작업을 할 수 있습니다.
inject 노드 하단에서 반복 간격을 지정 할 수도 있습니다.
"Node Red 시작의 ~ 초 후, 아래를 시행" 부분을 체크 해 주시면 inject 노드 좌측 버튼 클릭하지 않아도 지정한 주기만다 inject 노드가 실행됩니다. 반복 주기의 경우
시간과 일시를 지정해 구체적인 간격으로 지정 할 수 있습니다.
debug
debug 노드는 메세지(msg object)의 결과 값을 출력합니다.
Node Red 화면 우측에 있는 정보 창에서 디버그 메세지 탭을 클릭하면 디버그 노드로 출력되는 값을 확인 할 수 있습니다. 디버그 노드의 출력 결과 값으로 msg 전체를 지정 할 수도 있고, msg 내부의 특정 값만을 지정 할 수도 있습니다.
디버그 노드 배치 시 기본값은 msg.payload로 지정되어 있습니다.
function
functions 노드는 자바스크립트 코드를 입력 할 때 사용합니다.
노드 실행하면 return msg; 라는 코드만 기입되어 있는데 function 노드 전체를 하나의 함수로 보고 결과값을 return msg 로 내보낸다고 보면 됩니다. function 노드 내부에서 자바스크립트를 사용해 작업을 수행하고나서 그 결과값을 msg 오브젝트에 추가해주는 것입니다.
여기서 코드를 사용해 msg 에 있는 값을 추가하거나 조작하면 function 노드 우측에 연결된 다음 노드에서 msg 안에 있는 값을 열어 확인하거나 사용 할 수 있습니다.
switch
들어온 값을 확인해 조건이나 값을 지정해서 서로 다른 방향으로 나가게 할 수 있습니다.
처음 배치했을때는 입력1 출력1 이지만
위 이미지처럼 3개의 조건을 할당할 경우 입력1 출력3 으로 조건에 따라 출력이 달라집니다.
조건은 다양하게 할당 할 수 있습니다.
어떤 조건을 할당할 것인지는 마우스 클릭으로 간단하게 지정 할 수 있습니다.
delay
메세지의 흐름을 제한하는 노드입니다.
메세지 지연을 선택 할 경우 delay 노드로 입력된 메세지가 지정한 시간만큼 지연된 후에 출력되고
메세지 유량제한을 선택할 경우 몇초에 몇개의 메세지를 보낼 것인지 지정합니다. 예를 들면 메세지 유량제한으로 10초에 100개 지정하면 1000개의 메세지가 입력된 경우 10초에 100개씩 총 100초가 지나야 전체 메세지가 출력됩니다.
속도 제한이 필요한 경우에 사용합니다.
split / join
split 노드는 입력된 msg.payload 의 값을 쪼개어 분할하는 노드입니다.
join 노드는 분할된 값을 다시 합쳐주는 노드입니다.
간단한 테스트를 통해 확인해보면
function 노드에 10개의 숫자를 배열로 집어 넣습니다.
첫번째 플로우를 실행시키면
배열이 그대로 출력됩니다.
split 이 적용된 두번째 플로우를 실행시키면
이렇게 10개의 값이 10번 분할되어 출력됩니다.
이제 split, join 이 함께 사용된 세번째 플로우를 실행시켜 보면
분할되어 출력되던 값이 다시 하나로 모아져 출력되는 것을 확인 할 수 있습니다.
결과값을 아예 분할하여 출력해야 한다던가 split, join 사이에 특정한 동작을 실행시킬 필요가 있다던가 하는 경우에 사용하면 유용한 노드입니다.
json
자바스크립트 오브젝트와 JSON 문자열간에 서로 전환해주는 노드입니다.
자바스크립트에서 JSON.stringify() ↔ JSON.parse() 를 통해 오브젝트와 문자열을 서로 전환해 주는데 이것과 같은 기능을 합니다.
어떤 동작으로 변환할지 노드에서 별도로 선택 할 수 있습니다.
from http://chanzu.tistory.com/109 by ccl(A) rewrite - 2021-11-12 15:00:53