2025년 1학기 캡스톤 프로젝트에 사용하게 되어 간단하게 필기 기록해 봅니다
Node-RED란
- 플로우 기반 프로그래밍
- '노드'를 통해서 플로우를 이해할 수 있음 (각 노드 내의 코드를 이해할 필요 Xx)
- Node.js 기반, 이벤트 기반의 모델을 최대한 활용함
설치 및 실행 방법
- Node.js 기반이기 때문에 Node.js 설치가 우선입니다
- 설치 완료 시 cmd에 아래 명령어 입력
sudo npm install -g --unsafe-perm node-red
(윈도우 환경인 경우에 맨앞 sudo는 생략)
- 실행: 설치 완료 후 cmd에
node-red 입력
- cmd에 뜨는 url에 접속하면 Node-RED에 접속이 됩니다
- 나가기:
Ctrl + C

화면 구성

- 위 화면이 개발 도구입니다 (이클립스, VSCode와 같이)
- 코딩 없이 노드(좌측 박스)를 배치해 로직을 구현
- 좌측:
팔레트 일종에 기능을 모아놓은 라이브러리 집합 (사용자 정의 모듈도 가능)
Enabled Disabled
- 노드 더블 클릭 시 나오는 화면 (아래 사진은 debug 노드)
- 노드의 사용 여부를 선택하는 버튼
- Enabled : 사용하겠다 (플로우: 실선)
- Disabled : 사용하지 않겠다 (플로우: 점선 및 반투명 처리)
Configuration NODE
- 구성 노드 ⭐⭐⭐
- 재사용이 가능한 구성을 가진 특수한 유형의 노드
ex. MQTT 프로토콜 브로커 노드

ex. 데이터베이스 연결 노드

Subflow
- 단일 노드로 축소된 노드 집합
- 복잡성을 줄이거나 재사용 가능한 구성 요소로 그룹을 만들 때 사용
- 서브 플로우로 작성되면 좌측 팔레트에 추가됨
Message
- 플로우에서 노드 사이를 통과하는 것
== 일반 자바스크립트 객체 (속성 집합을 가짐)
- payload: 노드에서 작동하는 기본 속성
- _msgid: Node-RED가 추가하는 속성, 진행 상황을 추적할 때 사용할 수 있는 메시지 식별자
- Boolean, Number, String, Array, Object, Null 타입 지원
Context
- 메시지를 사용하지 않고 다른 노드 간에 공유 할 수 있는 정보를 저장하는 방법 (메모리에만 저장됨 == 노드레드 재가동 시 삭제됨 =>
contextStorage 속성 사용 시 저장 가능)
- 적용 범위 세 가지
1. Node: 값을 설정한 노드에서만 표시
2. Flow: 동일한 플로우(동일한 탭)에서의 모든 노드에 표시
ex. flow.KeyName 값을 동일 플로우 내의 다른 노드에서 flow.get("KeyName")의 형태로 조회 가능
3. Global: 모든 노드에 표시
Hello World!

1. inject 노드를 화면에 가져옵니다
2. debug 노드를 화면에 가져옵니다
3. 두 개의 노드를 이어 줍니다
4. inject를 더블 클릭
5. 다운드롭 리스트를 클릭해 string으로 변경 후 'Hello World' 입력
완료를 누른 후 메인 화면의 배포하기를 클릭하면 완료입니다

위의 노드가 배포 후 '활성화'된 노드이고, 아래 노드가 배포 이전 '비활성화' 되어 있는 상태의 노드입니다 활성화 된 노드의 왼쪽 네모 박스를 클릭하면 아래와 같은 출력 결과를 확인할 수 있습니다
- 파란색 원: 배포하지 않은 변경 사항이 있음
- 빨간색 삼각형: 구성에 오류가 있음

(벌레 아이콘 디버그에 들어가서 확인)
참고 교과서: Node-RED