物聯網及阿里的物聯網平臺
物聯網介紹
1.什麼是物聯網
1.1活點定義:利用區域性網路或網際網路等通訊技術把感測器、控制器、機器、人員和物等通過新的方式聯在一起,形成人與物、物與物相聯,實現資訊化、遠端管理控制和智慧化的網路。物聯網是網際網路的延伸,它包括網際網路及網際網路上所有的資源,相容網際網路所有的應用,但物聯網中所有的元素(所有的裝置、資源及通訊等)都是個性化和私有化。
1.2物聯網本質:物聯網是網際網路的應用拓展,應用創新是物聯網發展的核心,以使用者體驗為核心的創新2.0則是物聯網發展的靈魂。物聯網的本質概括起來主要體現在三個方面:一是網際網路特徵,即對需要聯網的物一定要能夠實現互聯互通的網際網路絡;二是
2.關鍵技術
感測器技術,RFID(射頻識別)標籤,嵌入式系統技術
3物聯網實現
(1)對物體屬性進行標識,屬性包括靜態和動態的屬性,靜態屬性可以直接儲存在標籤中,動態屬性需要先由感測器實時探測;
(2)需要識別裝置完成對物體屬性的讀取,並將資訊轉換為適合網路傳輸的資料格式;
(3)將物體的資訊通過網路傳輸到資訊處理中心,由處理中心完成物體通訊的相關計算。
4用途
物聯網用途廣泛,遍及智慧交通、環境保護、政府工作、公共安全、平安家居、智慧消防、工業監測、環境監測、老人護理、個人健康、花卉栽培、水系監測、食品溯源、敵情偵查和情報蒐集等多個領域。
阿里的物聯網平臺介紹
物聯網平臺是阿里雲面向物聯網領域開發人員推出的裝置管理平臺,旨在幫助開發者搭建資料通道,方便終端(如感測器、執行器、嵌入式裝置、智慧家電等)和雲端進行雙向通訊。
1資料通道
為裝置和物聯網應用程式提供釋出和接收訊息的安全通道。資料通道目前支援CCP協議和MQTT協議。
使用者可以基於CCP協議實現Pub/Sub非同步通訊,也可以使用遠端呼叫(RPC)的通訊模式實現裝置端與雲端的通訊。
使用者也可以基於開源協議MQTT協議連線阿里雲IoT,實現Pub/Sub非同步通訊。
2安全認證&許可權策略
為每個裝置頒發阿里雲IoT的憑證,依賴憑證才能連線阿里雲IoT。
提供裝置級的授權粒度,任何裝置必須經過授權才能對某個Topic釋出訂閱訊息
服務端也需要經過授權才能操作其他賬號下的Topic
3裝置共享平臺
提供Topic跨賬號的授權,幫助使用者實現跨廠商的資料共享,進而實現更加豐富智慧的場景。
4規則引擎
為使用者提供類SQL語言的規則引擎,幫助使用者過濾資料、處理資料,並能夠傳送資料到阿里雲其他服務,例如RDS,OTS,ONS等等,也能夠傳送到資料到其他Topic。
5裝置快照(待上線)
儲存裝置的最新狀態或者APP希望的最新狀態在雲端,然後當裝置或APP連線上來時,同步狀態給裝置或APP。
6應用場景
裝置端實時請求雲端
物聯網裝置呼叫雲端服務需要返回結果給裝置,方便裝置作相應處理。例如使用者通過智慧音箱呼叫雲端語音解析服務,裝置可以實時得到解析結果做處理。
雲端實時請求裝置端
開發者通過雲端控制裝置時,需要知道控制有沒有成功,例如請求開啟燈,使用者需要得知燈是否開啟,這就需要裝置端返回結果給雲端
裝置端與雲端的非同步請求
有很多物聯網裝置之間有互聯互通的需求。例如家裡的門開啟之後,燈和空調就開啟。這種場景就可以基於阿里雲物聯網套件實現,將門的開啟這個訊息Pub到某個Topic,然後燈以及空調Sub該Topic得到的門開啟的訊息作相應的處理。
跨廠商裝置互聯互通
不同廠商的裝置具有互聯互通的需求,例如A廠商的手環通過檢測使用者的身體狀態來控制B廠商的空氣淨化器以及C廠商的空調。
7功能
裝置接入
快速接入:提供裝置端SDK,方便客戶快速連線阿里雲IoT資料通道
安全接入:提供裝置端安全的認證方法,確保裝置在雲端的安全以及合法性
雲端服務
訊息轉發:訊息路由轉發,實現M2M、端到雲、雲到端等多樣化訊息互通場景
裝置授權:提供裝置級的許可權粒度,保證訊息的安全性
規則引擎:提供規則引擎,與其它阿里雲產品無縫銜接,快捷的構建IoT應用
互聯互通
提供Topic跨賬號的授權,幫助廠商實現與不同廠商的裝置互聯互通,開發豐富多彩的IoT應用
8名詞解釋
概念 |
描述 |
產品 |
同類裝置的集合,方便管理裝置 |
AppKey |
阿里雲IoT為產品頒發的唯一標識 |
AppSecret |
阿里雲IoT為產品頒發的產品金鑰,和AppKey成對出現 |
裝置ID |
對應的英文名稱:DeviceId。阿里雲IoT為裝置頒發的唯一標識 |
裝置祕鑰 |
對應的英文名稱:DeviceSecret。阿里雲IoT為裝置頒發的裝置祕鑰,和裝置ID成對出現 |
RPC |
裝置端向雲端傳送資料協議,這隻適用CCP協議接入的裝置 |
RRPC |
由雲端發起,但是期望裝置端響應的資料互動協議,這隻適用CCP協議接入的裝置 |
Topic |
用作訊息的路由轉發,例如裝置A將訊息釋出到Topic:123中,裝置B可以訂閱Topic:123得到訊息。CCP協議和MQT協議都支援 |
釋出 |
對應的英文名稱:Pub。裝置端的釋出協議,操作Topic的許可權,意思是具有往Topic中釋出訊息的許可權 |
訂閱 |
對應的英文名稱:Sub。裝置端的訂閱協議,操作Topic的許可權,意思是具有從Topic中訂閱訊息的許可權 |
9阿里雲物聯網套件限制
限制類別 |
描述 |
產品個數 |
目前限制產品個數上限是10個 |
新增裝置 |
目前只能在控制檯上新增裝置,而且單次操作新增不能5萬,單個產品不能超過1億 |
裝置資料上報地址 |
目前只能支援本賬號下的ECS或SLB的IP地址訪問以及ACE的域名訪問 |
Topic的長度 |
不能超過128位元組 |
CCP協議包大小 |
不能超過256K |
MQTT協議包大小 |
不能超過256K |
裝置授權操作 |
不能超過50個 |
授權操作 |
1.單個裝置端不能對帶有萬用字元的Topic進行釋出或者訂閱訊息;2.服務端不能對帶有萬用字元的Topic進行釋出訊息 |
規則引擎 |
同一個賬號不超過100個規則 |
規則引擎 |
資料格式必須是JSON才能使用規則引擎 |
規則引擎 |
一條規則中轉發資料的操作不能超過10個 |
10裝置接入雲端的協議
基於CCP接入(MQTT協議的精簡版)
協議本身具備安全演算法,不依賴TLS演算法
協議大小更精簡,包頭,payload佔用位元組更少。例如header只有1個位元組
協議支援多種通訊模式,相對於MQTT,不僅支援Pub/Sub,還支援RPC/RRPC
基於MQTT接入
被廣泛用在嵌入式裝置的訊息傳輸上
COAP(待上線)
CoAP是一種軟體協議旨在用於非常簡單的電子裝置,讓他們通過網際網路互動通訊。詳情請訪問COAP
HTTP(待上線)
資料通道支援裝置通過HTTP協議用REST API的方式連線阿里雲IoT。裝置可以通過POST方式實現Pub訊息到某個Topic。
11
全鏈路加密
整個通訊鏈鋸以RSA,AES加密,保證資料傳輸的安全。
訊息實時到達
當裝置與阿里雲IoT建立資料通道後,阿里雲IoT會與裝置保持長連線,減少握手時間,保證訊息的實時到達。
支援資料透傳
裝置資料可以基於資料通道以二進位制方式透傳的方式傳到自己的伺服器上(只支援在阿里雲上購買的產品),阿里雲IoT不會儲存裝置業務資料,從而保證使用者對資料的安全可控性。
支援多種通訊模式
資料通道支援RPC/RRPC以及Pub/Sub兩種通訊模式,滿足使用者不同的應用場景。
12 基於CCP接入雲端,主要包含兩大流程:
裝置的認證
裝置接入資料通道
A:裝置使用控制檯申請的金鑰進行簽名請求授權,簽名使用 hmacmd5演算法(可選 hmacsha1),簽名內容=devieceid+appkey,使用key=appSecret+deviceSecret
B:伺服器驗證簽名合法,並返回pubkey證書
C:裝置生成隨機金鑰seedkey,使用pubkey RSA加密傳輸給伺服器
D:伺服器確認返回令牌 sid ,同時返回簽名sign,簽名內容=sid,簽名的key=appSecret+deviceSecret,同時返回動態負載的接入伺服器ip供裝置連線
E:客戶端使用私鑰seedkey解密令牌,進行資料通訊,客戶端可選協議模式支援ccp\mqtt\coap...
13基於MQTT接入雲端,主要包含兩大流程:
裝置獲取證書
裝置接入資料通道
A:裝置使用控制檯申請的金鑰進行簽名請求授權,簽名使用 hmacmd5演算法(可選 hmacsha1、md5),簽名內容=devieceid+appkey,使用key=appSecret+deviceSecret
B:伺服器驗證簽名合法,並返回pubkey證書(X.509格式base64)
C:裝置使用pubkey證書TLS協議連線MQTT
14通訊模式
IoT Hub支援兩種通訊模式:
14.1通訊模式 - RPC/Revert-RPC
RPC/Revert-RPC(CCP協議具有的通訊模式)
RPC是將使用者的裝置資料通過阿里雲轉發到使用者自己的業務系統,比如可以使用者可以將自己裝置上報的服務註冊到阿里雲IoT上,然後裝置直接可以呼叫該服務,完成資料上報;
R-RPC是使用者的業務系統遠端呼叫客戶端並等待客戶端得到一個回執結果,比如遠端呼叫開關並得到開關的狀態資訊。
14.2通訊模式 - Pub/Sub
Pub/Sub(CCP協議和MQTT都支援)
Pub/Sub是基於Topic進行訊息的路由轉發,讓裝置端或者服務端可以釋出訂閱訊息,實現非同步的通訊。適用的場景有M2M(裝置與裝置間通訊),也可以實現裝置端與雲端的非同步通訊。
IoT Hub維護所有Topic的釋出訂閱使用者列表。當訊息傳送到Topic,IoT Hub會檢查該Topic的所有訂閱使用者,然後將訊息轉發給所有具有訂閱該Topic許可權的客戶端或者服務端。
15身份和安全
每個裝置需要具備阿里雲IoT頒發的憑證才能連線阿里雲IoT;
裝置與雲端通訊採用AES、RSA演算法加密,從而保證資料傳輸安全;
為了安全地基於資料通道傳輸資料,裝置有責任保持他們的憑證安全;
資料到達阿里雲IoT之後,阿里雲IoT通過許可權機制保障資料安全轉發到其他阿里雲服務或者其他裝置。
16裝置身份
為裝置頒發憑證,包括產品證書和裝置證書,裝置證書與裝置是一對一的關係,確保裝置的唯一合法性。裝置通過CCP協議或者MQTT協議接入資料通道之前,都需要進行裝置認證,裝置認證需要攜帶產品證書和裝置證書進行認證。
17通訊安全
採用RSA-512bit、AES演算法來保證資料通道的傳輸安全。
18授權
提供裝置級的授權粒度。
對於裝置端,裝置必須具有許可權,才可以往某個Topic釋出訂閱訊息,這讓使用者可以完全控制Topic的訊息轉發,幫助使用者控制資料的安全性;
對於服務端,服務端基於阿里雲AK預設具有該賬號下Topic的操作許可權,但是如果想要操作其他賬號下的Topic需要相應的許可權。
19規則引擎
SQL表示式:把一條規則抽象為一條sql表達
例子:
SELECT crypto(userId,'SHA1') md2, (a+1) al, color c, config.flag flag, deviceId(),CASE col.a WHEN 1 THEN 'Y' ELSE 'N' END flagFROM"/12345/#"WHEREc is not null and b<0
select引數和where條件可以使用訊息的payload屬性作為列,不支援子查詢。
20規則引擎
1 - FROM "topic"
當有符合topic規則的訊息到達時,訊息的payload資料以json形式被上下文環境使用(如果訊息格式不合法,將忽略此訊息),您可以使用topic()函式引用具體的topic值。
2- SELECT
select的屬性來源於訊息的payload,可以使用json表示式形式引用,也可以來源於函式比如deviceId()。
3- WHERE
規則觸發條件,條件表示式。當符合topic的訊息到達時,這條訊息觸發規則的條件。
4- json表示式
select和where可以直接使用json表示式。 json表示式支援屬性,也支援陣列。如果payload資料解析出錯將會導致規則執行失敗。 轉發資料action中的表示式需要使用 ${表示式} 來使用。
物聯網的實現
1建立產品與裝置
使用物聯網平臺的第一步,是在控制檯上新增產品和裝置,並獲取裝置認證三元組與Topic資訊。物聯網平臺傳輸資料時,依靠三元組資訊識別裝置,基於Topic實現資料在裝置端與雲端的傳輸。
操作步驟
1.1.使用您的阿里雲賬號登入物聯網平臺控制檯。首次使用需申請開通該服務。
1.2.建立產品。產品泛指一批具有相同功能的裝置,建立產品是為了便於批量管理裝置。
在產品管理頁面,單擊建立產品,選擇基礎版。
填寫產品名稱,選擇節點型別。
產品名稱:用於辨識產品,產品名需在賬號內保持唯一。此例中,我們填入一個模擬的產品型號。
節點型別:此例中我們選擇裝置,表明該產品下的裝置可以直連IoT Hub。
裝置:不能掛載子裝置,可以直連IoT Hub,也可以作為閘道器的子裝置連線IoT Hub。
閘道器:可以掛載子裝置。閘道器具有子裝置管理模組,維持子裝置的拓撲關係,並且可以將拓撲關係同步到雲端。
1.3.在該產品的訊息通訊頁,單擊定義Topic類,建立一個新的Topic類,用於傳輸裝置上傳的資訊。
1.4.單擊裝置管理進入裝置管理頁面,新增裝置。選中上一步中建立的產品。在該產品類目下,單擊新增裝置,新增一臺裝置。
裝置新增完成後,介面彈出裝置三元組,包含:ProductKey、DeviceName和DeviceSecret。您可以一鍵複製,儲存這些資訊,用於後續的認證裝置。此例中的三元組資訊為:
ProductKey
:
a1wmrZPO8o9
DeviceName
:
cbgiotkJ4O4WW59ivysa
DeviceSecret
:
H3cI7
***********************ZeSU
單擊檢視剛剛新增的裝置,單擊Topic列表,可以檢視裝置具有在哪些Topic上釋出或訂閱訊息的許可權。
2建立裝置與平臺的連線
阿里雲物聯網平臺提供裝置端SDK,裝置使用SDK與平臺建立通訊。
2.1確定您的開發環境,並根據環境選擇相應SDK。
2.2下載裝置端SDK,將已獲得的裝置三元組資訊填入。
2.3如果在控制檯上看到相應裝置上線,則資料開始上傳平臺。
3服務端訂閱裝置訊息
裝置連線物聯網平臺後,資料將直接上報至平臺,平臺上的資料可以通過HTTP/2通道流轉至您的伺服器。這一步中,我們將配置HTTP/2服務端訂閱功能,並設定HTTP/2 SDK。您的伺服器可以通過接入HTTP/2 SDK,接收裝置資料。
3.1在物聯網平臺控制檯中,為產品配置服務端訂閱。
在產品管理頁面,單擊已建立產品對應的檢視按鈕。
在具體產品頁,單擊服務端訂閱,單擊設定,為產品配置服務端訂閱功能。
單擊勾選伺服器(HTTP/2 SDK)要訂閱的訊息型別,然後單擊儲存。
裝置上報訊息:指產品下裝置的 Topic 列表中,裝置具有的許可權為釋出的Topic。
裝置狀態變化通知:指當產品下裝置的狀態發生變化時,系統發出的通知訊息。例如,裝置上下線訊息。控制檯訂閱配置完成大約1分鐘後功能生效。
3.2. 接入HTTP/2 SDK。
3.3 基於您的阿里雲賬號AccessKey進行身份認證,建立SDK與平臺的連線。
4裝置接收雲端指令
這一步中,我們將實現雲端應用呼叫Pub介面向該Topic傳送資訊,裝置通過訂閱該Topic,獲得雲端指令。
4.1通過修改裝置端SDK,為裝置訂閱Topic。
4.2雲端應用向裝置下發指令。
sdk
軟體開發工具包
- 建立產品,設定產品引數(版本選擇產品名稱節點型別裝置型別),定義產品物模型(屬性 服務 事件) 物模型:是一個JSON格式的檔案。它是物理空間中的實體,如感測器、車載裝置、樓宇、工廠等在雲端的數字化表示,從屬性、服務和事件三個維度,分別描述了該實體是什麼,能做什麼,可以對外提供哪些資訊。定義了這三個維度,即完成了產品功能的定義。
- 新增裝置 獲得身份三元組即裝置連線平臺的鑑權認證
- 在裝置端下載平臺的開發裝置SDK
- 裝置上線 向平臺傳送資料
- 在伺服器端通過http/2 sdk 接收資料(平臺上的資料可以通過http/2通道流轉至伺服器)
- 利用雲端SDK呼叫pub埠向裝置傳送資料
物聯網平臺的 雲端Java SDK 讓開發人員可以方便地使用 Java 程式操作物聯網平臺。
資料上下行轉化
在平臺寫指令碼
(下行資料解析)Alink JSON格式資料轉二進位制資料:protocolToRawData
(上行資料解析)二進位制資料轉Alink JSON格式資料:rawDataToProtocol
DataV 可以讓更多的人看到資料視覺化的魅力,並幫助非專業的工程師通過圖形化的介面輕鬆搭建具有專業水準的視覺化應用。DataV 提供了豐富的視覺化模板,極大程度滿足您會議展覽、業務監控、風險預警、地理資訊分析等多種業務的展示需求。
DataV 提供了多種新增資料來源的方式:資料庫類 檔案類 API 類