brunch

You can make anything
by writing

C.S.Lewis

by Master Seo May 23. 2020

360. IoT Application 배포법 이해

목표

1. IoT  구축에서  배포까지 한번 해보자.

2. APIGW , Lambda , DynamoDB테이블 구성해 보자.

3. S3에 홈페이지를 올려 결과를 확인하자.









<0> 용어 정의

<1> 사물 생성

<2> Policy 확인

<3>  IOT  시뮬레이터인 EC2 접속 

<4> 정책 적용 과  사물에 IoT 인증적용

<5>  Iot 장치  시뮬레이터 실행

<6> IoT  Rule , Action

<7>  MQTT 클라이언트 이용해 디바이스 메시지 기

<8>  데이터 처리와 시각화 

<9>  API  테스트

<10>  배포와  실시간 데시보드

q-x , r-x



<0> 용어 정의

1. Thing  : Iot device

2. Policy : 정책

3. Cetificates : 인증서

4. Rule :   사물에서  IoT 로 보내짐




<1> 사물 생성


1. 

Service > IoT Core > Manage > things  >  register a thing > Create single thing > Name :  

ra5

> Next  >  인증서 없이 생성하기  클릭


2

 Manage > things >  ra5 클릭

interact  >    HTTPS      API endpoint  에디터로 복사


형식 )  a1h7yxxxxxxxxxxx-ats.iot.us-west-2.amazonaws.com



<2>  Policy 확인만 하기 

Secure  > Policy  




<3>  IOT  시뮬레이터인 EC2 접속 

EC2 > 공인 IP 확인 > 접속 




<4> 인증서에  정책과 사물 적용하기


1. 파일 확인

인증키,   Private pem 키 , root  키 3개가 있어야 한다.


$ ls ~/certs

certificate.pem.crt  

private.pem.key  

root-ca.pem


2.  인증서에 정책 적용하기 

Services > Iot Core  >  Secure > Certificaties  > xxxxxxxxx*****  >  Attatch Policy (정책 연결) > 체크 >  Attatch


3. 인증서에 사물 연결하기

Secure > Certificaties   >  xxxxxxxxxx*****   > Attatch thing  (사물 연결)  >  체크 >  Attatch 




<5>  Iot 장치  시뮬레이터 실행


1.   

EC2  서버에서   HTTPS 엔드포인트를 수정해준다.


[ec2-user@ip-10-0-0-56 ~]$ vi  settings.py

"""

Modify these values to match your configuration

"""

# AWS IoT endpoint settings

HOST_NAME = "afcwky73pnbmp-ats.iot.us-west-2.amazonaws.com" # replace with your AWS IoT endpoint for your region

HOST_PORT = 8883 # leave this as-is

# thing certs & keys

PRIVATE_KEY = "certs/private.pem.key" # replace with your private key name

DEVICE_CERT = "certs/certificate.pem.crt" # replace with your certificate name

ROOT_CERT = "certs/root-ca.pem"

# device & message settings

BATTERY_DISCHARGE_RANGE = (1, 3) # tuple that stores the possible discharge rates of the battery

# RANDOM_INTEGER_RANGE = (1,10) # tuple that stores the possible range of your sensor reading

QOS_LEVEL = 0 # AWS IoT supports QoS levels 0 & 1 for MQTT sessions

[ec2-user@ip-10-0-0-56 ~]$



2.  실행

$  python app.py &


IOT코어로 데이터가 가는것을 볼수 있다.




<6> IoT  Rule 과   Action 생성


1

Act  > Rules > Create a rule


2

Name :  

gsRecharge


3

Rule query statment :

SELECT * FROM 'device/+/devicePayload' WHERE batteryCharge <=0


4

Set one or more actions  > add action

Repulid a message to an AWS IoT topic 

5

Topic : 

device/${topic(2)}/rechargeAlert


6

Choose or create a role to grant AWS IoT access to perform this action

Selete

AwsiotRepublisRole


7

Add action 


8

Create rule




<7>  MQTT 클라이언트 이용해 디바이스 메시지 보기


1. 

Act > Test


2

subscription topic  : #


성공적이라면 아래처럼 데이터가 나온다.




3

Subscribe to topic

#    x눌러서 

delete  한다.



다른 내용을 확인한다.

4

Subscription topic

device/+/rechargeAlert


아래처럼 데이터가 나옴 





5. 왼쪽 맨위  Monitor 메뉴 


확인

새로 고침 





<8>  데이터 처리와 시각화 


1

Act > Rules >  Create a rule  >  Name:  

IoTToDynamo


2

Rule query statement

SELECT * FROM 'device/+/devicePayload'


3

Set one or more actions

Add action

insert a message into a DynamoDB table  선택

Configure action


4

table name :

GSDynamoTimeSeries


Partition key value

${topic(2)}


Sort key value

${timeStampEpoch}


IAM Role 선택 // Role 필요.

AwsIotToDynamoRole




4

Add action

Insert a message into a DynamoDB table


Table name 선택 >  GSDynamoDeviceStatus


Partition key value

${topic(2)}


IAM 역할

AwsIotToDynamoRole



> Create  Rule




<9>  APIGW 확인


API Gateway  >  API 이름 >  왼쪽 Stages  >  prod >   Invoke URL   클릭해 데이터가 있는지 확인.



APIGW END Point 복사 해 두세요 !!

https://px81dx8big.execute-api.us-west-2.amazonaws.com/prod



<10>  배포와  실시간 데시보드


1

$  cd  dashboard

$   vi   app.js

복사해둔  APIGW  END Point로  변경



S3에 정적 웹사이트 호스팅 설정


services

s3

bucket


3

데시보드에 있는것을  S3에 올리기

aws s3 sync ~/dashboard s3://BUCKET

aws s3 sync ~/dashboard s3://qls-15495490-35aff429b0581ee8-iotgss3bucket-1dwvv3u00y3sn




website

S3 버킷 Endpoint로 접속 하기




감사합니다.



209. AWS IoT 시작 하기  https://brunch.co.kr/@topasvga/845

359. IoT 시작하기  https://brunch.co.kr/@topasvga/1146

360. IoT 테스트 해보기 https://brunch.co.kr/@topasvga/1147


 감사합니다.




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari