이 블로그는 Web 환경을 이용한 원격 제어 기술에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Raspberry Pi와 Raspberry Pi Pico, ATmega128 보드, Arduino Mega 보드(ATmega2560), WiFi 모듈을 사용 합니다.

Node-RED-basic

Node-RED Basic
Raspberry Pi와 Node-RED


  • Raspberry Pi에서 Node-RED 시작하기
    • Node-RED 은?
      • Node-RED는 하드웨어 장치, API 및 온라인 서비스를 GUI 환경에서 쉽게 연결하도록 하는 프로그래밍 도구이다.
      • Node-RED는 팔레트의 노드를 사용하여 흐름을 쉽게 연결할 수있는 브라우저 기반 편집기를 제공한다.
      • 텍스트 편집기를 사용하여 편집기 내에서 JavaScript 함수를 만들 수 있다.
      • 재 사용을 위해 유용한 함수, 템플릿 또는 흐름을 라이브러리(Built-in library)로 저장할 수 있다.
      • Node.js를 기반으로 하여 event-driven, non-blocking 모델의 장점을 최대한 활용 할 수 있다. 따라서 Raspberry Pi와 같은 저비용 하드웨어의 네트워크 환경에서 실행하는데 적합하다.
      • Node의 패키지 저장소에있는 225,000 개 이상의 모듈을 통해 팔레트 노드 범위를 쉽게 확장하여 새로운 기능을 추가 할 수 있다.
      • Node-RED에서 생성 된 흐름(Flows)은 다른 사람들과 쉽게 공유(쉽게 가져오고 내보낼 수있는)할 수 있게 JSON을 사용하여 저장된다.
      • 참고자료: "nodered.org"

    • Node-RED 설치하기
      • Raspberry Pi 터미널을(Putty)에서 다음 명령을 실행하여 Node-RED를 설치한다.
      • bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

      • Raspberry Pi에서 Node-RED를 Service로 시작 또는 정지 시키는 명령은 아래와 같다.
        • Raspberry Pi에서 Node-RED를 Service로 시작하기
        • node-red-start

          주: Node-RED를 "node-red-start" 명령으로 시작한 경우, 명령이 실행된 다음 log 메세지가 출력된 상태이기 때문에 터미널 명령 대기 상태로 가기 위하여는 Crl C를 입력하여야 한다.

        • Raspberry Pi에서 Node-RED 실행을 정지 시키기는 명령
        • node-red-stop

        • log File 보기 명령
        • node-red-log

      • Raspberry Pi 시작시 자동으로 Node-RED를 시작 시키는 명령은 아래와 같다.
      • sudo systemctl enable nodered.service

      • Raspberry Pi 다시 시작하여 자동으로 Node-RED를 시작 시키기 위한 명령은 아래와 같다.
      • sudo reboot

      • Raspberry Pi 자동 시작을 중지하는 명령은 아래와 같다.
      • sudo systemctl enable nodered.service

      • 정상 설치 여부를 확인하기
      • Web browser(PC 등)에서 다음과 같이 Node-RED가 설치된 Raspberry Pi에 접속(Port 번호: 1880)한다.

        http://Raspberry_Pi_IP_ADDRESS:1880

        예: 192.168.0.18:1880

        Node-RED가 정상으로 실행되고 있는 경우의 Web browser 예

    • Node-RED GUI 요약
      • 팔레트(Palette): 윗 그림에서 가장 왼쪽 창으로 플로우(Flow)에서 사용할 수 있는 모든 가능한 Node 목록을 기능에 따라 구분하여 보여 준다.
      • 작업공간(Workspace): 윗 그림에서 중앙에 있는 창으로 여기에 Nodes를 배치하고 연결하여 플로우(Flow)를 생성한다.
      • 정보 사이드 바(Information sidebar): 윗 그림에서 가장 좌쪽 창으로 플로우(Flow)에 대한 정보가 표시된다. 플로우(Flow) 와 선택된 Node의 개요 정보와 선택된 항목의 세부 정보가 표시된다. 또한 Debug Console 등 이용자의 선택에 따라 필요한 정보를 볼 수 있다.

  • Node-RED를 이용한 메세지 전송 예
    • inject node와 debug node를 사용한 메세지 전송과 수신 예
      • 작업공간에 아래 그림과 같이 inject node와 debug node를 배치(팔레트에서 Node를 선택하여 작업공간으로 Drag 함)하고 연결한다.
      • inject node와 debug node를 배치하고 연결한 예

      • 작업공간의 inject node를 Double-click하면 아래와 같이 inject node 편집창이 열린다. 이 창에서 msg.payload 속성을 string으로 선택하고 편집창에 "Hello! Node-RE"를 입력한다.
      • inject node 편집 예

      • 위쪽 상단의 "배포하기" 버튼을 클릭하여 배포 가능하게 저장한다. "배포하기" 가 성공적으로 실행되면 inject node의 Trigger button이 활성화 된다.
      • 우측 "정보 사이드 바"에서 "디버그 메세지" 창을 선택한다.
      • inject node의 "Trigger button"을 클릭하면 inject node에 저장된 "Hello! Node-RE" 메세지가 디버그 노드로 전송되어 위 예와 같이 디버거 창에 출력된다.

  • Raspberry Pi와 Node-RED 관련 페이지 보기