文章目錄
- 1.前言
- 2.OneNET物聯網平臺簡介
- 3.OneNET物聯網平臺架構
- 3.1 設備接入
- 3.2 設備管理
- 3.3 API列表
- 3.3.1 設備管理相關 —— 重要
- 3.3.2 數據流管理相關 —— 重要
- 3.3.3 數據管理相關 —— 重要
- 3.3.4 設備命令相關
- 3.3.5 觸發器相關
- 3.3.6 apikey相關
- 3.3.7 topic相關(限MQTT設備使用)
- 3.4 HTTP推送
- 3.5 安全認證
- 4.資源模型
- 4.1 用戶(user) —— OneNet平臺賬號
- 4.2 產品(product) —— 具體項目
- 4.3 設備(device) —— 項目涉及到的物理設備
- 4.4 數據流與數據點 —— 物理設備上傳的數據
- 4.5 APIkey —— 用戶校驗標識
- 4.6 觸發器(trigger) —— 報警服務
- 4.7 應用(application) —— OneNet自帶UI展示
- 5.術語解釋
- 6.OneNet開發準備
- 7.總結
1.前言
在進入OneNet系列之前,我們先來了解一下OneNet平臺。讀者可以自行閱讀OneNet官方文檔,博哥這裏只是做到拋磚引玉的作用。
2.OneNET物聯網平臺簡介
OneNET定位爲PaaS服務,即在物聯網應用和真實設備之間搭建高效、穩定、安全的應用平臺:
- 面向設備,適配多種網絡環境和常見傳輸協議(包括我們講的MQTT、HTTP等),提供各類硬件終端的快速接入方案和設備管理服務;
- 面向企業應用,提供豐富的API和數據分發能力以滿足各類行業應用系統的開發需求,使物聯網企業可以更加專注於自身應用的開發,而不用將工作重心放在設備接入層的環境搭建上,從而縮短物聯網系統的形成周期,降低企業研發、運營和運維成本。
簡單理解爲:放心用,OneNet平臺爲你考慮了方方面面。
3.OneNET物聯網平臺架構
可以通過上圖去理解整個OneNet平臺的設計架構,對於我們來說,比較關注以下幾點:
3.1 設備接入
OneNET提供安全穩定的設備接入服務,支持包括LWM2M(CoAP)、MQTT、Modbus、HTTP、TCP等在內的多種協議:
- 在考慮低功耗以及廣覆蓋的場景,建議使用CoAP協議接入
- 在工業modbus通信場景,建議使用DTU+Modbus協議接入
- 在需要與設備實時通信的場景,建議採用MQTT協議接入
- 在設備單純上報數據的場景,可以使用HTTP/HTTPS協議接入
- 在用戶需要自定義協議接入的場景,建議採用TCP+腳本的方式接入
具體參考 設備開發協議,大家可以點擊下載具體的協議文檔以便學習查閱。
3.2 設備管理
OneNET平臺針對不同的使用場景,提供關於設備的包括生命週期管理、在線狀態監測、在線調試、數據管理等功能在內的豐富的設備管理功能。
具體參考 入門手冊
3.3 API列表
OneNET提供開放的、豐富的、基於HTTP/HTTPS的API接口,用戶可以使用API進行設備管理,數據查詢,設備命令交互等操作,在API的基礎上,根據自己的個性化需求指定搭建上層應用。
具體參考 API列表,作爲開發者的我們需要根據產品接入協議來選擇不同的API。
平臺提供的API列表如下:
3.3.1 設備管理相關 —— 重要
API | 請求方式 | 說明 |
---|---|---|
新增設備 | POST | 供應用層使用 |
註冊設備 | POST | 用於設備自行註冊場景 |
更新設備信息 | PUT | 用於更新設備屬性 |
查詢設備詳情 | GET | 用於查詢設備屬性,包括設備在線狀態 |
批量查詢設備信息 | GET | |
批量查詢設備狀態 | GET | |
刪除設備 | DELETE |
3.3.2 數據流管理相關 —— 重要
API | 請求方式 | 說明 |
---|---|---|
新增數據流 | POST | 建立某設備獨有的數據屬性,產品內建議使用數據流模板替代 |
更新數據流屬性 | PUT | |
查詢數據流狀態 | GET | 可用於查詢數據流配置以及最新數據點 |
刪除數據流 | DELETE |
3.3.3 數據管理相關 —— 重要
API | 請求方式 | 說明 |
---|---|---|
查詢設備歷史數據 | GET | |
批量查詢設備最新數據 | GET | |
上傳數據點 | POST | 設備/應用服務器均可通過HTTP/HTTPS方式上傳數據 |
上傳文件 | POST | 可用於設備上傳原始數據、圖片、文件等 |
獲取文件 | GET |
3.3.4 設備命令相關
API | 請求方式 | 說明 |
---|---|---|
下發命令 | POST | 平臺主動發送數據至設備 |
查詢命令狀態 | GET | 用於查詢某條命令的執行情況 |
查詢命令響應 | GET | 設備收到命令時需要設備發送命令響應 |
查詢設備歷史命令 | GET |
3.3.5 觸發器相關
API | 請求方式 | 說明 |
---|---|---|
新增觸發器 | POST | |
更新觸發器 | PUT | |
查詢觸發器詳情 | GET | |
刪除觸發器 | DELETE |
3.3.6 apikey相關
API | 請求方式 | 說明 |
---|---|---|
新增apikey | POST | 新增的apikey只具有設備級的權限 |
更新apikey | PUT | |
查詢apikey | GET | |
刪除apikey | DELETE |
3.3.7 topic相關(限MQTT設備使用)
API | 請求方式 | 說明 |
---|---|---|
發佈消息 | POST | 發佈消息到topic |
查詢訂閱設備列表 | GET | 查詢訂閱某個topic的設備列表 |
查詢設備訂閱詳情 | GET | 查詢設備的topic訂閱列表 |
查詢topic列表 | GET |
3.4 HTTP推送
針對某些實時性要求較高的場景,OneNET提供數據推送功能,可以過濾掉設備端頻繁的週期性上報數據,將用戶關心的實時性較高的數據,通過HTTP/HTTPS的方式推送到用戶的應用服務器上。
具體參考 HTTP推送
3.5 安全認證
OneNET提供用戶資源訪問安全認證機制,提供產品級以及設備級的不同粒度的密鑰,並支持用戶自定義密鑰訪問權限,最大限度保證用戶設備以及應用層接入的安全性。
4.資源模型
OneNET資源模型如下圖:
4.1 用戶(user) —— OneNet平臺賬號
理解爲每一個OneNet平臺賬號
4.2 產品(product) —— 具體項目
用戶的最大資源集爲產品,產品下資源包括設備、設備數據、設備權限、數據觸發服務以及基於設備數據的應用等多種資源,用戶可以創建多個產品。理解爲用戶下的每一個項目,比如博哥建立一個溫溼度監控系統。
4.3 設備(device) —— 項目涉及到的物理設備
設備爲真實終端在平臺的映射,真實終端連接平臺時,需要與平臺設備建立一一對應關係,終端上傳的數據被存儲在數據流中,設備可以擁有一個或者多個數據流。比如每一個溫溼度模塊+8266可組成一個設備。
4.4 數據流與數據點 —— 物理設備上傳的數據
數據流用於存儲設備的某一類屬性數據,例如溫度,溼度,座標等信息;平臺要求設備上傳並存儲數據時,必須以key-value的格式上傳數據,其中key即爲數據流名稱,value爲實際存儲的數據點,value格式可以爲int、float、string、json等多種自定義格式。比如溫溼度數據。
4.5 APIkey —— 用戶校驗標識
APIkey爲用戶進行API調用時的密鑰,用戶訪問產品資源時,必須使用該產品目錄下對應的APIkey。其實跟買車票一樣,有身份證才讓上車。
4.6 觸發器(trigger) —— 報警服務
觸發器爲產品目錄下的消息服務,可以進行基於數據流的簡單邏輯判斷並觸發HTTP請求或者郵件。跟報警機制有點類似,觸發了報警機制(比如溫度超過多少),就做一些用戶提示操作。
4.7 應用(application) —— OneNet自帶UI展示
應用編輯服務,支持用戶以拖拽控件並關聯設備數據流的方式,生成簡易網頁展示應用。比如,溫溼度控制系統,我們可以拉取控件展示溫度折線圖。
5.術語解釋
在開發OneNet項目之前,我們需要了解OneNet常用術語:
6.OneNet開發準備
理解了OneNet基本知識之後,我們就可以開始建造我們自己的項目(博主不會教你怎麼去註冊OneNet,請自行註冊登錄)。
6.1 創建產品
登錄後進入開發者中心,創建不同協議下的產品(項目),博主在這裏先創建三個不同協議的產品(項目,後面的案例會基於這三個產品進行)。
它們分別對應以下產品配置:
其中最重要的信息就是“設備接入協議”,協議適用場景請見 協議簡介。
每種協議對應自己的開發方式以及調試工具,開發者可以自行查閱官方文檔。
6.2 創建設備
創建產品後會提示立即添加設備,而創建設備又有多種方式。
6.2.1 創建單個設備 —— 手動創建
創建產品後會提示立即添加設備,我們在提前預知設備的前提下推薦採用此種方式。具體可看成官方文檔 創建單個設備 。
手動創建使用場景:
- 提前預知設備,比如溫溼度控制系統上傳數據節點,我們可以提前預知設備信息以及設備數量。
6.2.2 批量創建設備 —— 手動創建
除了單個創建設備外,平臺還提供批量創建設備的功能。具體可看成官方文檔 批量創建設備 。
手動創建使用場景:
- 提前預知設備,比如多點溫溼度控制系統上傳數據節點,我們可以提前預知設備信息以及設備數量。
6.2.3 自動創建設備 —— API創建
在無法提前知道設備的場景下,我們無法提前去創建設備節點,推薦的做法是設備自動往OneNet平臺註冊。比如,智能家居LED系統中,我們無法提前預知家裏會安裝多少LED設備,這個時候就需要設備可以自動註冊綁定系統。在後面OneNet Mqtt中我們會講解這一點,屬於常用功能。具體API可以參考 API列表,開發者需要注意不同協議下使用不同的API。
6.3 數據流與數據點
創建完設備之後,我們就可以開始處理數據了。
OneNet平臺通過數據流與數據點來組織設備上行數據,如下圖所示:
設備上傳並存儲數據時,必須以key-value的格式上傳數據,其中key即爲數據流(stream)名稱,value爲實際存儲的數據點(point),value格式可以爲int、float、string、json等多種自定義格式。
在實際應用中,數據流可以被用於分類描述設備的某一類屬性數據,例如溫度,溼度,座標等信息,用戶可以自定義數據流的數據範圍,將相關性較高的數據歸類爲一個數據流。
數據流中的數據在存儲的同時可以“流向”後續服務,數據流是平臺後續數據服務(規則、觸發器、消息隊列等)的服務對象,後續數據服務支持用戶通過選擇數據流的方式選擇服務的數據來源。
數據流中的數據平臺會默認以時序存儲,用戶可以查詢數據流中的不同時間的數據點的值,如下圖:
6.4 應用管理 —— 數據展示
通過OneNET應用編輯器,用戶可以方便快捷地實現OneNET平臺上的設備數據流可視化。請開發者自行查看文檔 應用管理
基本上到這裏,我們完成了OneNet平臺上的一個項目配置。
7.總結
本篇屬於純理論篇,大體上介紹了一下OneNet平臺下的一些知識點,方便我們有個大體瞭解。接下來的篇章,博主將針對不同協議進行不同講解。