Presentation is loading. Please wait.

Presentation is loading. Please wait.

임베디드 프로그래밍 Lecture #06 2017. 11. 06.

Similar presentations


Presentation on theme: "임베디드 프로그래밍 Lecture #06 2017. 11. 06."— Presentation transcript:

1 임베디드 프로그래밍 Lecture #06

2 목 차 IoT Protocol 개요 HTTP Protocol 개요 HTTP 기반 IoT Service 구현

3 IoT Protocols (1) IoT Protocols 개요

4 IoT Protocols (2) IoT Protocols 개요

5 IoT Protocols (3) IoT Protocols 개요 무선 통신 기술

6 IoT Protocols (4) IoT Protocols 개요 주요 IoT Session Protocols 참고:
HTTP / HTTPS CoAP MQTT XMPP AMQP 등 참고: landscape?next_slideshow=1

7 HTTP Protocol (1) HTTP Protocol 개요
요청/응답(Request/Response) 기반의 무상태형(Stateless) 통신 프로토콜 /HTTP_Basics.html 주요 특징: 요청/응답 방식 비연결지향성(Connetionless) 무상태형(Stateless) 미디어 독립적(Media-independent) 복잡도가 낮음(Simple)

8 Request/response 기반의 비연결지향성
HTTP Protocol (2) HTTP Protocol 개요 Request/response 기반의 비연결지향성

9 HTTP Protocol (3) HTTP Protocol 개요

10 HTTP Protocol (4) HTTP Protocol 개요 HTTP based on TCP/IP

11 HTTP Protocol (5) HTTP Protocol 개요 Request Message

12 HTTP Protocol (6) HTTP Protocol 개요 Response Message

13 HTTP Protocol (7) HTTPS Protocol 개요 HTTP의 보안이 강화된 버전
SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화

14 HTTP Protocol (8) HTTPS Protocol 개요 : TLS(Transfer Layer Security)

15 HTTP Protocol (9) SOA(Service Oriented Architecture)
웹 서비스(Web Service) : SOA를 통해 공개된 메소드 구현 방법: SOAP(Simple Object Access Protocol) REST(Representational State Transfer) right-architectural-decision-1st-international-soa-symposium- amsterdam-october-2008-presentation

16 HTTP Protocol (10) SOA(Service Oriented Architecture) SOAP vs. REST

17 HTTP Protocol (11) SOA(Service Oriented Architecture) SOAP vs. REST

18 HTTP Protocol (12) HTTP 기반 IoT 서비스 구현 장점: 단점:
통신 프로토콜이 간단(Simple)  구현이 용이 방화벽(Firewall)에 대한 제약이 없다 단점: 메시지 크기가 크다  데이터 전송량이 많다 요청/응답 방식의 통신  경우에 따라 즉각적인 서비스나 주기적인 서비스 제공 이 어렵다

19 HTTP Protocol (13) HTTP 기반 IoT 서비스 구현
접근 #1 - IoT 단말 장치를 HTTP Client로 구현 Publish/subscribe pattern 접근 #2 - IoT 단말 장치를 HTTP Server로 구현 순간 값 서비스가 용이 / 방화벽 제약을 해결 접근 #3 – IoT 단말 장치를 HTTP Server/Client로 구현 복잡 UPnP(Universal Plug and Play)

20 HTTP 기반 IoT 서비스 구현 (1) 라즈베리파이의 웹 프로그래밍 플랫폼 Node.js
Java-based web app. server Embedded Tomcat Glassfish / Jersey 다양한 web application server가 존재 최근 spring boot framework가 주목 이제는 Spring Boot를 써야할 때다

21 HTTP 기반 IoT 서비스 구현 (2) Spring boot 개발 환경 구축 STS 설치
Eclipse + STS Plugin Spring Tool Suite NetBeans 등 STS 설치 압축파일을 다운로드 원하는 디렉토리에 압축 해제 실행 PATH에 경로 추가

22 HTTP 기반 IoT 서비스 구현 (3) Spring boot 프로젝트 생성 (1) STS 실행
파일  New  Spring Start Project 메뉴 선택

23 HTTP 기반 IoT 서비스 구현 (4) Spring boot 프로젝트 생성 (2) 프로젝트 이름 설정
“raspi_iot” Package Group 설정 “com.example” 나머지 설정은 기본 설정에 따른다.

24 HTTP 기반 IoT 서비스 구현 (5) Spring boot 프로젝트 생성 (3) 프로젝트 종속성 선택 : “Web”
Maven project 설정에 종속성 추가

25 HTTP 기반 IoT 서비스 구현 (6) Spring boot 프로젝트 생성 (4) 생성된 Maven Project

26 HTTP 기반 IoT 서비스 구현 (7) Spring boot 프로젝트 기본 실행 (1) 기본적으로 생성된 프로젝트 실행
프로젝트 팝업 메뉴 “Run As”  “Spring Boot App”

