1. Concept
센서 이상값 탐지 알람.
센서에서 보내는 값이 정해둔 임계값을 넘어갈 경우 알림이 오도록 설정.
W5100S-EVB-Pico에서 보내는 MQTT 메시지를 IoT core에서 받아서, Rule을 설정해서 SNS로 이상값 데이터를 보내서 이메일 알림을 받도록 함.
2. 구현
1) AWS IoT Core + W5100S-EVB-Pico 연결
Create Thing
- "Create things" 클릭
- "Create single thing" 선택
- thing Name은 식별 가능하게 설정.
- 인증서는 자동 생성 선택.
- IoT Core 사용을 위한 정책을 생성하고 연결해줍니다.
- 정책 내용은 아래와 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iot:Publish",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "*"
}
]
}
Publish MQTT Message
- RP2040과 AWS를 연결하는 SDK를 활용했으며, 깃허브 링크를 따라가면 사용할 수 있습니다.
- thing Name을 위에서 생성한 thing Name으로 변경해주었습니다.
/* AWS IoT */
#define MQTT_DOMAIN "account-specific-prefix-ats.iot.ap-northeast-2.amazonaws.com"
#define MQTT_PUB_TOPIC "$aws/things/YOUR_THING_NAME/shadow/update"
#define MQTT_SUB_TOPIC "$aws/things/YOUR_THING_NAME/shadow/update/accepted"
#define MQTT_USERNAME NULL
#define MQTT_PASSWORD NULL
#define MQTT_CLIENT_ID "YOUR_THING_NAME"
- W5100S-EVB-Pico에서 현재 보내는 메시지 페이로드는 다음과 같습니다.
{"temperature":23, "humidity":25}
2) SNS 설정
Create Topic
- AWS SNS Console 창에서 Topics > Create topic 클릭
- Type은 Standard로 선택하고, Topic의 Name을 설정
- FIFO는 subscription protocol을 SQS만 지원함.
Subscriptions(구독) 생성
- 만들어둔 topic의 상세 페이지에 들어가서 create subscription 선택
- subscription은 알림을 받을 곳으로, endpoint를 메일로 설정했다.
- 생성 후 confirm은 필수.
- 생성 후에는 해당 메일 주소로 verify 메일이 와있다. 메일에서 confirm을 해야만 사용할 수 있다.
- 메일에 들어가서 Confirm subscription을 클릭
- 클릭하면 아래와 같은 화면이 뜨고, SNS의 Subscription에 들어가면 해당 subscription의 status가 Confirmed로 변경된다.
Test SNS
- topic에 들어가서, Publish message 클릭
- messgae body에 test message를 입력하고 publish message를 클릭
- 메일에 test message가 전송된 것을 확인할 수 있다.
3) IoT Core Rule 생성
- AWS IoT 에서 Message Routing > Rules > Create rule 선택
- 규칙 이름 설정
- SQL statement 입력. 형식은
- SELECT FROM WHERE
- temperature 값이 1(특정값)이상인 경우 트리거되도록 함.
- rule actions에서 SNS를 선택하고, 만들어둔 TOPIC을 선택한다.
- Role은 새로 생성하거나, 예전에 사용하던 role이 있으면 선택.
4) Test
- Pico를 연결해두었기 때문에, IoT Core에서 생성한 rule을 활성화 시켜주면,
- 조건에 만족할 때 정해둔 subscription으로 알림이 온다.
참조
https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-sns-rule.html
https://amazonwebservices.hackster.io/ablearcher83/current-tracker-7506d1