Node-red용 커스텀 모듈 수동 등록하기

최근 Node-red로 이런 저런 flow를 만들어 보면서 프로젝트를 진행 중입니다.

node-red가 가진 장점은 부가 모듈 (흔히 node-red-contrib으로 시작하는)을 런타임에 npm 리파지토리로부터 설치해서 사용할 수 있다는 것입니다.

Node-RED Library 페이지를 보면 node-red에서 사용할 수 있는 다양한 모듈들을 검색해 볼 수 있습니다.

Node-red의 Twitter 노드를 이용하여 특정 해쉬태그가 포함된 트윗을 가져오는 flow를 만들었는데

가져온 트윗의 내용을 file로 저장하고 그 파일을 spark로 분석하려는 목적이었습니다.

그런데 단일 파일에 모든 트윗 내용을 저장하면 파일 크기 문제도 있고 날짜 별로 트윗을 구분하기 힘들어서
(아직 검증안된 프로세스여서 다른 저장소없이 우선 그냥 파일로 저장하려고 했습니다)

daily rotate log 모듈이 필요했는데 없더군요.

node-red는 node-red용 부가 모듈을 직접 제작하여 연결할 수 있고 그에 대한 가이드 문서를 제공하고 있습니다.

처음 부가 모듈을 제작하는 것이 때문에 가장 유사한 모듈(node-red-contrib-advance-logger)을 찾아서 fork해서 약간 수정하였고 NPM 리파지토리에 publish하였습니다. (그러고보니 첫 번째 npm publish네요)

문제는 NPM 리파지토리에 public 모듈로 배포만하면 node-red UI에서 바로 검색이 될 줄 알았는데 아니더군요
(나중에 알았지만 관련 내용을 github에 gist 형태로 작성해서 node-red 사이트에서 추가할 수 있도록 연결해 줘야 하는 듯 합니다)

결국 제가 만든 모듈이 있다고 node-red 서버에 수동으로 알려줘야 하는데

node-red의 REST API를 이용해서 제가 만든 모듈이 검색되도록 할 수 있었습니다.

node-red의 REST API Admin API중에 /nodes endpoint로 아래와 같은 내용으로 POST 요청을 하면 node-red 서버에서 모듈을 인식합니다. (예 : http://localhost:9000/nodes)
(GET으로 요청하면 설치된 모듈의 목록을 가져옵니다.)

{
"module": "node-red-contrib-rotate-logger"
}

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중