27 HTTP 기반 IoT 서비스 구현 (8) Spring boot 프로젝트 기본 실행 (2)
Home URL에 대한 서비스 페이지가 없음 Spring boot 프로젝트 기본 실행 (2) 웹브라우즈을 이용하여 GET 요청 전송

28 HTTP 기반 IoT 서비스 구현 (9) REST 서비스 클래스 생성 및 구현 (1)
REST API 개요 : REST API 이해와 설계 Java POJO Class 생성 Class Name: “RaspiIotController”

29 HTTP 기반 IoT 서비스 구현 (10) REST 서비스 클래스 생성 및 구현 (2)
RaspiIotController 클래스에 지시자(Annotation) 추가 @RestController @EnableAutoConfiguration

30 HTTP 기반 IoT 서비스 구현 (11) REST 서비스 클래스 생성 및 구현 (3)
RaspiIotController 클래스에 Home URL 서비스 메소드 추가

31 HTTP 기반 IoT 서비스 구현 (12) REST 서비스 클래스 생성 및 구현 (4)
웹 서비스 포트 변경 : 8080  8081

32 HTTP 기반 IoT 서비스 구현 (13) REST 서비스 클래스 생성 및 구현 (4) 실행 테스트
“Run As”  “Spring Boot App” 메뉴로 실행 브라우저로 GET 요청 전송

33 HTTP 기반 IoT 서비스 구현 (14) REST 서비스 클래스 생성 및 구현 (5) 라즈베리파이에서의 실행 테스트
배포 파일 생성 : “Run As”  “Maven Install” 메뉴 실행

34 HTTP 기반 IoT 서비스 구현 (15) REST 서비스 클래스 생성 및 구현 (6) 라즈베리파이에서의 실행
배포 파일 복사 : samba 서비스를 이용하여 copy & paste 라즈베리파이 디렉토리 프로젝트 디렉토리/target drag & drop

35 HTTP 기반 IoT 서비스 구현 (16) REST 서비스 클래스 생성 및 구현 (7) 라즈베리파이에서의 실행
배포 파일 실행: 라즈베리파이에 ssh 접속하여 다음 명령 실행 #> java –jar raspi_iot_0.0.1_SANPSHOT.jar 단, JRE는 라즈베리파이에 기본적으로 설치된 버전을 사용 PC의 웹브라우즈에서 GET 요청 전송

36 HTTP 기반 IoT 서비스 구현 (17) HTTP 기반 IoT 서비스 (1)
웹 서비스를 통해 라즈베리파이에서 다음의 동작을 지원 3개 LED에 대한 on/off 제어 PCF8591 Breakout Board를 이용한 아날로그 입출력 지원 LED Dimming Potentiometer 값 읽기 Photoresistor 값 읽기 Themistor 값 읽기

37 HTTP 기반 IoT 서비스 구현 (18) HTTP 기반 IoT 서비스 (2) 라즈베리파이 회로
LED GPIO: GPIO17(11), GPIO27(13), GPIO22(15) PCF8591BB: SDA(3), SCL(5)

38 HTTP 기반 IoT 서비스 구현 (19) HTTP 기반 IoT 서비스 (3)
장치 제어 클래스를 위한 패키지 생성 : com.example.devices

39 HTTP 기반 IoT 서비스 구현 (20) HTTP 기반 IoT 서비스 (4) LED 제어 클래스 생성
LedController

40 Maven project에서 외부 라이브러리에 대한 종속성을 추가하기 위해서는 외부 라이브러리 설치를 요구함.
HTTP 기반 IoT 서비스 구현 (21) HTTP 기반 IoT 서비스 (5) Device IO Library 추가 장치 입출력을 위한 라이브러리 추가 src/main/resources 디렉토리에 lib 디렉토리 생성 dio.jar 파일을 복사하여 붙여넣기 Maven project에서 외부 라이브러리에 대한 종속성을 추가하기 위해서는 외부 라이브러리 설치를 요구함.

41 HTTP 기반 IoT 서비스 구현 (22) HTTP 기반 IoT 서비스 (6) 외부 라이브러리의 로컬 메이븐 리포지토리에 설치
외부 라이브러리의 로컬 메이븐 리포지토리에 설치 pom.xml 파일에 다음 plugin 추가

42 HTTP 기반 IoT 서비스 구현 (23) HTTP 기반 IoT 서비스 (7) 외부 라이브러리에 대한 종속성 선언
pom.xml 파일에 다음을 추가

43 HTTP 기반 IoT 서비스 구현 (24) HTTP 기반 IoT 서비스 (8) LedController 클래스 구현
@Component 선언 Spring DI를 위해 component 클래스로 선언 장치 레지스트리에서의 LED 장치 이름

44 HTTP 기반 IoT 서비스 구현 (25) HTTP 기반 IoT 서비스 (9) LedController 클래스 구현
사용중인 장치는 종료 시에 반드시 닫아줘야 한다. @PreDestroy 지시자를 이용한 메소드 구현 객체가 제거되기 전에 호출

