파이썬 코드로 mqtt pub하기

다넌·2022년 10월 12일
0

이제 본격적으로 토픽 구성하고, 메시지 올리고, 룰 설정해서 분류합니다.

참고

Python을 사용하는 경우 디바이스에서 AWS IoT Core로 MQTT 메시지를 게시하려면 어떻게 해야 합니까?


코드

import ssl
import AWSIoTPythonSDK
# Import SDK packages
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
from datetime import datetime


obtainedAccessKeyID = '액세스키'
obtainedSecretAccessKey = '시크릿액세스키'

myMQTTClient = AWSIoTMQTTClient("IoT기기명")
myMQTTClient.configureEndpoint("엔드포인트 주소", 포트번호);


amazonRoot  = ""
privateKey = ""
certificate = ""
# 기기 인증서들 위치를 변수에 저장해둡니다 > "/Users/... .../0000.private.key"

myMQTTClient.configureCredentials(amazonRoot, privateKey, certificate)


# 수신할 때
# Custom MQTT message callback
def customCallback(client, userdata, message):
    print("Received a new message: ")
    print(message.payload)
    print("from topic: ")
    print(message.topic)
    print("--------------\n\n")

timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

message = "{\"motorId\": \"SS-A01\",\"ip\": \"123.1.1.1\",\"target\":{\"temperature\":\"70\"},\"time\":\""+timestamp+"\"}"

myMQTTClient.connect()
myMQTTClient.publish("토픽", message_temp, 0)
# myMQTTClient.subscribe("토픽", 1, customCallback)
# myMQTTClient.unsubscribe("토픽")
myMQTTClient.disconnect()

코드는 위처럼 작성해 사용했습니다.

그리고 제대로 통신이 이루어지는지 확인하기 위해 IoT Core → MQTT 테스트 클라이언트에 접속합니다.
주제 구독에서 토픽을 적은 후 구독, 위 코드를 실행하면 다음 사진처럼 메시지가 수신됩니다.

이제 룰을 작성합니다. 메시지 라우팅 → 규칙으로 들어가주세요

간단하게 temperature가 일정 수준 이상일 경우 필터링하는 룰을 작성했습니다.

설정할 수 있는 작업 종류는 많은데, 우선 테스트용으로 메시지 재게시를 선택했습니다. 주제=토픽이므로 구분 가능한 이름으로 설정합니다

참고로 SQL문은 위처럼 작성했습니다!



다시 MQTT 테스트 창으로 들어가서, 위에서 설정한 토픽을 새로 구독합니다.


그리고 다시 코드를 실행시키면(메시지 전송) 아래와 같이 룰 적용이 제대로 이루어졌음을 알 수 있습니다. (alert로 재게시됨)


이후 과제

라우팅 룰을 통해 메시지를 S3 or DB로 전달하기
메시지 세분화
그에 따른 룰 세분화

0개의 댓글