본문 바로가기

AWS IoT

(11)
[AWS LED Button] ESP32 (3) : C언어에서 JSON 문서 분석하기 C언어에서 문자열로 된 JSON 문서를 분석해주는 라이브러리로 cJSON과 jsmn이 있습니다. 전 cJSON을 사용했습니다. cJSON 사용법은 간단합니다. 인스턴스를 가지고 모듈을 초기화할 필요도 없고, (내부에서 malloc 함수가 쓰이긴 하지만)반환 값을 위해 malloc 함수로 따로 공간을 할당할 필요도 없습니다. 먼저 JSON 포맷의 문자열을 cJSON_Parse 함수에 파라미터로 넣어주면, cJSON 타입 체인의 시작 주소를 반환합니다. cJSON 구조체는 다음과 같습니다. /* The cJSON structure: */ typedef struct cJSON { struct cJSON *next,*prev;/* next/prev allow you to walk array/object chai..
[AWS LED Button] ESP32 (2) : MQTT 프로토콜과 정책, JSON 포맷 MQTT 프로토콜 클라이언트와 사물이 통신을 할 땐 항상 AWS IoT를 매개로 MQTT 프로토콜을 사용하여 통신합니다. 이것은 섀도우 접근도 마찬가지 입니다. 통신 주체는 클라이언트와 브로커가 있습니다. 모든 클라이언트는 브로커에 연결되고, 클라이언트끼리는 직접적인 연결이 없습니다. 그리고 모든 데이터는 브로커에 모인 후 필터링되어 다시 적절한 클라이언트들에게 뿌려집니다. 심지어 자기가 보낸 패킷도 조건만 충족되면 다시 돌아옵니다. 모든 데이터는 토픽 단위로 움직입니다. 클라이언트는 데이터를 전송하기 위해 토픽과 이 토픽에 대한 데이터를 브로커에게 발행(Publish)하고, 데이터를 수신하기 위해 브로커로 부터 수신할 토픽을 구독(Subscribe)합니다. 모든 클라이언트는 발행, 구독을 할 수 있습니..
[AWS LED Button] ESP32 (1) : 시스템 흐름 시스템 흐름 ESP32는 AWS IoT에서 생성된 인증서와 개인키를 생성/다운로드한 후 바이너리 파일을 내부 플래시(non-volatile memory)에 저장합니다. AWS IoT에서 인증서를 생성하는 방법은 여기에나와 있습니다. 인증서를 생성하고 나면 -certificate.pem.crt(인증서), -private.pem.key(개인키), -public.pem.key(공용키)를 받을 수 있습니다. 하지만 공용키는 필요 없으니 무시하고, 인증서와 개인키만 다운받아서 파일 이름의 "-" 지운 다음 certs 폴더에 넣으면 컴파일할 때 자동으로 이미지에 삽입됩니다. 사실 개인키와 공용키의 확장자 .crt와 .key는 단순 문자열입니다. 따라서 텍스트 에디터로도 오류없이 내용을 확인할 수 있습니다. 그리고 ..