라즈베리팡팡

라즈베리 파이의 Node-RED + AWS IoT 본문

전자공작/Raspberry pi

라즈베리 파이의 Node-RED + AWS IoT

절망로정말적 2022. 4. 8. 11:03
라즈베리파이에서 수집한 데이터를 AWS IoT에 연결하는 방법에 대해서 정리한다.
 
준비물들
1.AWS계정 (프리티어

 

2.Raspberry Pi 

 

AWS에서 필요한 작업

1.인증서

먼저 AWS의 콘솔에 로그인합시다. 우측상단 버튼 클릭☝️
로그인후 좌측상단 서비스를 클릭해서, 사물인터넷 서비스 IoT Core를 선택.
 
AWS IoT 서비스로 이동한 뒤,  왼쪽 메뉴에서 인증서를 클릭.
 
다음 화면에서 우측상단의 버튼으로 인증서를 생성.
 
 
원클릭 인증서로 생성한다.
 
 

인증서, 퍼블릭 키, 프라이빗 키를 다운로드하고, 루트CA 다운로드도 필요.
(루트CA의 파일명은 AmazonRootCA1.pem으로 다운로드)
 
 
 
여기까지 다음 파일들이 있는지 확인!! 🔍
 
XXXXXXXXXX-certificate.pem.crt  ⇒ 이 사물의 인증서
XXXXXXXXXX-private.pem.key  ⇒ 개인 키
XXXXXXXXXX-public.pem.key   ⇒ 공개 키
AmazonRootCA1.pem  ⇒ 루트CA
 
 
파일 확인후, 활성화 버튼을 클릭하고 정책 연결.
 

 

2.정책 연결

처음에는 새 정책 만들기 를 클릭.
이름은 임의의 이름을 기입하고, 작업에 iot : * 리소스는 ARN은 * 로 입력.
 
 
 
정책을 만든 후에, 방금 만든 인증서를 열고 화면 오른쪽 상단의 작업 탭에서 정책의 연결을 선택.



방금 생성한 정책을 선택하고, 마지막에 연결을 클릭.
 
 
 
 

3.MQTT 송신처 확인

AWS IoT의 왼쪽 메뉴에서 설정 을 클릭합니다. 다음과 같이 엔드포인트 (MQTT 데이터를 보내는 곳)을 확인할 수 있다.
 


이걸로 AWS의 설정은 완료. 
 
 

 

 

Raspberry Pi 에서 할 일

Node-RED를 이용해서 aws로 전송하기 위해서 라즈베리파이에서 아래의 작업을 순서대로 따라간다.
데이터는 라즈베리와 연결된 아두이노의 온습도데이터를 사용했다(센서:bme280) 
 

1.Node-RED 실행

Raspbian OS를 사용하면 Node-RED가 기본적으로 설치되어 있다. 터미널에서 다음 명령을 실행해
sudo systemctl enable nodered.service
sudo systemctl start nodered
 
다음 URL을 브라우저에서 엽니다.
 
http://라즈베리파이IP:1880
 
 

2.Node-RED에서 flow 작성

Node-RED에서 AWS에 전송하기위해 필요한 노드는 2개.
 
오른쪽 상단 배포하기 옆 세줄 버튼을 클릭후, 팔렛트 관리.
 
 
설치가능한 노드에서 serialport를 검색하면 node-red-node-serialport가 있다. 인스톨하자.
설치가 완료된후 node-red화면 왼쪽에서 설치된 노드들을 확인하면, network부분에서 mqtt out노드와 serial in노드가 보인다. 
 
mqtt out노드와 serial in노드를 드래그해서 플로우로 이동시키고, 다음과 같이 두 노드를 연결.


2.노드 설정

각 노드의 설정을 수정 해주어야 한다. 먼저 serial노드 부터 수정 한다.
serial노드를 더블클릭후 연필아이콘을 클릭.
 
 
돋보기 아이콘에서 현재 라즈베리파이에 연결되어 있는 아두이노 포트를 찾는다.
settings부분에서는 baud rate를 9600으로 설정하고, 나머지 설정은 기본 값으로 둠.
마지막으로 추가(변경)버튼-완료버튼 순으로 클릭함으로 serial노드의 설정은 끝.
 
 
다음은 serial노드와 마친가지로 mqtt out노드를 더블클릭 해 수정한다.
먼저 토픽명(임의)을 입력해주고 서버란의 오른쪽 연필 아이콘을 클릭해서 고급설정을 수정.

서버란에는 위의 AWS IoT에서 확인한 mqtt송신처의 엔드포인트 주소를 적는다.
나머지 설정은 아래과 같이 하고서, TLS설정 옆의 연필아이콘을 클릭.


인증서는 방금 다운로드 한 XXXXXXXXXX-certificate.pem.crt 파일을 설정한다.
개인 키는 XXXXXXXXXX-private.pem.key 를 사용, CA인증서는 AmazonRootCA1.pem 을 설정해주세요.
 
여기까지 설정이 완료되었다면 우측 상단의 배포하기(deploy)를 클릭.
문제가 없다면 다음과 같이 mqtt out노드 아래에 접속됨이란 문자가 표시된다.
 
라즈베리파이에서 설정도 끝.
 
 
 

동작확인

AWS IoT의 메뉴에서 테스트를 선택한다.
 
다음 화면이 표시되면 주제란에는 이전에 설정 한 토픽명을 입력.
그 다음 구독버튼을 클릭한다.


AWS IoT의 화면을 보면 다음과 같이 Raspberry Pi에서 송신한 데이터를 3초 간격으로 수신하고 있는 모습을 확인할 수 있다. (데이터가 json형식이 아니므로 오류메제시가 출력.)

 
이번에는 AWS IoT에 라즈베리파이를 등록하고 센서 데이터를 전송하는 부분까지 확인 했다.
다음은 데이터를 저장하고 가시화하는 방법에 대해서 정리해보자.