본문 바로가기

05_Toolkit/AWS_IoT

Ex2. ② SENSOR 추가 및 제어



Ex2. ② SENSOR 추가 및 제어

( 태그 : AWS_IoT_FreeRTOS, AWS_IoT )


1. 온도 Sensor Node 추가

  • CubeMonitor의 작업 공간에 STM32 MCU 보드의 온도 Sensor 데이터를 수신하는 node를 추가 합니다.
  • CubeMonitor의 Pallete에서 function node를 작업 공간으로 drag하여 추가 합니다.


  • MQTT 수신 데이터를 Relay하는 json function node의 출력을 추가한 function node의 입력으로 연결합니다.


  • 추가한 function node를 더블 클릭하여 속성 편집 창을 활성화 합니다.
  • Name 항목에 temperature를 입력 합니다.


  • Function 항목에 MQTT message의 Temperature 값을 가져오는 코드를 입력합니다.
msg.payload = msg.payload.Temp
return msg;
  • Done 버튼을 눌러 편집을 완료 합니다. 온도 Sensor node 추가가 완료 되었습니다.


2. Dashboard에 온도 Sensor 추가

  • CubeMonitor의 Pallete에서 dashboard의 gauge를 작업 공간으로 drag하여 가져옵니다.


  • 추가된 gauge의 입력을 온도 Sensor node의 출력과 연결시킵니다.


  • gauge를 더블 클릭하여 속성 편집 창을 표시합니다.
  • Group 항목은 [STM32 IOT Discovery Board] ENVIRONMENT SENSOR DATA를 선택합니다.


  • Label에는 temperature를 입력합니다.
  • Unit은 degC를 입력합니다.
  • Range의 최대값을 50으로 변경합니다.
  • Done 버튼을 클릭하여 편집을 완료합니다.


  • DEPLOY 버튼을 클릭하여 추가된 gauge를 반영합니다.


  • DASHBOARD 버튼을 클릭하면 Temperature gauge가 추가된 것을 확인할 수 있습니다.  

3. Dashboard에서 LED 제어

3-1. IoT Shadow 생성

  • AWS IoT 콘솔의 Things 메뉴에서 Shadows를 선택한 후 Add a shadow를 클릭하여 추가합니다.


  • shadow name을 입력한 후 Add 버튼을 클릭합니다.


  • Things 메뉴에서 추가된 Shadow를 확인할 수 있습니다.


3-2. STM32 CubeMonitor의 Shadow 설정

  • CubeMonitor 작업 파일에 구성되어 있는 Shadow node를 생성한 IoT Shadow 설정으로 변경합니다.
  • LED CONTROL은 Dashboard의 switch node 입니다. Dashboard의 toggle switch UI에 연결되어 있습니다.
  • LED CONTROL은 MQTT out node에 연결 되어 있습니다. MQTT out node는 AWS IoT MQTT broker로 메시지를 publish 합니다.


  • LED CONTROL node와 연결된 Shadow node를 더블 클릭하여 속성을 편집 합니다.
  • Server 편집 버튼을 클릭하여 속성을 변경 합니다.


  • Name에 AP-NORTHEAST-2를 입력합니다.
  • Server 항목에 AWS IoT의 MQTT Broker endpoint 주소를 입력합니다.
  • 입력 후 Update 버튼을 클릭하여 업데이트 합니다.


  • Topic에 IoT Shadow Topic을 입력합니다.
    • Topic : $aws/things/Iot-stm-sensor-nodeA/shadow/update
    • IoT Shadow를 통해 Iot-stm-sensor-nodeA의 상태 업데이트 Topic 입니다.
  • Done 버튼을 클릭하여 수정 사항을 업데이트 한 후 DEPLOY 버튼을 클릭하여 변경 내용을 반영합니다.


  • LED Control node를 클릭하여 속성 창을 표시합니다.
  • Topic에 IoT Shadow Topic을 입력합니다.
    • Topic : $aws/things/Iot-stm-sensor-nodeA/shadow/update
  • 속성 창의 On Payload의 상세 내용을 확인 합니다.


  • Payload에 desired field를 생성하여 값을 update 하도록 합니다.
  • On Payload는 powerON 값을 1로 설정하고 Off Payload는 powerON 값을 0으로 설정합니다.


  • DASHBOARD를 선택하여 LED CONTROL을 toggle 하여 제어 할 수 있습니다.


  • LED CONTROL을 on/off 로 toggle 하면 ST-Link connector 옆의 녹색 LED가 on/off 되는 것을 확인할 수 있습니다.
  • CubeMonitor 작업 공간의 LED CONTROL node 값도 on/off 되는 것을 확인할 수 있습니다.


3-3. STM32 MCU 보드 동작

  • Dashboard의 LED Switch를 toggle 할 때 MCU 보드의 로그 입니다.
