-
여러 대의 AWS IoT 디바이스를 연결할 때 확인해야 할 정보AWS IoT 2024. 8. 6. 15:39
AWS IoT SDK로 제작되어 AWS를 통해 공식배포된 esp-aws-iot 오픈소스 프로젝트 (https://github.com/espressif/esp-aws-iot)에 LTE CATM1 내장형 모뎀을 PPP로 연결한 위 프로젝트를 많은 개발자분들이 사용하고 계시는데, 본격적으로 디바이스를 생산해서 대규모 서비스를 시작할 때 확인해야 할 정보를 소개드립니다.
어제 블로그 댓글을 통해 질문받은 내용입니다.지금까지는 1세트로만 이것저것 구현을 하다가
최근 2세트로 하고 있는데
aws iot에 things 2개 생성해서 인증서까지 다 받았는데
A세트가 잘 동작을 하다가 B세트가 붙어 publish를 하는 순간
A세트가 아래와 같은 에러가 발생을 합니다...
이럴 땐 어떤 부분을 체크해봐야 하는지 조언 좀 부탁드립니다.
인증서는 받아서 certs에 넣어서 빌드했고
topic을 다르게도 같이도 해봤는데 B세트가 publish 하는 순간 A가 끊어집니다.
도와주세요~~
E (127603) coreMQTT: Call to receiveSingleIteration failed. Status=MQTTRecvFailed
E (127603) coreMQTT: MQTT_ProcessLoop returned with status = MQTTRecvFailed.
I (127603) coreMQTT: Disconnecting the MQTT connection with a1zcovl13ul9qv-ats.iot.us-east-1.amazonaws.com.
I (127623) coreMQTT: Disconnected from the broker.
I (127623) coreMQTT: Short delay before starting the next iteration....
I (132633) main_task: Returned from app_main()
이전에 AT커맨드 방식으로 AWS-IoT를 연결할 때도 비슷한 질문을 받았던 적이 있어서 새로운 Things을 만들 때 생성된 디바이스 인증서와 개인키로 교체해서 다시 빌드해서 펌웨어 업로드하면 동작될 거라고 답변드렸습니다.
아래와 같은 답변이 다시 달렸습니다.분명히 2개의 사물을 생성하고
각각의 client.crt, private.key를 받아서 vscodeProject/main/certs/client.crt 와 client.key에 넣고 Full clean -> bulild -> flash 했는데도 동일하네요... 두 프로젝트의 client.crt/private.key의 내용을 봐도 상이합니다...
제가 어떤 부분을 놓친 걸까요?
저도 무언가 놓친 것이 있는 것 같아 AWS IoT 사이트로 이동해서 테스트용 사물을 2개 생성했습니다.
먼저 각각 사물의 디바이스 인증서와 개인키를 넣고 AWS-IoT 프로젝트를 빌드해서 동작시켜 보았습니다.
(!) 문제없이 잘 동작되는 것을 확인했습니다.
그렇다면 이제 동시에 연결해서 동작시켜 보았습니다.
아래와 같이 MQTTRecvFailed 에러가 발생했습니다.AWS-IoT MQTT 예제의 경우 AWS-IoT Core에 접속 후 provisioning 후 데이터를 전송하고 연결을 종료하는 루프로 구성되어 있는데, 한쪽의 AWS-IoT 디바이스가 접속되어 있을 때 반대쪽 디바이스가 접속하려고 하면 위와 같은 에러가 발생하며 접속되지 않는 것을 확인했습니다.
관련해서 AWS-IoT example의 SDK 설정에서 아래와 같은 내용을 발견했습니다."이 예제에서 사용된 MQTT 클라이언트 식별자입니다. 각 클라이언트 식별자는 고유해야 하므로 동일한 브로커에 연결하는 두 클라이언트가 동일한 클라이언트 식별자를 사용하지 않도록 필요에 따라 편집하세요."
이런 내용이 있는 것을 확인했습니다. MQTT client를 고유한 이름으로 지정해 주어야 한다는 내용입니다.
이전 AT커맨드 방식의 AWS-IoT 예제와 구현의 차이에 의해 여기서는 필수사항이 되었습니다. (!!)
MQTT client를 각각 client01, client02로 각각 다르게 지정해 주고 각각의 인증서와 개인키를 빌드한 펌웨어를 업로드 후 동작시켰더니 위 문제가 깔끔하게 해결되었습니다.
Murata Type1SC 모듈 구매, 자료 관련 문의
(주)아성코리아
전지만 이사 010-5418-8812 mlcc@asung.com
박상인 수석 010-6556-5405 sipark@asung.com
LTE-CATM1 내장형 모뎀 구매 상담, 외주 개발, 협업 문의
(주)코드주
장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr
'AWS IoT' 카테고리의 다른 글
LTE CATM1 모뎀에서 AWS IoT 모든 기능을 사용할 수 있습니다. (5) 2024.03.31 2023한국전자전 Murata IoT 스마트팜 전시품 제작 (0) 2023.10.09 LTE CATM1 내장형모뎀을 활용한 스마트팜 데모 영상 (0) 2022.06.17 AWS IoT SiteWise Example 오픈소스 업로드 (0) 2022.02.19 LTE-CATM1 내장형 모뎀으로 Unix Timestamp 처리하기 (0) 2022.02.13