國外物聯網平臺(1):亞馬遜AWS IoT

國外物聯網平臺(1) ——亞馬遜AWS IoT

馬智

平臺定位

  • AWS IoT是一款託管的雲平臺,使互聯設備可以輕鬆安全地與雲應用程序及其他設備交互。
  • AWS IoT可支持數十億臺設備和數萬億條消息,並且可以對這些消息進行處理並將其安全可靠地路由至 AWS 終端節點和其他設備。應用程序可以隨時跟蹤所有設備並與其通信,即使這些設備未處於連接狀態也不例外。
  • 使用AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和內置 Kibana 集成的 Amazon Elasticsearch Service 等AWS服務來構建IoT應用程序,以便收集、處理和分析互連設備生成的數據並對其執行操作,且無需管理任何基礎設施。

架構

與AWS IoT平臺集成的AWS服務

  • Amazon DynamoDB—託管NoSQL數據庫
  • Amazon Kinesis—大規模流式數據實時處理
  • AWS Lambda—EC2雲虛擬機運行代碼響應事件
  • Amazon Simple Storage Service(S3)—可擴展雲存儲
  • Amazon Simple Notification—推送通知服務
  • Amazon Simple Queue Service—消息隊列服務

設備SDK

  • AWS IoT 設備 SDK 使用 MQTT、HTTP 或 WebSockets 協議將硬件設備連接到 AWS IoT,硬件設備無縫安全地與 AWS IoT 提供的設備網關和設備影子協作。
  • 設備 SDK 支持 C、JavaScript 、Arduino、Java和Python。
  • 設備 SDK 包含開源庫、帶有示例的開發人員指南和移植指南,用戶根據硬件平臺構建 IoT 產品或解決方案。

設備網關

  • AWS IoT 設備網關支持設備安全高效地與 AWS IoT 進行通信。設備網關可以使用發佈/訂閱模式交換消息,從而支持一對一和一對多的通信。憑藉此一對多的通信模式,AWS IoT 將支持互連設備向多名給定主題的訂閱者廣播數據。
  • 設備網關支持 MQTT、WebSocket 和 HTTP 1.1 協議,也支持私有協議。
  • 設備網關可自動擴展,以支持 10 億多臺設備,而無需預配置基礎設施。

認證和授權

  • AWS IoT 在所有連接點處提供相互身份驗證和加密。AWS IoT 支持 AWS 身份驗證方法(稱爲"SigV4")以及基於身份驗證的 X.509 證書。使用 HTTP 的連接可以使用任一方法,使用 MQTT 的連接可以使用基於證書的身份驗證,使用 WebSockets 的連接可以使用 SigV4。
  • 使用 AWS IoT 生成的證書以及由首選證書頒發機構 (CA) 簽署的證書,將所選的角色和/或策略映射到每個證書,以便授予設備或應用程序訪問權限,或撤消訪問權限。
  • 通過控制檯或使用 API 創建、部署並管理設備的證書和策略。這些設備證書可以預配置、激活和與使用 AWS IAM 配置的相關策略關聯。
  • AWS IoT 還支持用戶移動應用使用 Amazon Cognito 進行連接,Amazon Cognito 將負責執行必要的操作來爲應用用戶創建唯一標識符並獲取臨時的、權限受限的 AWS 憑證。

註冊表

  • 註冊表將創建設備標識並跟蹤元數據,如設備的屬性和功能。
  • 註冊表向格式一致的每臺設備分配唯一的標識,而不管設備的類型和連接方式爲何。此外,它還支持描述設備功能的元數據,例如傳感器是否報告溫度,以及數據是華氏度還是攝氏度。
  • 註冊表存儲有關設備的元數據,無需支付額外費用;並且需要每隔 7 天至少訪問或更新註冊表條目一次,註冊表中的元數據就不會過期。

以JSON格式存儲的設備註冊表信息

設備影子(Shadow)

  • 設備影子保留每臺設備的最後報告狀態和期望的未來狀態,即便設備處於離線狀態。
  • 通過 API 或使用規則引擎,獲取設備的最後報告狀態或設置期望的未來狀態。
  • 應用程序可以設置設備的期望未來狀態,而無需說明設備的當前狀態。AWS IoT 將比較期望未來狀態和最後報告狀態之間的差異,並命令設備"彌補差異"。
  • 設備 SDK 能夠輕鬆地同步其狀態及其影子,並響應通過影子設置的期望的未來狀態。
  • 設備影子免費存儲設備狀態多達一年。如果至少每年更新一次狀態,則設備影子將永久保留狀態;否則狀態將過期。

設備影子(Shadow)流程

設備影子(Shadow)格式

設備影子(Shadow)服務

設備影子服務使用MQTT話題,便於應用和設備之間的通信,下面是相關的MQTT QoS 1話題:

$aws/things/{thingName}/shadow/update

$aws/things/{thingName}/shadow/get

$aws/things/{thingName}/shadow/delete

$aws/things/{thingName}/shadow/update/accepted

$aws/things/{thingName}/shadow/update/rejected

$aws/things/{thingName}/shadow/update/delta

$aws/things/{thingName}/shadow/get/accepted

$aws/things/{thingName}/shadow/get/rejected

$aws/things/{thingName}/shadow/delete/accepted

$aws/things/{thingName}/shadow/delete/rejected

設備SDK(C-SDK、JS-SDK)將影子功能內置在設備中,能夠使設備與影子服務之間自動同步狀態。

