Node-RED

하겅 ·2025년 3월 3일

Capstone

목록 보기
6/14

2025년 1학기 캡스톤 프로젝트에 사용하게 되어 간단하게 필기 기록해 봅니다




Node-RED란

  • 플로우 기반 프로그래밍
  • '노드'를 통해서 플로우를 이해할 수 있음 (각 노드 내의 코드를 이해할 필요 Xx)
  • Node.js 기반, 이벤트 기반의 모델을 최대한 활용함

설치 및 실행 방법

  1. Node.js 기반이기 때문에 Node.js 설치가 우선입니다
    • node.js.org에서 본인 환경에 맞는 Node.js 설치
  2. 설치 완료 시 cmd에 아래 명령어 입력
    • sudo npm install -g --unsafe-perm node-red
      (윈도우 환경인 경우에 맨앞 sudo는 생략)
  3. 실행: 설치 완료 후 cmd에 node-red 입력
    • cmd에 뜨는 url에 접속하면 Node-RED에 접속이 됩니다
  4. 나가기: Ctrl + C

화면 구성

  • 위 화면이 개발 도구입니다 (이클립스, VSCode와 같이)
  • 코딩 없이 노드(좌측 박스)를 배치해 로직을 구현
  • 좌측: 팔레트 일종에 기능을 모아놓은 라이브러리 집합 (사용자 정의 모듈도 가능)

Enabled Disabled

  • 노드 더블 클릭 시 나오는 화면 (아래 사진은 debug 노드)
  • 노드의 사용 여부를 선택하는 버튼
  • Enabled : 사용하겠다 (플로우: 실선)
  • Disabled : 사용하지 않겠다 (플로우: 점선 및 반투명 처리)



Configuration NODE

  • 구성 노드 ⭐⭐⭐
  • 재사용이 가능한 구성을 가진 특수한 유형의 노드

ex. MQTT 프로토콜 브로커 노드

  • Node-RED의 mqtt 노드

  • Node-RED의 구성 노드 상세 화면 (mqtt broker)

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

profile
건강합시다

0개의 댓글