AWS IoT Core 설정 작업과 기본 연동 경험이 필요하다면 IOT(pc연습)을 참조하자.
WIFI Client를 AWS에 연동하기
이 장에서는 AWS IOT연습으로 MQTT 메시지 프로토콜을 사용하고 있는 AWS IOT Core(클라우드서버)와 통신모듈 간에 연동 시험을 할 것이다.
Amazon의 AWS 서버는 MQTT 통신에 있어 인증서에 의한 인증을 요구하고 있다. 이 부분에 대한 준비는 이 전 장에서 잘 준비 했으리라 본다.
No | 절차 | 명령 및 조작 |
1 | 통신모듈을 AP에 연결 | AT+WJAP=SSID, Password\r |
응답 | OK, +WEVNET:STATION UP, ⊕ AP 접속까지 30초 정동의 시간이 소요될 수 있다. | |
2 | 이벤트 푸시(push)기능 설정 | AT+MQTTEVENT=ON\r |
응답 | OK | |
3 | MQTT 사용자이름 및 암호 설정( 이 명령 생략 가능) | AT+MQTTAUTH=User-name,Password\r |
응답 | OK | |
4 | 호스트 및 포트번호 설정 | AT+MQTTSOCK=a1lqshc4oegz64.iot.us-west-2.amazonaws.com,8883\r |
호스트는 어떻게 아나요? | AWS 콘솔 → 사물 → 상호작용 → HTTPS 바로 밑에 적혀진 URL, §관련 설명 참고 | |
응답 | OK | |
5 | MQTT 인증서 검증 사용설정 | AT+MQTTCAVERIFY=ON,ON\r |
응답 | OK | |
6 | 서버 루트인증서 전달 | AT+SSLCERTSET=0\r |
응답 | > | |
7 | 서버 루트인증서 파일내용 보내기 |
(1) 서버 루트인증서 전달 방법은 폴더 /파일 지정 또는 인증서를 테스트 파일에서 열어서 Copy&Paste, (2) 마지막에 “CTRL+Z”의 ASCII의 값 추가 → ⊕ 바로 아래 설명 참조 |
응답 | OK |
⊗ 인증서를 전달 방법
(1) 인증서가 있는 폴더/인증서파일 선택 또는 “>” 응답이 왔을때 txt 파일의 인증서를 Copy&Paste
(2) Ascii Code 로 Ctrl+Z의 값 “0x1A” 를 입력→ 추가된 “CTRL+Z”는 인증서의 일부는 아니다.
Geshe Beacon을 기준으로 전송 방법은 아래와 같다.
⊕ 모듈은 내부적으로 인증서를 전달하고 인증서 내용을 플래시에 저장한다.
8 | 클라이언트 인증서 전달 | AT+SSLCERTSET=1\r |
응답 | > | |
9 | 클라이언트 인증서 파일내용 보내기 | 앞부분에서 인증서 보내는 방법과 동일 |
응답 | OK | |
10 | 클라이언트 Private 암호키 전달 | AT+SSLCERTSET=2\r |
응답 | > | |
11 | 클라이언트 Private 키 파일내용 보내기 | 앞부분에서 인증서 보내는 방법과 동일 |
응답 | OK | |
12 | SSL 암호화 사용 설정 | AT+MQTTSSL=ON\r |
응답 | OK |
13 | 클라이언트 ID 설정 | AT+MQTTCID=EMW3070-N02\r |
클라이언트 ID 정보는 어디에 있나? |
Client ID는 임의로 정할 수 있다 연동하려는 사물의 이름, AWS 콘솔 → 사물 → 여기에 사물 중 연동하려는 사물의 이름, §관련 설명 참고 |
|
응답 | OK | |
14 | MQTT Heartbeat 기간 설정 | AT+MQTTKEEPALIVE=10\r |
응답 | OK | |
15 | MQTT 자동재연결기능 설정 | AT+MQTTRECONN=OFF\r |
응답 | OK | |
16 | MQTT Power-On 자동연결기능 설정 | AT+MQTTAUTOSTART=ON\r |
응답 | OK | |
17 | MQTT 서비스 시작 | AT+MQTTSTART\r |
응답 | OK, +MQTTEVENT:CONNECT,SUCCESS |
이제부터 메시지 교환( PUB/SUB)을 시험해 보자
18 | 주제0(Topic 0) 구독하기 | AT+MQTTSUB=0,$aws/things/myLight/shadow/delete/accepted,1\r |
응답 | OK, +MQTTEVENT:0,SUBSCRIBE,SUCCESS | |
19 | 주제1(Topic 1) 구독하기 | AT+MQTTSUB=1,$aws/things/myLight/shadow/update/delta,0\r |
응답 | OK, +MQTTEVENT:1,SUBSCRIBE,SUCCESS | |
20 | 주제2(Topic 2) 구독하기 | AT+MQTTSUB=2,$aws/things/myLight/shadow/update,0\r |
응답 | OK, +MQTTEVENT:2,SUBSCRIBE,SUCCESS | |
21 | 게시(publishing)할 토픽 설정 | AT+MQTTPUB=$aws/things/myLight/shadow/update,0\r |
응답 | OK | |
22 | 메시지/데이터 게시(publish) | AT+MQTTSEND=6\r → ”>” 응답을 받은 후 → 송신할 데이터 입력, ex) 123456 |
응답 |
+MQTTEVENT:PUBLISH,SUCCESS, 동시에 동일한 주제(topic)을 돌려받는다, +MQTTRECV:2,6,123456 |
|
23 | 주제1 구독(subscription) 취소 | AT+MQTTUNSUB=1\r |
응답 | OK,+MQTTEVENT:1,UNSUBSCRIBE,SUCCESS | |
24 | MQTT 서비스 해제(release) | AT+MQTTCLOSE\r |
응답 | OK, +MQTTEVENT:CLOSE,SUCCESS |