IoT 표준화, Application Layer protocol + IoT 시각화 툴 Node-Red

공부하자·2022년 11월 22일
0

IoT 표준화

Internet-of-Things (IoT, 사물인터넷)


인터넷을 기반으로 모든 사물을 연결하여 사람과 사물,
사물과 사물간의 정보를 상호 소통하는
지능형 기술 및 서비스
기능화 + 상호연결 + 지능화 = IoT

Internet-of-Thins 요소 기술

사물인터넷 표준화

  • 국제표준기구인 ITU-T, ISO/IEC에서 사물인터넷 관련 표준 개발이 활발하며, 글로벌 표준 기구(de facto) IETF, IEEE, OGC, OMA, ETSI, oneM2M 등에서 사물인터넷 관련 정의, 기술 분류 및 필요한 요소 기술들에 대한 표준들을 활발히 개발

OCF: Open Connectivity Foundation

  • An industry organization to
    • develop standards,
    • promote a set of interoperability guidelines, and
    • provide a certification program for devices involved in the IoT.
  • Major membership
    • Samsung Electronics, Intel, Microsoft, Qualcomm and Electrolux.
  • The OCF delivers a framework that enables these requirements via a specification, a reference implementation and a certification program
    • IoTivity: open source reference implementation developed by different members of the OCF.
  • 다음과 같은 업계 조직
    • 표준을 개발하고,
    • 일련의 상호운용성 guideline을 홍보한다.그리고,
    • IoT에 관련된 장치에 대한 인증 프로그램을 제공한다.
  • 주요 회원 자격
    • 삼성전자, 인텔, 마이크로소프트, 퀄컴, 일렉트로룩스.
  • OCF는 사양, 참조 구현 및 인증 프로그램을 통해 이러한 요구사항을 가능하게 하는 프레임워크를 제공한다.
    • IoTivity: OCF의 다른 구성원들에 의해 개발된 오픈 소스 참조 구현.

IoTivity

  • Open source framework that implements the Open Connectivity
  • Foundation (OCF) standards providing easy and secure communications for IoT devices
  • 오픈 커넥티비티를 구현하는 오픈 소스 프레임워크
  • IoT 장치를 위한 쉽고 안전한 통신을 제공하는 기반(OCF) 표준

Application Layer Protocol

OSI 7 Layer

  • 네트워크 프로토콜이 통신하는 구조를 7개로 분리하여, 각 계층간 상호 작동하는 방식을 정의해 놓은 계층 구조

