본문 바로가기

05_Toolkit/AWS_IoT

Ex1. ④ AWS IOT CORE 연결


Ex1. ④ AWS IOT CORE 연결

( 태그 : AWS_IoT_FreeRTOS, AWS_IoT )


1. AWS IoT Thing 등록

1-1. IoT Thing 생성

  • AWS Console에 Login 한 후 AWS IoT Core 콘솔로 이동합니다. 오른쪽 Side Menu에서 Manage를 선택 합니다.


  • Things 항목을 선택하고 Register a thing을 클릭하여 디바이스 생성 메뉴에 진입합니다. 


  • Create a single thing을 선택 하여 생성을 시작합니다.

  • Thing의 이름을 입력합니다. 예를 들면 iot-stm-sensor-nodeA라고 입력할 수 있습니다.

  • 필요에 따라 Device Type을 생성하고 Group을 생성하여 관리할 수 있습니다. 이번 실습에서는 생성하지 않습니다.

  • Next를 선택한 후 다음 단계로 이동합니다. 


  • Certificate을 생성 또는 등록하는 단계 입니다.

  • 이전 단계의 Terminal 로그에서 복사한 STSAFE-A110의 device certificate을 사용해야 합니다.

  • Create thing without certificate을 선택하여 certificate을 등록하지 않고 thing 생성을 마무리 합니다.


  • 생성이 완료되면 List에서 Thing을 확인할 수 있습니다. 


  • 생성된 Thing의 이름을 선택하면 다음과 같이 상세 항목들을 볼 수 있습니다.


1-2. Policy 생성

  • 오른쪽 Side Menu에서 Secure를 선택한 후 Policies를 선택합니다. Create a policy를 선택하여 정책 생성을 시작합니다.


  • Policy 이름을 입력합니다. 예를 들면 policy-stm32-iot-node라고 입력할 수 있습니다.

  • Add statements의 Advance mode를 클릭하여 정책 입력 editor를 활성화 합니다.


  • 정책 입력 editor가 활성화 됩니다. 


  • IoT 서비스의 모든 리소스에 대한 Action을 허용합니다.

    • 허용 Action : Connect, Publish, Subscribe, Receive
    • 아래의 정책을 복사하여 editor에 입력 합니다.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "*"
    },    
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "*"
    }
  ]
}
  • 정책을 붙여 넣은 후 Create를 클릭하여 생성을 완료합니다. 


  • 다음과 같이 생성된 정책을 확인할 수 있습니다. 


1-3. Private Certficate 등록

  • 오른쪽 Side Menu에서 Secure를 선택한 후 Create a Certificates를 선택합니다. 


  • STM32 MCU에서 가져온 Certificate을 사용해야 하므로 Use my certificate의 Get started를 선택합니다. 


  • Next를 클릭한 후 다음 단계를 넘어갑니다. 


  • Select certificates를 클릭하여 STM32 MCU에서 가져온 Certiifcate을 선택합니다.


  • Activate all을 선택한 후 Register certificate을 눌러 등록을 완료합니다. 


  • 다음과 같이 등록된 Certificate을 확인할 수 있습니다. 


1-4. Thing에 Certificate 연결

  • 등록된 certificate의 왼쪽에 있는 … 아이콘을 클릭합니다.
  • Menu List에서 Attach thing을 선택합니다. 


  • Pop-up 된 thing 선택 창에서 생성한 thing을 선택한 후 Attach 버튼을 클릭합니다. 


  • 등록된 certificate의 왼쪽에 있는 … 아이콘을 클릭합니다.

  • Menu List에서 Attach policy를 선택합니다. 


  • Pop-up 된 policy 선택 창에서 생성한 policy를 선택한 후 Attach 버튼을 클릭합니다. 


  • 오른쪽의 Manage 메뉴의 Things 를 선택한 후 표시되는 Thing을 선택합니다.

  • Thing의 상세 항목 중 Security를 선택하면 연결 된 Certificate 정보가 표시됩니다. 


  • 연결된 Certificate을 선택하면 상세 정보가 표시됩니다.

    • STM의 인증서 정보가 정상적으로 나온것을 확인할 수 있습니다. 

  • 세부 정보 중 Policies를 선택하면 연결된 정책을 볼 수 있습니다. 


  • Policy를 선택하면 상세 정책을 확인할 수 있습니다.

  • 서비스 정책 변경이 필요하면 Edit policy document 를 선택하여 변경할 수 있습니다. 