規則引擎

  • 規則引擎驗證發佈到 AWS IoT 的入站消息,並根據定義的業務規則轉換這些消息並將它們傳輸到另一臺設備或雲服務。規則可以應用至一臺或多臺設備中的數據,並且它可以並行執行一個或多 個操作。
  • 規則引擎還可以將消息路由到 AWS 終端節點,包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和內置 Kibana 集成的 Amazon Elasticsearch Service。外部終端節點可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 進行連接。
  • 使用類似 SQL 的語句編寫規則。例如:如果溫度讀數超出特定閾值,則它可以觸發規則以便將數據傳輸到 AWS Lambda;如果此溫度超出其他 5 臺設備的平均值 15%,則應採取措施。
  • 規則引擎將提供數十個可用於轉換數據的可用功能,並且可以通過 AWS Lambda 創建無限個功能。例如,如果正在處理各種不同的數值,則可以取傳入數字的平均值。規則還會觸發在 AWS Lambda 中執行 Java、Node.js 或 Python 代碼,從而提供最高靈活度以及處理設備數據的能力。

規則引擎集成其它雲服務

規則引擎驗證發佈至AWS IoT的消息請求,基於業務規則轉換消息請求併發布至其它服務,例如:

  • 富集化或過濾從設備收集的數據
  • 將設備數據寫入一個亞馬遜DynamoDBm數據庫
  • 保存文件至亞馬遜S3
  • 發送一個推送通知到所有亞馬遜SNS用戶
  • 向亞馬遜SQS隊列發佈數據
  • 調用Lambda函數抽取數據
  • 使用亞馬遜Kinesis處理大量的設備消息數據
  • 發送數據至亞馬遜Elasticsearch服務
  • 捕獲一條CloudWatch測量數據
  • 更新一條CloudWatch告警
  • 把一條MQTT消息數據發送至亞馬遜機器學習服務,基於亞馬遜機器學習模型進行預測

規則引擎&實時流式數據處理

N:1 入站的傳感器流式數據(數據降噪)

規則引擎過濾、轉換、彙總傳感器數據後,發送至亞馬遜Kinesis處理實時流式數據

Kinesis流式數據共享至其它業務系統

將流式數據的實時處理結果導入至數據庫、應用或其它亞馬遜服務

規則引擎&推送通知服務

推送通知

支持蘋果APNS推送通知服務、谷歌GCM雲消息服務、亞馬遜ADM設備消息服務,微軟WNS推送服務

亞馬遜SNS推送通知服務->HTTP協議終端(短信、郵件)

通過亞馬遜SNS推送通知服務,調用第三方HTTP協議終端,支持訂閱和重試

規則引擎示例 – 使用機器學習預測函數

{ "sql":     "SELECT *     FROM 'iot/test'     where         machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",     "ruleDisabled": false,     "awsIotSqlVersion": "2016-03-23-beta",     "actions":         [{ "republish":             { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role",                 "topic": "my-mqtt-topic" }         }] }

上面是使用亞馬遜機器學習預測函數machinelearning_predict 的規則示例,其含義是:

如果機器學習預測函數處理MQTT消息後的結果是分類1,那麼重新將此消息發佈至一個話題。

設備管理

  • 支持全球或部分地區的固件升級
  • 規則引擎在DynamoDBm數據庫跟蹤升級狀態和進度
  • 註冊表存儲設備的固件版本

S3管理固件分發版本

在S3中組織和保障和固件二進制文件

消息代理使用話題模式通知設備分組

通知設備分組固件更新信息,包括S3中的固件二進制文件URL地址

AWS IoT平臺接口

  • AWS Command Line Interface (AWS CLI)
    • 在Windows、Mac和Linux執行AWS IoT命令
  • AWS SDKs
    • 使用特定語言API開發IoT應用
  • AWS IoT API
    • 使用HTTP或者HTTPS請求開發IoT應用
  • AWS IoT Thing SDK for C
    • 在資源受限的設備上開發IoT應用,如MCU

AWS IoT監控工具

自動化監控工具

  • Amazon CloudWatch Alarms
  • Amazon CloudWatch Logs
  • Amazon CloudWatch Events
  • AWS CloudTrail Log Monitoring

手工監控工具

  • AWS IoT 儀表盤
    • 證書
    • 策略
    • 規則
    • 設備
  • CloudWatch首頁
    • 當前告警和狀態
    • 告警和資源圖表
    • 服務健康度
  • CloudWatch
  • 自定義儀表盤
  • 自定義圖表進行排障和監控趨勢
  • 搜索所有AWS資源指標
  • 創建和修改告警參數

AWS IoT 初學者工具包

  • AWS IoT 初學者工具包旨在幫助進行原型開發和安全地連接 AWS IoT。
  • 工具包內含開發微控制器開發板、傳感器和執行器、AWS IoT 設備 SDK 以及入門指南。

AWS IoT 初學者工具包 - 支持的平臺

AWS IoT生態

開發示例 - AWS IoT 按鈕

創建設備

設備屬性

創建證書

激活證書

創建策略

綁定證書與策略

綁定證書與設備

配置設備

使用MQTT客戶端訂閱設備消息

使用MQTT客戶端查看設備消息

創建短信推送話題並訂閱此話題

創建規則

創建規則的行爲

測試訂閱是否成功

作者:馬智  微信公衆號:物聯網那點事  如果你想及時得到相關資訊,可以關注個人公衆號。  本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章