IoT를 위한 Application Layer Protocol

  • IoT 환경에서는 다양한 종류의 사물기기들이 존재하며 빈번한 데이터 전달 및 교환이 발생하고, 네트워크 환경의 경우 메시지 전달의 손실이 자주 발생
  • IoT 특성 상 저사양 하드웨어와 저전력 요구사항을 가짐에도 안정적인 네트워크 동작이 요구됨. 이에 따라 IoT를 위한 메시지 교환 어플리케이션 프로토콜이 개발됨
    • REST (Representational State Transfer), XMPP (Extensible Message and Presence Protocol), MQTT (Message Queuing Telemetry Transport, CoAP (Constrained Environments Application Protocol) 등

HTTP (Hypertext Transfer Protocol)

  • WWW(World Wide Web)에서 사용되는 통신규약으로 클라이언트와 서버 간의 정보를 주고받을 수 있는 어플리케이션 계층 프로토콜.
  • 주로 HTML 문서를 주고 받는 데에 쓰이며 TCP와 UDP를 전송계층으로 사용.
  • 클라이언트와 서버 사이에 요청/응답(Request/Response) 기반 데이터 교환 방식

MQTT (Message, Queuing, Telemetry, Transport)

  • 지연/손실이 심한 네트워크 환경에서 검침기, 센서 등 작은 기기들의 원격제어, 원격측정을 위한 프로토콜로서, 신뢰성/저전력 특징 때문에 IoT에 적용하기 적합
  • ‘publish/subscribe’ 모델을 사용하며, MQTT 네트워크 노드 간에 메시지를 관리하고 라우팅하기 위해 중앙 MQTT 브로커(broker)를 필요로 함
  • TCP를 사용하여 ‘고신뢰성, 정렬, 에러 검사’를 특징으로 하는 트랜스포트 계층 구현

CoAP (Constrained Application Protocol)

  • 저전력, 고손실 네트워크 및 소용량 그리고 소형 노드와 같은 데이터 손실 가능성이 큰 제약적인 환경에서 사용될 수 있도록 특화된 웹 전송 프로토콜
  • TCP 대신 UDP를 사용 (리소스 제약이 있는 기기 고려), UDP기반의 Request/Response 모델로 동작하며 멀티캐스트를 지원
  • 신뢰성 있는 전달을 위해서 재전송 및 타이머 관리를 옵션으로 포함
  • 보안을 위해서 UDP와 CoAP 계층 사이 DTLS(Datagram Transport Layer Security)계층 사용
  • 네이티브 UDP, 멀티캐스트지원, DTLS보안, 리스소/서비스 검색, 비동기식 통신

XMPP (Extensible Messaging and Presence Protocol)

  • 2인 이상의 참여자 간에 구조적 데이터의 실시간 교환을 위한 프로토콜
  • 다양한 메신저들에서 사용
    • Google Talk, Facebook, AOL, MSN 메신저 등
  • TCP를 이용하여 동작하고 클라이언트는 도메인 서버에게 데이터를 전송하는 서버 클라이언트 방식으로 동작하기 때문에 서버 기반으로 상대기기간의 인증 및 허가와 관련한 보안요소가 지원되고 있으며 실시간 메시지 전달과 확장성을 고려하여 프로토콜이 설계됨

IoT 시각화 툴 Node-RED

IoT 시각화 도구 (인포그래픽)

  • 사물 인터넷 장치의 센서 데이터를 수집 및 원격 제어 하기 위해서는 다양한 기술을 필요로 하고, 많은 개발 시간 소요
    • 데이터베이스, 웹서버, 웹프론트앤드(시각화), 프로토콜, 개발언어 등 다양한 기술이 필요 -> 많은 개발 시간 소요
  • IoT 시각화 도구(툴)은 사물인터넷 서비스 개발에 필요한 통신 프로토콜과 다양한 정보를 이용하여 플로우(Flow)를 프로그래밍 할 수 있는 인포그래픽 환경 제공

Node-RED

  • Node-RED(노드 레드)
    • 하드웨어 장치들, API, 온라인 서비스를 사물인터넷의 일부로 와이어링(배선화)시키기 위해 IBM이 개발한 시각 프로그래밍을 위한 플로(Flow) 기반 개발 도구
    • 브라우저 기반 플로 편집기를 제공
    • 자바스크립트 함수를 개발하는데 사용할 수 있으며 애플리케이션의 요소들은 재사용을 위해 저장하거나 공유 가능
    • 런타임은 Node.js 위에서 개발되었으며 Node-RED에서 만든 플로는 JSON을 사용하여 저장
  • Node-RED 구조
    • 노드(Node)라고 불리는 블록을 이용하여 네트워크 응용 프로그램의 동작 구조를 쉽게 설계
    • 강력한 비동기 런타임인 Node.js 위에서 구동
    • 사용자에게 웹 기반의 플로우 에디터를 재공하기 위한 서버와 만든 플로우를 실제로 구동시키는 Runtime 이 하나의 소프트웨어에서 작동

  • Node-RED(노드 레드) : https://nodered.org/
    • 하드웨어 장치들, API, 온라인 서비스를 사물인터넷의 일부로 와이어링(배선화)시키기 위해
      • IBM이 개발한 시각 프로그래밍을 위한 플로(Flow) 기반 개발 도구
    • 브라우저 기반으로 각 노드(Node)간 플로우 배선을 쉽게 설계 가능
    • 한번의 click로 runtime으로 배포(deploy)와 runtime 구동 가능
  • 주요 특징
    • Browser-based flow editing
    • Built on Node.js
    • Social development

Node-RED를 활용한 IoT 응용 명세/구현

  • Node-Red 로 Application을 구현하는 방식은 크게 세 가지로 구분
    • Design: 노드를 조합하여 하나의 플로우를 설계
    • Deploy: 설계한 플로우를 배포
    • Runtime: 설계된 플로우 Node.js로 실행

  • 설계 플로우 예시

  • Input, Output, Function 세 가지 종류의 Node
  • 하나의 flow는 Input Node에서 시작하여 Output Node로 결과 전달
  • Input과 output node 사이에 data 가공을 위해 Function Node가 사용될 수 있음
  • 하나의 Node는 다음 Node로 JSON 형식 데이터를 전달
    • 기본값: Message 오브젝트에 payload 속성

참고 : 용어정리

용어정리

Java

  • Java는 웹 애플리케이션 코딩에 널리 사용되는 프로그래밍 언어
  • 다중플랫폼, 객체지향 및 네트워크 중심 언어
  • Java는 썬 마이크로 시스템즈에서 개발 발표
  • 응용분야: 모바일 앱, 클라우드 컴퓨팅, 빅데이터 , 인공지능, 사물인터넷 등

JavaScript

  • JavaScript는 웹페이지에서 복잡한 기능을 쉽고 단순하게 구현할 수 있도록 하는 스크립트 언어 또는 프로그래밍 언어
  • Netscape Inc.에서 개발, Java 플랫폼과는 별개임
  • 응용분야: 웹페이지(서버, 클라이언트)

Node.js

  • JavaScript 엔진으로 빌드된 JavaScript 런타임(프로그램 실행 환경)
  • 노드를 통해 다양한 JavaScript 애플리케이션 실행
  • Event 기반, Non-blocking I/O 모델 사용
  • 응용분야: 네트워크 어플리케이션, 웹 어플리케이션

Node-RED

  • 브라우저 기반 플로우(Flow) 편집기
  • JaveScript 함수를 개발하는데 사용 가능
  • 런타임은 Node.js 위에서 개발됨
  • 응용분야: 사물인터넷

npm

  • Node Packaged Manager
  • Node.js로 만들어진 패키지(Package, 모듈:module)을 웹에서 받아서 설치하고 관리하는 툴

JSON

  • JavaScript Object Notation
  • JavaScript에서 데이터를 저장하고 전송할 떄 사용하는 경량의 데이터 교환 형식
  • 서버와 클라이언트 간 데이터 전송에 사용

Java와 JavaScript

객체지향

  • Java: 객체지향 프로그래밍 언어
  • JavaScript: 객체지향 스크립트 언어

실행환경

  • Java: JAVA 애플리케이션은 JVM 위에서 실행
    JRE와 JDK 설치
  • JavaScript: 웹브라우저 위에서 실행, 추가적인 환경설정 필요 없음

컴파일

  • Java: 프로그래밍 언어로 컴파일 필요
  • JavaScript: 텍스트 기반 스크립트로 컴바일 없이 바로 실행

모바일 애플리케이션

  • Java: 휴대전화 APP 대부분은 JAVA 사용, Android 스마트폰도 JAVA 사용
  • JavaScript: 주로 웹 애플리케이션 용

변수 지정

  • Java: 변수 자료형은 반드시 선언 되어야 함. (정적 형지정, static typing). 블록 밖에서 사용 불가
  • JavaScript: 변수 자료형은 반드시 선언 되어야 함 (정적 형지정, static typing), 함수 안에서만 사용

적용 범위

  • Java: 다양한 운영체제에서 실행 가능한 독립적
    인 언어
  • JavaScript: 웹브라우저, HTML/CSS와 같은 환경 필요
profile
아주대학교 수업 기록

0개의 댓글