2. Device를 AWS IoT Core에 연결

2-1. WiFi 연결 설정

  • WiFi 연결을 설정합니다.
    • STM32CubeExpansion_Cloud_AWS_V2.0.0/Middlewares/Third_Party/amazon-freertos/demos/include/aws_clientcredential.h
    • STM32 CubeIDE에서 B-L4S5I-IOT01_aws_dems project를 선택한 후 includes의 ‘amazon-freertos/demos/include’를 확장한 후 aws_clientcredential.h 파일을 선택합니다.
    • File 속성이 읽기 모드로 되어 있는 경우 쓰기가 가능하도록 변경합니다.


  • 파일 속성을 쓰기 가능 모드로 변경 합니다.
  • 접속할 WiFI 공유기의 SSID와 비밀 번호를 설정합니다.
/*
 * @brief Wi-Fi network to join.
 *
 * @todo If you are using Wi-Fi, set this to your network name.
 */
#define clientcredentialWIFI_SSID                    "xxxx"

/*
 * @brief Password needed to join Wi-Fi network.
 * @todo If you are using WPA, set this to your network password.
 */
#define clientcredentialWIFI_PASSWORD                "xxxx"

2-2. MCU보드 MQTT Clinet 설정

  • B-L4S5I-IOT01_aws_demos 프로젝트에 AWS IoT Core의 MQTT Broker 정보를 등록해야 합니다.
  • AWS IoT 콘솔에서 MQTT Endpoint와 생성한 Thing의 이름을 가져옵니다.

  • MQTT Endpoint를 AWS IoT 콘솔에서 확인합니다.

    • AWS IoT 콘솔의 Side Menu에서 Setting 항목을 선택합니다.
    • Custom endpoint로 MQTT 메시지를 publish/subcribe 할 수 있습니다. Custom endpoint를 복사합니다.


  • AWS IoT 콘솔의 Manage 메뉴에서 Things를 선택한 후 Things Name을 복사합니다.


  • STM32 CubeIDE에서 includes의 ‘amazon-freertos/demos/include’를 확장한 후 aws_clientcredential.h 파일을 선택합니다.


  • 복사한 Custom endpoint를 clientcredentialMQTT_BROKER_ENDPOINT에 입력 합니다.

/*
 * @brief MQTT Broker endpoint.
 *
 * @todo Set this to the fully-qualified DNS name of your MQTT broker.
 */
#define clientcredentialMQTT_BROKER_ENDPOINT         "a3mrkcguk6khw6-ats.iot.ap-northeast-2.amazonaws.com"
  • 복사한 Thing의 이름을 clientcredentialIOT_THING_NAME에 입력합니다.
/*
 * @brief Host name.
 *
 * @todo Set this to the unique name of your IoT Thing.
 */
#define clientcredentialIOT_THING_NAME               "iot-stm-sensor-nodeA"

2-3. Project Build & Programming

  • B-L4S5I-IOT01_aws_demos 프로젝트를 재 build한 후 생성된 binary image를 STM32 MCU 보드에 programming 합니다.
  • B-L4S5I-IOT01_aws_demos.bin 파일이 저장되는 위치는 ‘STM32CubeExpansion_Cloud_AWS_V2.0.0/Projects/B-L4S5I-IOT01A/Applications/Cloud/aws_demos/STM32CubeIDE/PostBuild/’ 입니다.


  • MCU 보드 재 부팅 후 AWS IoT Core의 MQTT Broker에 연결되는 것을 확인 할 수 있습니다. (MQTT connection established)
  • MQTT Broker가 연결되면 iotdemo/topic 으로 테스트 메시지를 publish 하는 것을 확인할 수 있습니다.
4 3712 [Tmr Svc] WiFi connected to AP andyhouse.
5 3716 [Tmr Svc] IP Address acquired 192.168.0.120
6 3721 [iot_thread] [INFO ][DEMO][3721] ---------STARTING DEMO---------

