国外物联网平台初探(一) ——亚马逊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客戶端查看設備消息
創建短信推送話題并訂閱此話題
創建規則
創建規則的行為
測試訂閱是否成功
總結
以上是生活随笔為你收集整理的国外物联网平台初探(一) ——亚马逊AWS IoT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 俄罗斯联邦是俄罗斯吗?
- 下一篇: 92年的属是什么?这个角色出生于1992