.162 64469 [iot_thread] [INFO ][ST-L475E-MAIN][64469] Shadow was updated!
Previous: {"state":{"desired":{"welcome":"aws-iot","powerOn":0},"reported":{"welcome":"aws-iot","powerOn":0}}}
Current:  {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":0}}}
163 64510 [iot_thread] [INFO ][ST-L475E-MAIN][64510] Iot-stm-sensor-nodeA changing state from 0 to 1.
164 64520 [iot_thread] [INFO ][MQTT][64520] (MQTT connection 0x20045250) SUBSCRIBE operation scheduled.
165 64530 [iot_thread] [INFO ][MQTT][64530] (MQTT connection 0x20045250, SUBSCRIBE operation 0x20046118) Waiting for operation completion.
166 64590 [iot_thread] [INFO ][MQTT][64590] (MQTT connection 0x20045250, SUBSCRIBE operation 0x20046118) Wait complete with result SUCCESS.
167 64603 [iot_thread] [INFO ][MQTT][64603] (MQTT connection 0x20045250) SUBSCRIBE operation scheduled.
168 64613 [iot_thread] [INFO ][MQTT][64613] (MQTT connection 0x20045250, SUBSCRIBE operation 0x20046118) Waiting for operation completion.
169 64676 [iot_thread] [INFO ][MQTT][64676] (MQTT connection 0x20045250, SUBSCRIBE operation 0x20046118) Wait complete with result SUCCESS.
170 64689 [iot_thread] [INFO ][MQTT][64689] (MQTT connection 0x20045250) MQTT PUBLISH operation queued.
171 64699 [iot_thread] [INFO ][ST-L475E-MAIN][64699] Iot-stm-sensor-nodeA sent new state report.
172 64786 [iot_thread] [INFO ][ST-L475E-MAIN][64785] Shadow was updated!
Previous: {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":0}}}
Current:  {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":1}}}
173 64827 [iot_thread] [INFO ][Shadow][64827] Shadow UPDATE of Iot-stm-sensor-nodeA was ACCEPTED.
.174 66250 [iot_thread] [INFO ][ST-L475E-MAIN][66249] Shadow was updated!
Previous: {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":1}}}
Current:  {"state":{"desired":{"welcome":"aws-iot","powerOn":0},"reported":{"welcome":"aws-iot","powerOn":1}}}
175 66290 [iot_thread] [INFO ][ST-L475E-MAIN][66290] Iot-stm-sensor-nodeA changing state from 1 to 0.
176 66299 [iot_thread] [INFO ][MQTT][66299] (MQTT connection 0x20045250) MQTT PUBLISH operation queued.
177 66310 [iot_thread] [INFO ][ST-L475E-MAIN][66310] Iot-stm-sensor-nodeA sent new state report.

  • LED off 상태에서 Dashboard Switch를 on 시켜 LED on message가 전송 되었습니다.
  • LED Previous state {desired : 0, reported : 0} 에서 Current state가 {desired : 1, reported : 0}로 변경 되었습니다.

    • desired 값은 update 하고자 하는 값이고 reported 값은 디바이스가 IoT Shadow에 공유한 상태 값 입니다.
    • MCU 보드의 LED가 off 였기 때문에 reported 값은 0이고 desired 값은 Dashboard에서 on 으로 변경하였기 때문에 1 입니다.

      Previous: {"state":{"desired":{"welcome":"aws-iot","powerOn":0},"reported":{"welcome":"aws-iot","powerOn":0}}}
      Current:  {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":0}}}
      
      • MCU 보드가 LED를 on 시킨 후 Shadow report를 보내면서 Current의 reported 값을 1로 변경합니다. bash 163 64510 [iot_thread] [INFO ][ST-L475E-MAIN][64510] Iot-stm-sensor-nodeA changing state from 0 to 1. 171 64699 [iot_thread] [INFO ][ST-L475E-MAIN][64699] Iot-stm-sensor-nodeA sent new state report. Previous: {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":0}}} Current: {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":1}}} .174 66250 [iot_thread] [INFO ][ST-L475E-MAIN][66249] Shadow was updated! 
  • 바로 Dashboard에서 Switch를 off 시키면서 LED Previous state {desired : 1, reported : 1} 에서 Current state를 {desired : 0, reported : 1} 가 되었습니다.

.174 66250 [iot_thread] [INFO ][ST-L475E-MAIN][66249] Shadow was updated!
Previous: {"state":{"desired":{"welcome":"aws-iot","powerOn":1},"reported":{"welcome":"aws-iot","powerOn":1}}}
Current:  {"state":{"desired":{"welcome":"aws-iot","powerOn":0},"reported":{"welcome":"aws-iot","powerOn":1}}}
175 66290 [iot_thread] [INFO ][ST-L475E-MAIN][66290] Iot-stm-sensor-nodeA changing state from 1 to 0.




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' 카테고리의 다른 글

Ex3. ① OTA FW IMAGE 생성  (0) 2020.11.26
Ex3. OTA FIRMWARE UPDATE  (0) 2020.11.26
Ex2. ① SENSOR DASHBOARD  (0) 2020.11.26
Ex2. ADDING TEMPERATURE & LED CONTROL  (0) 2020.11.26
Ex1. ⑤ SENSOR DATA PUBLISH  (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