스마트 디바이스 15주차 node‐red - yubiine/25-1_smartdevice GitHub Wiki

📌 Node-RED 란?

Node-RED는 시각적 프로그래밍 도구로, 주로 IoT(사물인터넷) 시스템, API 통합, 자동화 워크플로우 설계 등에 사용됩니다.
브라우저 기반 에디터에서 “노드(Node)” 블록을 끌어다 놓고 선으로 연결해 데이터 흐름(Flow)을 구성하면, 복잡한 이벤트 처리·통합·자동화를 코딩 없이 빠르게 구현할 수 있습니다.

🔹 주요 특징

1. 시각적 플로우 디자인

  • 브라우저에서 드래그&드롭으로 노드를 연결

  • 실시간으로 배치·수정·재실행 가능

2. 경량·확장성

  • Node.js 기반으로 가볍고, 수천 개의 커뮤니티 노드를 npm으로 설치 가능

3. 다양한 프로토콜·서비스 지원

  • MQTT, HTTP, WebSocket, TCP/UDP, Kafka, Database(MySQL/MongoDB) 등

4. JSON 메시지 처리

  • 노드 간 메시지는 표준 JSON 객체(msg.payload 등) 형태

5. 플러그인 구조

  • 사용자 정의 함수 노드, 대시보드(UI) 노드, 인증·보안 노드 등을 자유롭게 추가

🔹 동작 원리

1. Runtime(런타임) 시작

  • 터미널에서 node-red 명령 실행 → 내부적으로 Node.js 서버 구동

  • 기본 포트(1880)로 HTTP 서버 열고 에디터·API·플로우 런타임 서비스 제공

2. 에디터 접속 & 플로우 설계

  • 브라우저로 http://localhost:1880 접속 → 시각적 에디터 로딩

  • 노드를 배치, 노드 속성 설정(JSON 편집), 노드 간 선 연결

3. 플로우 배포(Deploy)

  • “Deploy” 버튼 클릭 → 설계한 플로우(JSON 객체) → 런타임에 전송

4. 메시지 전달 및 처리

  • Inject/Input 노드가 트리거 → msg 객체 생성

  • 연결된 노드를 따라 msg가 순차적으로 전달

  • 각 노드(Function 노드 등)가 msg 가공/전송 → Output 노드로 최종 출력

🔹 주요 구성요소

구성 요소 역할
Editor 브라우저 기반 시각적 플로우 설계 툴
Runtime Node.js 서버, 플로우 실행 엔진
노드(Node) 입력(Input)/출력(Output)/처리(Function)/제어(Control) 기능 블록
플로우(Flow) 노드들이 메시지로 연결된 그래프(흐름)
Context 플로우별 또는 전역 변수 저장소 (메시지 간 상태 유지)
Palette 설치 가능한 노드 라이브러리 목록(기본·추가 노드)

📌실습

sudo npm install -g --unsafe-perm node-red 실행 후
node-red 실행

url 접속

값 설정 (타입선택 및 반복설정 가능)

🔹메시지 객체 출력

객체 생성

실습 결과

🔹각 속성값 전달

노드설정

실습 결과

🔹function 노드

노드설정

실습 결과

🔹덧셈처리

노드설정 (number로 바꾸기)

실습 결과