16주차 스마트디바이스 (Node‐Red) - jungjaeyeol/jyeol03 GitHub Wiki

🌐 Node-RED란?

Node-RED비전문가도 손쉽게 IoT 및 이벤트 기반 애플리케이션을 개발할 수 있게 해주는 시각적 프로그래밍 도구입니다.
JavaScript 기반의 Node.js 위에서 작동하며, 웹 브라우저에서 블록을 연결하는 방식으로 플로우(Flow)를 구성할 수 있습니다.


🧠 주요 특징

특징 설명
플로우 기반 개발 드래그 앤 드롭 방식으로 노드를 연결하여 데이터 흐름(Flow)을 구성
Node.js 기반 자바스크립트 및 다양한 npm 패키지를 활용 가능
웹 인터페이스 웹 브라우저에서 플로우를 시각적으로 설계 가능
확장성 다양한 노드 라이브러리를 통해 외부 API, 센서, 데이터베이스와 연동
IoT 친화적 MQTT, HTTP, WebSocket 등 IoT 프로토콜을 기본 지원

📦 구성 요소

1. 노드 (Node)

  • 기능 단위 블록
  • 예: inject, http request, mqtt, function, debug

2. 플로우 (Flow)

  • 노드들이 연결되어 하나의 처리 흐름을 구성

3. 대시보드 (Dashboard)

  • 시각적으로 결과를 표현하거나 사용자 입력을 받을 수 있는 UI 구성

🚀 사용 예시

[센서 데이터 수집] → [필터링/가공] → [DB 저장 or 사용자 알림]
  • 온도센서를 통해 수집된 데이터가 기준치 이상이면 SMS 전송

  • 트위터 API와 연동하여 키워드 알림

  • 스마트 홈 장치 제어

Node-RED 실습

  • Node.js 홈페이지에 접속 후 윈도우 or 맥 다운로드 및 설치

  • cmd 실행 후 npm install -g --unsafe-perm node-red입력 후 node-red 입력

image

  • 위 사진처럼 나올경우 http://127.0.0.1:1880/ 주소 ctrl + 좌클릭 으로 접속

1. 년도 월일 출력

  • 위 사진처럼 inject, debug 연결

  • 결과


2. 안녕하세요 출력

  • inject를 "안녕하세요"로 변경

  • 출력 결과


3. 인사토픽 출력

  • 다음과 같이 inject, debug 를 변경

  • 출력 결과


4. 동시 출력

  • debug 를 2개 추가 한 후 각각 msg.topic, msg._misgid로 설정한다

  • 출력 결과


5. 존댓말 인사 출력

  • function 노드 추가, inject - function - debug 순서로 연결한다

  • function 노드는 msg.payload = msg.payload + "하십니까" 추가하기

  • inject 노드는 msg.payload = 안녕! , msg.topic = 반말 추가하기

  • 출력 결과


6. 합산하기

  • inject 노드는 msg.payload = (Number) 3 , msg.topic = 숫자 메시지 노드 추가하기

  • function 노드는 msg.payload = msg.payload + 3 추가하기

  • 결과 출력