Alert system using W5100S-EVB-Pico and AWS SNS

이경은·2022년 8월 23일
0
post-thumbnail

1. Concept

센서 이상값 탐지 알람.
센서에서 보내는 값이 정해둔 임계값을 넘어갈 경우 알림이 오도록 설정.
W5100S-EVB-Pico에서 보내는 MQTT 메시지를 IoT core에서 받아서, Rule을 설정해서 SNS로 이상값 데이터를 보내서 이메일 알림을 받도록 함.

2. 구현

1) AWS IoT Core + W5100S-EVB-Pico 연결

Create Thing

  • "Create things" 클릭 https://velog.velcdn.com/images/dlruddms5619/post/1ffb0665-a33e-4e99-906b-3bfc4117c6c9/image.png
  • "Create single thing" 선택 https://velog.velcdn.com/images/dlruddms5619/post/c88d03ae-6780-4626-83d3-b1021aeb9d27/image.png
  • thing Name은 식별 가능하게 설정. https://velog.velcdn.com/images/dlruddms5619/post/dc3675b4-bb2a-4c05-a9fa-9d6d03638c26/image.png
  • 인증서는 자동 생성 선택. https://velog.velcdn.com/images/dlruddms5619/post/9fbb66c8-8df9-422b-8c83-c516fd5ba924/image.png
  • 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}

https://velog.velcdn.com/images/dlruddms5619/post/ed29e98e-a4ec-404a-be6a-118bc8b087f3/image.png

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

profile
Web Developer

0개의 댓글