RaspberryPi와 AWS IoT Core에서 MQTT 통신을 시도했습니다.

어쨌든 AWS IoT와 RaspberryPi를 MQTT 통신하고 싶습니다. 라는 분에게 작업 내용만을 정리했습니다.



먼저 전체 작업 내용을 설명합니다. 크게 작업은 3개입니다.
1. AWS IoT에 RaspberryPi 등록
- 인증서 취득
- 정책 추가
2. RaspberryPi 프로그램 작성
3. 통신 테스트

이상입니다. 이번에는 AWS IoT 측이 데이터 전송 측입니다. RaspberryPi는 수신자.

AWS IoT에 RaspberryPi 등록



AWS 웹 페이지 ⇨ 콘솔에 로그인 ⇨ 서비스 ⇨ IoTCore

관리 → 사물 → 만들기 갑니다.


단일 사물 등록


물건의 이름을 등록(다른 항목은 자유롭게. 미기입이라도 괜찮습니다)


인증서를 얻습니다.




다운로드(사물 인증서, 공개 키, 개인 키, 루트 CA)


정책 설정



보안 기능 중 하나, 정책을 설정합니다. 정책은 작업이나 AWS의 데이터베이스와 같은 다른 리소스 액세스를 결정하는 것입니다.
아래 사진과 같이 작업 및 리소스를 설정합니다.


인증서 페이지에서 - 정책
연결을 수행하여 위에서 만든 정책을 연결합니다.


RaspberryPi 프로그램을 만듭니다.



MQTT 클라이언트는 paho mqtt을 사용합니다.
RaspberryPi에 들어가서 pip를 사용하여 paho mqtt를 넣습니다.
sudo apt-get install python-pip

pip install paho-mqtt

라즈파이 프로그램입니다.



아래 코드를 작성하십시오. XXXX.~는 각각의 파라미터를 넣어 주세요.
작성 후 scp 모듈 등으로 PC → MQTT로 전송할 수 있습니다. 인증서와 개인 키, 공개 키도 전송합니다. 같은 계층에 넣어.

paho_mqtt_test.py
import paho.mqtt.client
import ssl
import subprocess
import json

endpoint = "XXXX.amazonaws.com"#AWSのエンドポイント
port = 8883#AWSのポート
topic_to_aws ="Raspi3_to"
topic_from_aws = "Raspi3_from"
rootCA = "VeriSign.pem"#ルート証明書
cert = "XXXX-certificate.pem.crt"#デバイス証明書
key = "XXXX-private.pem.key"#keyを設定

def on_connect(client, userdata, flags, respons_code):
    print("Connected")
    client.subscribe(topic_to_aws)#サブスクライブする

def on_message(client, userdata, msg):
    print(msg.topic)

if __name__ == '__main__':
    #ここら辺はpahoのリファレンスを参照。
    #https://www.eclipse.org/paho/clients/python/docs/#connect-reconnect-disconnect 
    client = paho.mqtt.client.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.tls_set(ca_certs=rootCA, certfile=cert, keyfile=key, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)
    client.connect(endpoint, port=port, keepalive=60)
print("StartScript")
client.loop_forever()

통신 테스트



테스트 → 게시 주제 이름을 입력하고 "주제에 게시"를 클릭하십시오.

성공하면 RaspberryPi의 콘솔에 (소스 코드) on_message 문자열 출력된다.

이상

좋은 웹페이지 즐겨찾기