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

Slides:



Advertisements
Similar presentations
SMART MANAGED INSTRUCTION WITH SNS 도지원 강동하 나지범 박창현 최병찬 SixSignal Capstone Design 2012.
Advertisements

작성자조성웅 작성일자 기본환경 1. Java : Eclipse : Tomcat : 6.0 이상 4. DB : MySQL File System : DFS 6. Framework - Spring : JPA 및 CXF.
Universal Plug And Play 를 이용한 홈 네트워크의 구현 게임 & 멀티미디어학과 전영균.
ChartSNS Final BlackHole 한규학 이경찬 최규연 김보경 전승현. 왜이런 거죠 ? 리비아 사 태로 차질 이 생겼어 요. 그러므로 이러한 압축 된 차트를 가지고 토론 을 하기 위 해선 / 명확한 의견 을 표현하는 것이 필요합 니다. 그러므로 이러한 압축.
1 Push 알림서비스 시나리오 및 시스템 구축방안 Push 알림서비스 시나리오 및 시스템 구축방안 IBK 기업은행 신채널제휴팀 붙임 4.
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
학부모 연수 SW교육 연구시범학교 운정초등학교.
Chapter 02. 웹에 대한 이해. Chapter 02. 웹에 대한 이해 웹의 역사 HTTP 웹 애플리케이션 기술.
루틴스(EVA-EDMS)제품소개서 EVA(Enterprise Value Approach_기업자산 가치로서의 접근)
- SW_Desing Study Group -
2009년 IT인재개발원 [연수생 모집요강]
고급자바프로그래밍 (Advanced Java Programming)
Mobile Cloud Messaging Package
Introduction to Servlets
APPEON SOLUTION INTRODUCTION.
Web Service XML Security
Network Lab. Yong bae, Kim
웹 해킹 기초와 실습.
IoT(사물인터넷) 보안 2016년 2학기 3. 라즈베리파이와 node.js.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
Python Bottle Web Framework
Web Programming 강의 소개
10장. 웹 서비스 공격 (Attacking Web Service)
Chapter 01 : Java EE 개요. chapter 01 : Java EE 개요.
Introduction to Web Service Computing
웹 서비스 (Web Services).
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
임베디드 프로그래밍 Lecture #
1강 01장. 웹과 자바.
Chapter 01 : Java EE 개요. chapter 01 : Java EE 개요.
IOC, DI 2015 Web Service Computing.
NTAS 소개 (Network Transaction Application Server)
07장 모바일과 IoT 보안: 유비쿼터스의 진입과 위협
제3장 이클립스 사용하기.
Socket & Plug 기반의 u-Banking Platform
PDA를 이용한 Remote Service Control
Embeded 기초 다지기 2015년 10월 26일 intern Sally
이규철 충남대학교 컴퓨터공학과 IoT & LOD 이규철 충남대학교 컴퓨터공학과
Network Management 김대환 김태훈 김숙흔 이근민.
웹 애플리케이션 개발 프레임워크와 스트러츠 웹 애플리케이션 기술 변천사를 이해한다
웹 서비스 (Web Services).
04장 웹 보안: 웹, 그 무한한 가능성과 함께 성장한 해킹
SOAP 클라이언트 개발 Guide
Eclipse 플러그인을 활용한 자바/JSP 개발.
객체 지향 프로그래밍.
Open API - Naver (Application Programming Interface )
1. 하나투어 프로모션 페이지 수정사항 정리 – 리오타노 이태리 세미극세사 차렵이불_그레이
3. Spring 프레임워크의 IoC 컨테이너 개념
김 정 석 Web Programming 김 정 석
WSDL 의공학과 3학년 김 기 흔.
IoT(사물인터넷) 보안 2016년 2학기 3. 라즈베리파이와 node.js.
NTAS 소개 (Network Transaction Application Server)
SpringFramework 중간고사 요약 REST by SpringFramework.
Stocker Controller System 소개
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
Internet Computing KUT Youn-Hee Han
Internet & WWW Protocols

중등교원 전보시스템 로그인 오류시 해결 해결방안 * 작성일 2016 년 12 월 15일 * 작성자 광주광역시교육청.
JSP와의 첫 만남 간간한 JSP 프로그램을 작성하면서 앞으로 학습에 필요한 과정을 익힌다.
이번 시간에는... 지난 시간까지 제 1장을 통해 모바일의 정의와 개념, 시작과 발전, 기술과 서비스 및 그 전략을 살펴봄으로써 모바일 산업에 대한 전반적인 이해를 쌓았습니다. 이번시간 부터는 제 2장 모바일 기술을 통해, 무선 인터넷을 위한 컨텐츠 제작 기술, 네트워크.
10장 OSI 7 Layer 강원도립대학교 정보통신개론.
최종 사용자 관점의 웹 서비스 성능 관리 SmartSQM Agentless 실시간 전구간 성능 모니터링
Architecture.
홈네트워크 시뮬레이션 중간 보고서 정 찬 번 석 성 환.
1. 하나투어 프로모션 페이지 수정사항 정리 – 인따르시아 여행용 파우치 5p (핑크)
1. 하나투어 프로모션 페이지 수정사항 정리 – [트래블이지] 비비드접이식가방 NO.1278
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Choi Younghwan CSE HUFS
K PaaS-TA 앱 개발.
Presentation transcript:

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

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

IoT Protocols (1) IoT Protocols 개요 https://www.cse.wustl.edu/~jain/cse570-15/ftp/iot_prot.pdf

IoT Protocols (2) IoT Protocols 개요

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

IoT Protocols (4) IoT Protocols 개요 주요 IoT Session Protocols 참고: HTTP / HTTPS CoAP MQTT XMPP AMQP 등 참고: https://www.slideshare.net/paolopat/io-t-protocols- landscape?next_slideshow=1 https://www.slideshare.net/paolopat/mqtt-iot-protocols-comparison

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

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

HTTP Protocol (3) HTTP Protocol 개요

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

HTTP Protocol (5) HTTP Protocol 개요 Request Message

HTTP Protocol (6) HTTP Protocol 개요 Response Message

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

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

HTTP Protocol (9) SOA(Service Oriented Architecture) 웹 서비스(Web Service) : SOA를 통해 공개된 메소드 구현 방법: SOAP(Simple Object Access Protocol) REST(Representational State Transfer) https://www.slideshare.net/cesare.pautasso/rest-vs-soap-making-the- right-architectural-decision-1st-international-soa-symposium- amsterdam-october-2008-presentation

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dio.properties java.policy

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

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

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

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

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

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

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

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

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

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

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