반응형

이번 게시글은 아래 지난 게시글 핵심노드 설명 2편에 이은 설명입니다.  아래 게시글 링크를 먼저 참고해 주세요.

【Node-RED #③】노드-레드! 핵심노드 설명 2편/ Core Node Description! #2

①  Status 노드

Status(상태) 노드는 플로우 내에 있는 특정 노드들의 상태 메시지를 수신하는 역할을 합니다.   노드의 상태를 표시해 주는 기존 기능을 통해서 상태가 변경될 때 Status 노드는 관찰을 하는데요, 특정 노드의 출력을 감지하여 메시지를 출력하는 경우 등에 활용할 수 있습니다. 

예시)  예를 들어 아래와 같은 플로우가 구성되어 있을 때, debug2로 메시지(숫자'2')가 전달 되는 상황에서 Debug2로 메시지가 전달되면 "status 노드"를 통해서 이를 확인하는 플로우를 구성할 수 있습니다.

[ 지난 게시글에 입력한 Function node의 코드 설정입니다 ]

var msg1 = { payload: "1" };
var msg2 = { payload: "2" };
var msg3 = { payload: "3" };

return [msg1, msg2, msg3];

우선, 위와 같이 노드 플로우를 구성하고, Status의 설정과 디버그 1, 2, 3, 4의 설정은 아래와 같이 해주세요. 

 

이렇게 설정 후 '배포하기'를 누르고 'Hello world!'노드의 인젝션을 실행시키면 아래처럼, debug4를 통해서 상태를 수신하게 됩니다. 

 

②  Comment 노드

comment 노드는 플로우에 영향을 미치지 않는 노드로써, 설명 또는 주석을 작성할 때 사용되는데요, 설명이 필요한 플로우 주변에 넣거나 플로우 구간끼리 구분을 위해 넣어 놓을 수 있습니다. 아래 예시를 참고해 보세요. 



③  Split 노드

Split노드는 입력으로 들어오는 데이터를 설정한 규칙으로 분리 시키는 작업을 수행할 수 있는 노드입니다. 
메시지 내용을 줄 단위(엔터) 혹은 ','컴머나  '.'마침표 등과 같은 특정 문자(스트링) 단위로 구분을 하거나, 노드에 입력되는 메모리 버퍼 단위로 분리 가공할 수 있습니다. 

그럼, 예시로 split노드를 이용해서 전달할 메시지를 줄바뀜이 날 때마다 분리해 볼게요. 

예시①-1) 줄바뀜 ("\n")이 일어날 때 분리해 주는 예시

우선 아래와 같이 노드를 구성해주세요.  "데이터 노드"는 "Template"노드를 이용하면 됩니다. 

아래는 데이터 노드와, split 노드의 속성창 설정 내용입니다. 

 

이렇게 하고서, 타임스템프(인젝션)을 클릭해 보면, 아래처럼 데이터의 줄 바뀜이 일어날 때마다 데이터가 분리(Split)되는 것을 볼 수 있습니다.


예시①-2) 위 예시에서 콤머 ', '  와  마침표 '. ' 등의 여러 가지 문자로도 구분을 할 수 있으니 참고해 주세요. 

 

예시①-3) 마침표 ', '  문자로 데이터를 분리한 예시.

 

예시 ②)  입력되는 문자 길이로 일괄적으로 분리하는 경우. (split 노드에서 아래처럼 분할 부분을 고정장(영문표기: Fixed length of)으로 변경하고 구분하고자 하는 단위의 숫자를 입력해 주세요,  여기서는 3개의 스트링으로 입력) 

템플릿(Template) 노드의 데이터 설정은 아래처럼 했습니다. 

그래서 결과를 출력해 보면 아래처럼 출력되는 것을 볼 수 있습니다. 

 

예시 ③)  배열 단위로 데이터를 분리(구분)할 수 있습니다.  템플릿 노드의 데이터와 속성을 아래처럼 수정해 주세요.  ( 데이터를 배열형태로 바꾸고, 출력 형식을 'JSON'으로 변경합니다.)

그리고 Split노드의 속성은 아래처럼 구분해 주세요.  먼저 2로 입력하여 배열의 값을 두 개씩 묶는 경우입니다. 

결과 출력을 보면 아래처럼 배열값이 2개씩 분리되어 출력되는 것을 볼 수 있습니다. 

그럼, 이어서 배열 묶음을 3으로 변경해서 출력해보면 아래처럼 결과를 정확하게 얻을 수 있습니다. 

 

예시 ④)   오브젝트의 경우는 파이썬의 딕셔너리 구조와 같은 Key값을 기준으로 데이터를 분리할 수 있도록 해줍니다. 
split노드의 속성을 아래처럼 변경해 주세요. 

이를 실행하면 아래처럼 Key값을 기준으로 데이터가 분리되어 출력되는 것을 확인할 수 있습니다. 

 

④  Sort 노드

sort 노드는 입력데이터를 규칙에 따라 정렬해 주는 노드인데요, 정렬은 전달된 msg.payload값이나 JSONata 식을 통해서 정렬할 수 있습니다.   정렬방식은 값을 기준으로 오름차순과 내림차순으로 정렬되며, 수치로서 도 오름차순과 내림차순으로 정렬 가능합니다. 

먼저 템플릿 노드의 데이터를 아래처럼 입력해 주세요. 

Sort노드는 아래처럼 입력하는데,  먼저 "수치로써 비교" 부분을 체크해제하고 결과를 출력해본 후, 체크 후 결과도 차례로 출력해 보세요. 

내림차순의 경우도 동일하게 활용할 수 있습니다. 

또한, Sort노드에서 키값을 Json 표현식으로하여 변경하면 딕셔너리 자료의 Value값을 기준으로도 정렬할 수 있습니다.   예를 들어,  이름과 나이 형태로 된 딕셔너리 데이터가 있을 때,  나이를 기준으로 오름차순이나 내림차순으로 정렬이 가능합니다.  
먼저 "Template"노드를 아래처럼 입력해 주세요. 

그리고,  Sort노드는 아래처럼 수정해 주세요. 

 

그리고 인젝트 버튼을 클릭하여 결과를 출력해보면 아래처럼 나이를 기준으로 오름차순으로 출력된 결과를 볼 수 있습니다. ( 데이터가 안 보일 경우 ▼array [3]  부분의 삼각형을 눌러 아래로 펼쳐보세요)

 

끝으로 Sort노드에서 내림차순으로 바꾸어 출력해 보면 아래처럼 잘 출력되는 것을 확인할 수 있습니다. 


그럼, 이번 시간은 여기까지하고, 다음 시간에 핵심노드 설명을 이어가도록 하겠습니다. 
감사합니다. 

 

반응형