투케이2K

68. (TWOK/LOGIC) [android] 안드로이드 aws shadow mqtt 수행 publish , subscribe 결과 확인 - get, update, delete 본문

투케이2K 로직정리

68. (TWOK/LOGIC) [android] 안드로이드 aws shadow mqtt 수행 publish , subscribe 결과 확인 - get, update, delete

투케이2K 2024. 8. 26. 10:39

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 aws shadow mqtt 수행 publish , subscribe 결과 확인 - get, update, delete

 

[설 명]

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

[1]. 안드로이드 aws pleet provisioning 플릿 프로비저닝 수행 및 템플릿 등록 요청 , Thing Name 확인 필요

[2]. aws 로 부터 전달 받은 Thing Name 을 사용해 디바이스 awsDeviceMqttManager.connect 수행

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[Get 방식 : aws shadow mqtt 구독 및 publish 과정] : [정보 조회 확인]
// --------------------------------------------------------------------------------------

1. Aws 문서에 정의된 /get/rejected 및 /get/accepted 구독 수행 실시

  >> rejected 구독 완료 된 경우 >> accepted 구독 수행

  >> 구독 문법 : 
      $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/get/accepted
      $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/get/rejected


  >> 문법 예시 : 
      $aws/things/testThing/shadow/name/info/get/accepted
      $aws/things/testThing/shadow/name/info/get/rejected


2. 구독 수행 완료 시 publish 요청 수행 (get 방식 조회에는 publish 수행 시 요청 json 데이터가 없음)

  >> publish 요청 구문 : $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/get

  >> 요청 예시 : awsDeviceMqttManager.publishString("", "$aws/things/testThing/shadow/name/info/get", AWSIotMqttQos.QOS0);


3. Publish 수행 완료 시 >> 구독 된 Accepted 부분에서 onMessageArrived 부분에서 json 데이터 형식 응답 확인

  >> 참고 : json 형식에서 state >> reported 값이 내려와야 기기 >> 정상적으로 응답 값을 올려준 것입니다 (앱 에서는 reported 값 포함 체크 필요)

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[Update 방식 : aws shadow mqtt 구독 및 publish 과정] : [정보 수정 요청]
// --------------------------------------------------------------------------------------

1. Aws 문서에 정의된 /update/rejected 및 /update/accepted 구독 수행 실시

  >> rejected 구독 완료 된 경우 >> accepted 구독 수행

  >> 구독 문법 : 
      $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/update/accepted
      $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/update/rejected


  >> 문법 예시 : 
      $aws/things/testThing/shadow/name/info/update/accepted
      $aws/things/testThing/shadow/name/info/update/rejected


2. 구독 수행 완료 시 publish 요청 수행 (update 방식에는 앱 >> publish 수행 시 요청 json 데이터 수정 요청 명시 필요 : desired)

  >> publish 요청 구문 : $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/update

  >> 요청 예시 : awsDeviceMqttManager.publishString(json, "$aws/things/testThing/shadow/name/info/update", AWSIotMqttQos.QOS0);


{
  "state": {
    "desired": { // [app >> aws : 수정 요청]
      "color": "red",
      "power": "on"
    }
  }
}


3. Publish 수행 완료 시 >> 구독 된 Accepted 부분에서 onMessageArrived 부분에서 json 데이터 형식 응답 확인

  >> 참고 : json 형식에서 state >> reported 값이 내려와야 기기 >> 정상적으로 응답 값을 올려준 것입니다 (앱 에서는 reported 값 포함 체크 필요)


{
  "state": {
    "reported": { // [device >> aws : 수정 완료 응답]
      "color": "red",
      "power": "on"
    }
  }
}


// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[Delete 방식 : aws shadow mqtt 구독 및 publish 과정] : [쉐도우 삭제 요청]
// --------------------------------------------------------------------------------------

1. Aws 문서에 정의된 /delete/rejected 및 /delete/accepted 구독 수행 실시

  >> rejected 구독 완료 된 경우 >> accepted 구독 수행

  >> 구독 문법 : 
      $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/delete/accepted
      $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/delete/rejected


  >> 문법 예시 : 
      $aws/things/testThing/shadow/name/info/delete/accepted
      $aws/things/testThing/shadow/name/info/delete/rejected


2. 구독 수행 완료 시 publish 요청 수행 (delete 방식 조회에는 publish 수행 시 요청 json 데이터가 없음)

  >> publish 요청 구문 : $aws/things/{thingName}/shadow/name/{ShadowTopicPrefix}/delete

  >> 요청 예시 : awsDeviceMqttManager.publishString("", "$aws/things/testThing/shadow/name/info/delete", AWSIotMqttQos.QOS0);

// --------------------------------------------------------------------------------------
 
 

 

반응형
Comments