[ AWS ] LinkIt Smart 7688 Subscribe AWS IoT Message 教學

與 IoT 相關的雲端服務為數眾多,例如:ThingSpeakWoT.CityAWSIBM BluemixMediaTek MCS 等,並在透過這些雲端服務可在對資料進行資料視覺化、資料分析與其它的應用,而本文透過 Linkit Smart 7688 Duo 取得 AWS IoT 的訊息。


情境

透過 Python 傳送訊息到 AWS SNS,再透過 AWS SNS 傳送警報訊息給相關處理人員, AWS SNS 再透過 AWS Lambda Publish 資訊到 AWS IoT,此時 LinkIt Smart 7688 Subscribe 到此警報訊息。


學習目標

  • AWS SNS 操作
  • AWS Lambda 操作
  • AWS IoT 操作

前置準備作業

  1. 一台電腦

  2. LinkIt Smart 7688 開發板

  3. AWS 帳號 -【 註冊 AWS 帳號

  4. 將 Micro-USB Cable 連接至電腦與 LinkIt Smart 7688


連接圖

感謝 【 Anker Taiwan 】 提供拉不斷的 Micro USB Cable


AWS SNS 端

Step 1. 登入到 AWS


Step 2. 點選 【 AWS SNS 服務 】

❖ 點選【 Services 】


❖ 點選【 Simple Notification Service 】


Step 3. 點選【 Create topic 】


Step 4. 輸入 Topic 資訊

① 輸入 Topic name
② 輸入 Display name
③  點選 Create topic 按鈕


Step 5. 點選【 Create subscription 】


Step 6. 填入 Subscription 相關資訊

① Protocol 選擇 Email
② Endpoint 填入要接收警告訊息者的 Email
③  點選 Create subscription 按鈕


Step 7. 接收確認信件

① Subscription ID  目前為 PendingConfirmation 狀態


② 到剛才輸入的 Endpoint 信箱收信
③ 點選 Confirm subscription 連結


④ subscription 確認完成畫面


Step 8. 點選【 Publish to topic 】

① 輸入 Subject 資訊
② 輸入 Message 資訊
③ 點選 Publish message 按鈕


④ 到 Endpoint 信箱收信


Step 9. 設定 AWS SNS Policy

① 點選【 Services 】
②  點選【 IAM 】


③ 點選【 Users 】


④ 點選【 Add User 】


⑤ 輸入 User name
⑥ 點選 Access type 中的 Programmatic access
⑦ 點選 Next: Permissions


⑧ 點選 Attach existing policies directly


⑨ 點選 Create policy


⑩ 點選 Create Your Own Policy 中的 Select


⑪ 輸入 Policy Name
⑫ 輸入 Policy Document
⑬ 點選 Create Policy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        }
    ]
}


⑭ 點選 Refresh 


⑮ 搜尋 SNS_Publish


⑯ 點選 SNS_Publish
⑰  點選 Next: Review


⑱ 點選 Create user


⑲ 記下 Access key ID 與 Secret access key


⑳ 請在電腦端的終端機輸入以下指令

export AWS_ACCESS_KEY_ID=剛剛 policy 所顯示的 Access key ID  
export AWS_SECRET_ACCESS_KEY=剛剛 policy 所顯示的 Secret access key  
export -p

②① SNS Publish 測試 
https://github.com/ArcherHuang/Amazon-Web-Services/blob/master/AWS_SNS/snsPublish.py

    修改第 8 行的 us-east-1 為自己服務所在位置
    修改第 9 行的 arn:aws:sns:us-east-1:: 為自己的 ARN

㊟  us-east-1 服務所在位置查看方式
    點選 【 Services 】 ➙ 【 Simple Notification Service 】 ➙ 【 Topics 】

㊟  arn:aws:sns:us-east-1:: 的 ARN 查看方式
    點選 【 Services 】 ➙ 【 Simple Notification Service 】 ➙ 【 Topics 】


②② 執行 Python 程式
   python 檔案名稱


AWS IoT 端

Step 1. 開始使用【 AWS IoT 】服務

❖ 點選【 Services 】


❖ 點選【 AWS IoT 】


Step 2. 點選【 Get started 】


Step 3. 建立 thing

① 點選 Connect
②  點選 Get started


Step 4. 點選【 Get started 】


Step 5. 選擇平台與 SDK

① platform 選擇 Linux/OSX
②  SDK 選擇 Python
③  點選 Next


Step 6. 取一個 thing name

① 輸入 Name
②  點選 Next step


Step 7. 下載憑證

① 點選 Linux/OSX
②  點選 Next step

㊟ Linux/OSX 按鈕點選完會下載 connect_device_package.zip,解壓縮完會看到如下檔案


Step 8. 點選【 Done 】


Step 9. 點選【 Done 】


Step 10. 建立【 IAM 】

① 點選【 Services 】
② 點選【 IAM 】


③ 點選【 Roles 】


③ 點選【 Create new role 】


④ 點選【 AWS Lambda 】


⑤ 搜尋欄位輸入【 iot 】


⑥ 點選【 AWSIoTFullAccess 】
⑦ 點選【 Next Step 】


⑧ 輸入【 Role name 】
⑨ 點選【 Create role 】


AWS Lambda 端

Step 1. 開始使用【 AWS Lambda 】 服務

❖ 點選【 Services 】


❖ 點選【 AWS Lambda 】


Step 2. 點選【 Create a function 】


Step 3. 使用 Python 樣版

① 在 Blueprints 搜尋欄位輸入 hello,再按 【 enter 】鍵

② 點選 【 hello-world-python 】


Step 4. 建立 AWS Lambda 觸發條件

① 點選【 SNS 】為觸發條件


② 點選【 Enable trigger 】
③ 點選【 Next 】


④ 輸入 Lambda Name


⑤ 輸入 Lambda Function Python Code
  https://github.com/ArcherHuang/Amazon-Web-Services/blob/master/AWS_SNS/lambda_function.py


⑥ 點選 Existing role


⑦ 點選 【 Next 】


⑧ 點選 【 Create function 】


LinkIt Smart 7688 端

Step 1. 設定成 Station Mode


Step 2. 將憑證傳到 LinkIt Smart 7688

① 將 AWS IoT 端的 Step 7 所下載的 connect_device_package 中的
  .cert.pem、.private.key、.public.key 傳送到 LinkIt Smart 7688


Step 3. 將 script 傳到 LinkIt Smart 7688

① 下載位置
  https://github.com/ArcherHuang/Linkit_Smart_7688/blob/master/IoT%20Cloud/Python/AWS%20IoT/start.sh


Step 4. 執行 script

① 於端終機執行
  sh start.sh


Step 5. 修改 Python 程式碼並傳到 LinkIt Smart 7688

① 修改第 19 行、第 21 行、第 22 行


② 傳送到 LinkIt Smart 7688


③ 執行 Python 程式碼 
  python aws_iot_subscribe.py


Step 6. 執行 snsPublish.py

①  執行 AWS SNS 端步驟 22 的 Python 程式
   python 檔案名稱


♦  LinkIt Smart 7688 端到 AWS IoT 傳送過來的訊息


Reference
GitHub
List of blogs
感謝
ALL RIGHTS RESERVED. COPYRIGHT © 2016. Designed and Coded by Makee.io