45 HTTP 기반 IoT 서비스 구현 (26) HTTP 기반 IoT 서비스 (10) LedController 클래스 구현
turnOn 메소드 : LED 장치를 켜는 메소드 turnOff 메소드 : LED 장치를 끄는 메소드

46 HTTP 기반 IoT 서비스 구현 (27) HTTP 기반 IoT 서비스 (11) LED 제어 REST API 구현
RaspiIoTController 클래스에 LedController 속성 추가 @Autowired 지시자를 이용하여 DI 선언

47 HTTP 기반 IoT 서비스 구현 (28) HTTP 기반 IoT 서비스 (12) LED 제어 REST API 구현
RaspiIoTController 클래스에 ledOn 서비스 메소드 추가 REST API URL 및 요청 메소드 정의 요청 파라메터 정의 : 경로변수 파라메터

48 HTTP 기반 IoT 서비스 구현 (29) HTTP 기반 IoT 서비스 (13) LED 제어 REST API 구현
RaspiIoTController 클래스에 ledOff 서비스 메소드 추가 REST API URL 및 요청 메소드 정의 요청 파라메터 정의 : 경로변수 파라메터

49 HTTP 기반 IoT 서비스 구현 (30) HTTP 기반 IoT 서비스 (14) LED 제어 REST API 구현
RaspiIoTApplication 클래스에 Component Scan Path 지정

50 HTTP 기반 IoT 서비스 구현 (31) HTTP 기반 IoT 서비스 (15) LED 제어 REST API 구현
배포 파일 생성 Maven Clean Maven Install

51 HTTP 기반 IoT 서비스 구현 (32) HTTP 기반 IoT 서비스 (16) LED 제어 REST API 구현
배포 파일 생성 오류 발생 배포 파일을 생성하기 위해 테스트 하는 과정에서 dio.jar 파일에서 호출하는 C-library을 찾지 못하여 발생

52 HTTP 기반 IoT 서비스 구현 (33) HTTP 기반 IoT 서비스 (17) LED 제어 REST API 구현
배포 파일 생성 과정에서 테스트를 생략하도록 설정 pom.xml 파일에서 테스트 생략 plugin 추가

53 HTTP 기반 IoT 서비스 구현 (34) HTTP 기반 IoT 서비스 (18) LED 제어 REST API 구현
배포 파일 배포 Samba 서비스를 이용하여 라즈베리파이로 배포 파일 복사 장치 레지스트리 파일 및 보안 정책 파일 배포 dio.properties java.policy 배포 파일 실행

54 dio.properties java.policy

55 HTTP 기반 IoT 서비스 구현 (35) HTTP 기반 IoT 서비스 (19) LED 제어 REST API 구현
PC 웹브라우저에서 테스트

56 HTTP 기반 IoT 서비스 구현 (36) HTTP 기반 IoT 서비스 (20) Analog IO REST API 구현
이전 실습에서 작성된 I2C 입출력 관련 파일을 다음 디렉토리에 복사 $(project_base_dir)/src/main/java/com/example

57 HTTP 기반 IoT 서비스 구현 (37) HTTP 기반 IoT 서비스 (21) Analog IO REST API 구현
복사한 소스 파일에서의 패키지 선언 수정 객체를 생성할 클래스 파일에 지시자 추가

58 HTTP 기반 IoT 서비스 구현 (38) HTTP 기반 IoT 서비스 (22) Analog IO REST API 구현
AnalogIOController 클래스 생성

59 HTTP 기반 IoT 서비스 구현 (39) HTTP 기반 IoT 서비스 (23) Analog IO REST API 구현
AnalogIOController 클래스 구현

60 HTTP 기반 IoT 서비스 구현 (40) HTTP 기반 IoT 서비스 (24) Analog IO REST API 구현
RaspiIotController 클래스에 속성 추가

61 HTTP 기반 IoT 서비스 구현 (41) HTTP 기반 IoT 서비스 (25) Analog IO REST API 구현
RaspiIotController 클래스에 dimming 메소드 추가

62 HTTP 기반 IoT 서비스 구현 (42) HTTP 기반 IoT 서비스 (26) Analog IO REST API 구현
RaspiIotController 클래스에 potentiometer 읽기 메소드 추가

63 HTTP 기반 IoT 서비스 구현 (43) HTTP 기반 IoT 서비스 (27) Analog IO REST API 구현
Photoresistor 읽기 메소드 추가 Themistor 읽기 메소드 추가

64 HTTP 기반 IoT 서비스 구현 (44) HTTP 기반 IoT 서비스 (27) Analog IO REST API 구현
배포 파일 생성 및 배포 테스트

65 HTTP 기반 IoT 서비스 구현 (45) HTTP 기반 IoT 서비스 (28) Analog IO REST API 구현 테스트


Download ppt "임베디드 프로그래밍 Lecture #06 2017. 11. 06."

Similar presentations


Ads by Google