7 3728 [iot_thread] [INFO ][INIT][3728] SDK successfully initialized.
..8 7327 [iot_thread] [INFO ][DEMO][7327] Successfully initialized the demo. Network type for the demo: 1
9 7336 [iot_thread] [INFO ][MQTT][7336] MQTT library successfully initialized.
10 7343 [iot_thread] [INFO ][DEMO][7343] MQTT demo client identifier is Iot-stm-sensor-nodeA (length 20).
..11 11970 [iot_thread] [INFO ][MQTT][11970] Establishing new MQTT connection.
12 11978 [iot_thread] [INFO ][MQTT][11977] Anonymous metrics (SDK language, SDK version) will be provided to AWS IoT. Recompile with AWS_IOT_MQTT_ENABLE_METRICS set to 0 to disable.
13 11995 [iot_thread] [INFO ][MQTT][11995] (MQTT connection 0x20044920, CONNECT operation 0x20044aa8) Waiting for operation completion.
.14 12117 [iot_thread] [INFO ][MQTT][12116] (MQTT connection 0x20044920, CONNECT operation 0x20044aa8) Wait complete with result SUCCESS.
15 12129 [iot_thread] [INFO ][MQTT][12129] New MQTT connection 0x2004307c established.
16 12138 [iot_thread] [INFO ][MQTT][12138] (MQTT connection 0x20044920) SUBSCRIBE operation scheduled.
17 12148 [iot_thread] [INFO ][MQTT][12148] (MQTT connection 0x20044920, SUBSCRIBE operation 0x20044ac8) Waiting for operation completion.
18 12229 [iot_thread] [INFO ][MQTT][12228] (MQTT connection 0x20044920, SUBSCRIBE operation 0x20044ac8) Wait complete with result SUCCESS.
19 12241 [iot_thread] [INFO ][DEMO][12241] All demo topic filter subscriptions accepted.
20 12250 [iot_thread] [INFO ][DEMO][12249] Publishing messages 0 to 1.
21 12257 [iot_thread] [INFO ][MQTT][12257] (MQTT connection 0x20044920) MQTT PUBLISH operation queued.
22 12267 [iot_thread] [INFO ][MQTT][12267] (MQTT connection 0x20044920) MQTT PUBLISH operation queued.
23 12277 [iot_thread] [INFO ][DEMO][12277] Waiting for 2 publishes to be received.
24 12296 [iot_thread] [INFO ][DEMO][12295] MQTT PUBLISH 0 successfully sent.
25 12312 [iot_thread] [INFO ][DEMO][12311] MQTT PUBLISH 1 successfully sent.
26 12370 [iot_thread] [INFO ][DEMO][12370] Incoming PUBLISH received:
Subscription topic filter: iotdemo/topic/1
Publish topic name: iotdemo/topic/1
Publish retain flag: 0
Publish QoS: 1
Publish payload: Hello world 0!

TLS Communication Flow

  • STM32 MCU 보드와 AWS 간의 TLS 통신은 다음과 같은 절차에 의해 설정 됩니다.



  




Credits


Korean version   

Jongwoo Lee (rainny@)

Sejun Kim (sejun@)

Albert Lee (sehyul@)


Original Contents Author

Vanitha Ramaswami (rvanitha@)


© 2020 Amazon Web Services, Inc. or its Affiliates. All rights reserved.                                           

메이커스페이스 G·캠프에서 만든 콘텐츠가 아니며, 서울하드웨어해커톤에서 강의가 진행될 예정입니다.   

https://master.d2s409snhlt74e.amplifyapp.com/                                                                         

'05_Toolkit > AWS_IoT' 카테고리의 다른 글

Ex2. ADDING TEMPERATURE & LED CONTROL  (0) 2020.11.26
Ex1. ⑤ SENSOR DATA PUBLISH  (0) 2020.11.26
Ex1. ③ AWS IOT APPLICATION  (0) 2020.11.26
Ex1. ② STM SECURE BOOT  (0) 2020.11.26
Ex1. ① STSAFE PROVISIOING  (0) 2020.11.26

 
90, Digital-ro 9-gil, Geumcheon-gu, Seoul, Republic of Korea
https://seoulhackathon.tistory.com/   
mail: 12000@12000.co Tel : +82-2-2135-5280
Copyright 2021 by Seoul Businsss Agency. All Rights Reserved. (Powered by Tistory)
Hackathon | Recent Articles +more
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Hackathon | News +more
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Hackathon | Schedule +more
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Hackathon | Workshops    more
Hackathon | Toolkit    more
Hackathon | Video Tutorial    more
Hackathon | Hackathon +more
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Hackathon | Others +more
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Previous Hackathon    more

programs run by :

90, Digital-ro 9-gil, Geumcheon-gu, Seoul, Republic of Korea https://seoulhackathon.tistory.com
mail: 12000@12000.co Tel : +82-2-2135-5280