투케이2K

206. (TWOK/WORK) [업무 이슈] AWS MQTT Shadow 특정 디바이스 하위 기기 페어링 연결이 해제 되어 주기보고가 reported 되지 않는 이슈 본문

투케이2K 업무정리

206. (TWOK/WORK) [업무 이슈] AWS MQTT Shadow 특정 디바이스 하위 기기 페어링 연결이 해제 되어 주기보고가 reported 되지 않는 이슈

투케이2K 2026. 3. 27. 19:44
728x90
반응형

[제 목]

주제 : 투케이2K 업무 정리

타이틀 : 투케이 / 2k / 업무 정리

제목 : [업무 이슈] AWS MQTT Shadow 특정 디바이스 하위 기기 페어링 연결이 해제 되어 주기보고가 reported 되지 않는 이슈

 

[내 용]

------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------

- 제 목 : [업무 이슈] AWS MQTT Shadow 특정 디바이스 하위 기기 페어링 연결이 해제 되어 주기보고가 reported 되지 않는 이슈


- 테스트 환경 : AWS / Iot / MQTT / Shadow / 주기보고


- 사전) 👉 Aws Iot Core 간단 설명 : 

  >> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.

  >> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.

  >> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다. 
  
    - HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.


- 사전) 👉 MQTT (Message Queuing Telemetry Transport) 설명 : 

  >> MQTT 는 경량 메시지 프로토콜로, 주로 IoT(사물인터넷) 환경에서 사용됩니다

  >> MQTT 목적 : 제한된 네트워크 환경(저속, 불안정)에서 효율적으로 메시지를 주고받기 위해 설계

  >> MQTT 기반 : TCP/IP 위에서 동작

  >> MQTT 패턴 : Publish/Subscribe 모델을 사용

    - Publisher : 메시지를 발행하는 클라이언트

    - Subscriber : 특정 주제(topic)를 구독하는 클라이언트

    - Broker: 메시지를 중개하는 서버 (예: Mosquitto)

  >> MQTT 주요 특징 : 

    - 경량성 : 헤더가 매우 작음(2바이트부터 시작)

    - QoS (Quality of Service) : 
      $ QoS 0: 최대 한 번 전달(보장 없음)
      $ QoS 1: 최소 한 번 전달(중복 가능)
      $ QoS 2: 정확히 한 번 전달(가장 안전)

    - 지속 연결 : KeepAlive로 연결 상태 유지

    - Last Will and Testament (LWT) : 클라이언트 비정상 종료 시 브로커가 메시지 발행

    - 토픽 기반 라우팅 : 계층적 구조(/home/temperature 등)

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. AWS IoT Core 에 WIFI 부모 기기 등록 및 지그비 연동 하위 기기 등록 후 MQTT 통신을 사용해 주기보고를 수행하던 중 

   어느 순간 연결 된 하위 기기 페어링 연결이 해제되어 주기보고가 올라오지 않는 이슈


2. 부모 기기와 페어링 연결이 해제 된 하위 기기는 다시 재연결이 되지 못하는 상황으로 다시 기기 재등록이 필요한 상황


3. ✔️ 참고 사항 : 

  >> 해당 이슈는 간헐적으로 발생하는 증상이지만, 딥 슬립모드로 들어간 하위 기기가 못깨어나는 이슈인지 , 실제로 페어링 연결이 해제 된 상황인지 플랫폼에서는 알 수 없는 상황

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. 부모기기 AWS IoT Core 에 등록 후 하위 기기 페어링 연결 후 지속적 주기보고 이벤트 모니터링 수행

  >> ✔️ 간헐적 발생하는 이슈로 다수일간 모니터링 연결 후 주기보고가 올라오는지 로그 데이터 확인 수행


2. 지속 테스트 진행 중 특정 순간 AWS IoT Core 에 하위 기기 주기보고가 더이상 올라오지 않는 것 확인


3. ❌ 디바이스 로그 확인 시 연결 되어 있던 하위 기기가 실제로 페어링 연결이 해제 된 상태 확인

  >> 고객앱에서 확인 시 아직 등록 되어 있는 기기 표시가 살아 있으며, 이벤트 제어 버튼도 활성화 되어 있는 것 확인

------------------------------------------------------------------------------






------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

1. 플랫폼에서는 부모기기에 연결 된 하위 기기가 실제로 페어링이 연결이 해제 된 상태 인지, 딥 슬립모드에서 깨어나지 못하는 상태 인지 확인이 불가한 상태로

   디바이스에게 하위 기기 페어링이 연결이 해제 된 경우 주기 보고 reported 시 특정 dateTime 값 필드를 null 로 전송하도록 로직 변경 요청 수행


2. ✅ 변경 된 주요 로직 사항 : 

  >> 부모 기기에서 특정 하위 기기 페어링 연결이 해제 된 상황 이벤트 감지

  >> 부모 기기는 특정 하위 기기 주기보고 reported 페이로드에서 networkStatus, createTime, keepAliveTime 값을 null 로 전송 수행

  >> AWS 룰엔진 -> 람다 함수 : 하위 기기 주기 보고 검증 부분에서 networkStatus, createTime, keepAliveTime 이 null 로 올라온 경우 페어링 연결이 해제 되었다고 DB 상태값 변경 수행

  >> 고객앱 접속 후 DB 기기 상태 값 페어링 연결이 해제 된 경우 '기기 재등록 필요' 알림 팝업창 표시

------------------------------------------------------------------------------





------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------

[Aws] Iot Core 디바이스 주기보고 (KeepAlive) 에 따른 백엔드 서버 단선 체크 로직 - 버퍼 허용 시간 적용, Retry 체크

https://kkh0977.tistory.com/8578

https://blog.naver.com/kkh0977/224152820786?trackingCode=blog_bloghome_searchlist


[Aws] Aws Iot Core MQTT Shadow 통신 주기적 KeepAlive 주기 보고 reported 수행 및 기기 단선 체크 로직 정리

https://kkh0977.tistory.com/8412

https://blog.naver.com/kkh0977/224082545304?trackingCode=blog_bloghome_searchlist


[Aws Shadow 섀도우 토픽 구독 및 publish 요청 이후 타임아웃 TimeOut 로직 처리]

https://kkh0977.tistory.com/8079

https://blog.naver.com/kkh0977/223906176453?trackingCode=blog_bloghome_searchlist


[Aws Iot Core] Fleet provisioning 플릿 프로비저닝 설명 및 동작 프로세스 정리

https://kkh0977.tistory.com/7439

https://blog.naver.com/kkh0977/223691943757?trackingCode=blog_bloghome_searchlist


[MQTT (Message Queueing Telemetry Transport) 통신 설명]

https://kkh0977.tistory.com/3631

https://blog.naver.com/kkh0977/222971771381?trackingCode=blog_bloghome_searchlist

------------------------------------------------------------------------------
 
728x90
반응형
Comments