國外物聯網平台(3)
——IBM Watson IoT
馬智
平台定位
提供全面管理的雲托管服務,旨在簡化並從 IoT 設備中獲得價值。
- Watson IoT Platform 提供對 IoT 設備和數據的強大應用程序訪問,可快速編寫分析應用程序、可視化儀表板和移動 IoT 應用程序。
- Watson IoT Platform可以執行強大的設備管理操作,並存儲和訪問設備數據,連接各種設備和網關設備。Watson IoT Platform 通過使用 MQTT 和 TLS,提供與設備之間的安全通信。
- Watson IoT Platform使應用程序與已連接的設備、傳感器和網關進行通信並使用由它們收集的數據。應用程序可以使用實時 API 和 REST API 來與設備進行通信。
架構
平台API
連接類API
- MQTT API for applications
- MQTT API for devices
- MQTT API for gateways
- HTTP API for applications
- HTTP API for devices
實時分析類API
信息管理類API
風險管理類API
- IBM Blockchain API
- Open Blockchain API
認知計算類API
自然語言處理
- Natural Language Classifier
- Concept Expansion (Beta)
- Dialog
- Language Translation
- Relationship Extraction (Beta)
- Text to Speech
- Speech to Text
- Retrieve and Rank
圖像分析
- Alchemy Vision
- Visual Recognition (Beta)
文本分析
- Alchemy Language
- Relationship Extraction (Beta)
相關概念
- 組織:向 Watson IoT Platform 注冊時提供組織標識,確保僅可從設備和應用程序訪問組織自己的數據。
- 設備:設備可以是連接到因特網並具有放入雲中的數據的任何對象。設備必須先進行注冊,然后才能連接到 Watson IoT Platform。設備將使用認證令牌向 Watson IoT Platform 唯一表明自身身份。設備分為受管設備和非受管設備。
- 應用程序:連接到因特網並且希望與來自設備的數據進行交互和/或以某種方式控制這些設備的行為的任何對象。應用程序使用 API 密鑰和唯一應用程序標識向 Watson IoT Platform 表明自身身份。
- 網關設備:網關是設備的專用類。它們兼具應用程序和設備的功能,使其能夠充當訪問點,為無法直接連接的其他設備提供與服務的連接。
- 事件:事件是設備將數據發布到 Watson IoT Platform 所采用的機制。設備控制事件的內容,並為其發送的每個事件分配名稱。Watson IoT Platform 接收到事件時,將使用憑證來確定從哪個設備發送了該事件。由於使用這種體系結構,設備將無法模擬其他設備。
- 命令:命令是應用程序可用於與設備進行通信的機制。僅應用程序可發送命令,命令必須向特定設備發出。
- 設備注冊表:管理庫存,配置安全性以及存儲數百萬設備的元數據。定義設備類型以表示各設備型號,並將缺省元數據應用於該類型的所有設備。
- 連接:通過 MQTT 將設備、網關和應用程序安全地直接連接到 Watson IoT Platform。將設備中的數據作為事件進行建模,並控制事件進入應用程序的流程。
- 網關支持:在許多情況下,無法在服務和設備之間進行直接連接,Watson IoT Platform 允許可為多個設備提供間接連接的網關設備進行連接。
- 設備管理:通過在設備中實現對 Watson IoT Platform 設備管理協議的支持,允許 Watson IoT Platform 管理設備的生命周期。
- 外部服務集成:Watson IoT Platform 支持與外部服務的集成,以將其他聯機設備支持的數據和操作引入到平台中,從而使應用程序和設備開發人員能夠一直輕松利用 Watson IoT Platform API 與這些服務無縫交互。
- 歷史記錄:配置 Watson IoT Platform 以存儲設備生成的事件記錄。
- 上次事件高速緩存:API 現在可以返回特定設備的上次記錄的 event-id 值,或者特定設備報告的每個 event-id 的上次記錄值。上次事件高速緩存僅適用於過去 30 天內發送的值。
功能
-
連接、配置和管理設備
- 在Bluemix連接Watson IoT ,配置和管理IoT設備和數據,創建應用程序、可視化儀表板和移動 IoT 應用程序。
-
可視化歸集事件
- Bluemix以可視化的方式收集IoT事件到邏輯流程圖中,使用Node-Red進行拖拽式流程編排。
- 收集和管理時間序列視圖的數據,准實時地在數據可視化面板中查看IoT設備狀態。
-
實時分析
- 使用Analytics Real-Time Insights執行IoT設備數據的實時分析,觀察設備健康度和操作狀態。
-
應用認知計算
- 使用文字和語音進行自然的交互
- 圖像和場景識別
- 對傳感器輸入進行模式匹配
- 與外部數據進行關聯,如天氣和Twitter
-
應用區塊鏈
- 使用風險管理平台,包括區塊鏈,存儲數據到共享且無法擦除的分類賬,為所有參與者提供安全的交易數據鏈訪問。
-
設備管理
- 通過使用設備管理服務,執行各種設備操作,例如,重新引導或更新固件、接收設備診斷和元數據,或者執行批量設備添加和移除。
-
響應式可擴展連接
- 使用業界標准的 MQTT 協議(經 OASIS 批准)連接設備和應用程序。MQTT 旨在與設備實時、高效地交換數據。
-
安全通信
- 從設備中安全接收數據並向設備發送命令。通過將 MQTT 與 TLS 結合使用來完成此操作,保護設備與服務間的所有通信。
-
存儲和訪問數據
- 有權訪問來自設備的實時數據,並將數據存儲一段時間,從而有權訪問設備的歷史數據和實時數據。
Bluemix
- Bluemix是基於 Cloud Foundry 開源項目的平台即服務 (PaaS) 產品。
- Bluemix提供了流行的運行時和龐大的服務目錄,且支持基於 Docker 的容器和 VM 部署。
- Bluemix用於快速創建、托管、擴展服務和應用程序,開發者只需要關注應用程序邏輯和應用程序設計。
- Bluemix提供了對物聯網設備和數據的應用程序訪問,功能簡單而強大。
外部服務集成
-
Jasper 是一個用於 SIM 設備的管理平台。Jasper 已集成到 Watson IoT Platform 儀表板中,從而可通過 Watson IoT Platform 組織儀表板來管理 Jasper 設備。
-
查看總體 Jasper 數據
- 顯示:狀態、套餐、本月至今數據使用情況、本月至今 SMS 使用情況、本月至今語音使用情況、超額限制、添加日期和修改日期。
-
更改 SIM 激活狀態
- 選擇:庫存、可隨時激活、已激活、已取消激活和已廢棄
-
查看 SIM 使用情況
- 顯示:周期開始日期、計費數據和數據總量、計費 SMS 和 SMS 總量、計費語音和語音總量。
- 可以使用 YYYY-MM-DD 格式設置周期開始日期。
- 將 SMS 發送到 SIM
- 更改套餐
-
-
與IBM Analytics for Hadoop 集成
- 使用 IBM Hadoop 分布式文件系統 (HDFS) 節點,應用程序執行創建、讀取、附加和刪除操作。
-
與Mobile Application Security 和 Push 集成
- 使用 Bluemix 中的應用程序向移動設備發送通知,以響應從 Internet of Things Foundation 傳感器設備收到的數據。
Analytics Real-Time Insights
- 提供實時分析引擎和分析編寫功能,支持對 IoT 設備數據進行監控並賦予語境,能加快了解當前情況,改進決策並更好地響應出現的問題。
- 使用基於規則的簡單組合模型以及可擴展框架,將IoT設備數據與主資產數據相組合,分析上下文中的情境,以及自動響應以改進運營並提高可用性和服務級別。
- 獲取實時設備數據訂閱源。入局數據通過虛擬數據模型進行解釋,此模型可使用來自資產管理系統的主資產數據進行擴充。
- 用戶定義的規則會應用於實時流式采集數據,以確定需要關注的情況。通過操作引擎,定義對檢測到的情況的自動響應,例如發送電子郵件、觸發 IFTTT 配方、執行 Node-RED 工作流程或使用 Webhook 來連接到各種 Web Service。
- 實時數據顯示在 IoT 設備位置、數據、度量值和警報一覽視圖的可配置儀表板。
- 通過 Analytics Real-Time Insights,對來自設備的實時數據執行分析,並深入了解這些設備的運行狀況以及總體運營狀況。
- 設置 Watson IoT Platform 服務將分析引擎連接到設備后,才能開始使用 Analytics Real-Time Insights。
- 使用現有 Watson IoT Platform 服務,也可以創建新服務。
- 要快速啟動並運行此服務,將手機應用程序及其關聯的 Watson IoT Platform 服務部署到組織。
MQTT
- 設備和應用程序用於與Watson IoT Platform 進行通信的主機制為 MQTT;這是設計用於與傳感器和移動設備高效交換實時數據的協議。
- MQTT 通過 TCP/IP 運行,mqtt.org 中提供了一系列范圍廣泛的 MQTT 客戶機庫,從 Eclipse Paho project 查找MQTT客戶機庫。
- MQTT 3.1 是目前使用最廣泛的協議版本。V3.1.1 包含多個次級增強功能,並且已作為 OASIS 標准認可。
MQTT服務質量
-
最多一次 (QoS0)
- 消息最多傳遞一次,也可能根本不會傳遞。通過網絡進行傳遞未得到確認,並且該消息未存儲。如果客戶機斷開連接或服務器發生故障,那么可能會丟失消息。QoS0 是最快的傳輸方式。有些時候被稱為"發完就忘"。
- MQTT 協議不需要服務器在 QoS0 級別將發布內容轉發給客戶機。如果客戶機在服務器接收到發布內容時已斷開連接,那么根據服務器實施,可能會廢棄發布內容。
-
至少一次 (QoS1)
- 消息總是至少傳遞一次。如果在發送方接收到確認之前發生了故障,那么可能會多次傳遞該消息。該消息必須存儲在發送方本地,直到發送方接收到指示接收方已發布該消息的確認為止。在此期間將一直存儲該消息,以防必須再次發送該消息。
-
恰好一次 (QoS2)
- 消息總是恰好傳遞一次。該消息必須存儲在發送方本地,直到發送方接收到指示接收方已發布該消息的確認為止。在此期間將一直存儲該消息,以防必須再次發送該消息。QoS2 是最安全但最慢的傳輸方式。將使用比 QoS1 更復雜的握手和確認序列,以確保不會出現重復的消息。
應用程序的 HTTP API
- 查看組織詳細信息。
- 成批設備操作(列出所有、添加、移除)。
- 設備類型操作(列出所有、創建、刪除、查看詳細信息、更新)。
- 設備操作(列出設備、添加、移除、查看詳細信息、更新、查看位置、查看管理信息)。
- 設備診斷操作(清除日志、檢索日志、添加日志信息、刪除日志、獲取特定日志、清除錯誤代碼、獲取設備錯誤代碼、添加錯誤代碼)。
- 連接問題確定(列出設備連接日志事件)。
- 歷史事件檢索(查看所有設備的事件、查看某種設備類型的事件、查看特定設備的事件)。
- 設備管理請求操作(列出設備管理請求、啟動請求、清除請求狀態、獲取請求詳細信息、獲取每個受影響設備的請求狀態列表、獲取特定設備的請求狀態)。
- 使用情況管理(檢索某段時間內的活動設備數、檢索歷史事件數據所用的存儲量、檢索已用數據總量)。
- 代表設備發布事件(測試)
- 服務狀態查詢(為組織檢索服務狀態)。
應用程序的 MQTT 連接
-
客戶機連接
- 每個已注冊組織具有唯一端點,在連接該組織中應用程序的 MQTT 客戶機時必須使用此端點。
- org_id.messaging.internetofthings.ibmcloud.com
-
MQTT 客戶機標識
- 應用程序必須使用特定格式的客戶機標識進行認證
- a:org_id:app_id
-
MQTT 認證
- 應用程序需要 API 密鑰才能連接到組織。注冊 API 密鑰時,將生成必須與該 API 密鑰配合使用的令牌。
-
發布設備事件
- 應用程序在發布事件時可將事件視為如同來自任何已注冊設備一樣。
- 發布到主題 iot-2/type/device_type/id/device_id/evt/event_id/fmt/format_string
-
發布設備命令
- 應用程序可將命令發布到任何已注冊設備。
- 發布到主題 iot-2/type/device_type/id/device_id/cmd/command_id/fmt/format_string
-
預訂設備事件
- 應用程序可預訂來自一個或多個設備的事件。
- 預訂主題 iot-2/type/device_type/id/device_id/evt/event_id/fmt/format_string
-
預訂設備命令
- 應用程序可預訂將發送到一個或多個設備的命令。
- 預訂主題 iot-2/type/device_type/id/device_id/cmd/command_id/fmt/format_string
-
預訂設備狀態消息
- 應用程序可預訂一個或多個設備的監視狀態。
- 預訂主題 iot-2/type/device_type/id/device_id/mon
-
預訂應用程序狀態消息
- 應用程序可預訂一個或多個應用程序的監視狀態。
- 預訂主題 iot-2/app/app_id/mon
設備的 HTTP API
-
發布事件
- 作為 MQTT 的替代方法,設備可通過 HTTP API 向 IoT Platform 提交事件。設備可以向"https://${orgid}.internetofthings.ibmcloud.com/api/v0002/device/types/${typeId}/devices/${deviceId}/events/${eventId}"提交"POST"請求。
-
認證
- 請求必須包含授權頭。只支持基本認證方法。通過 API 密鑰認證應用程序,在應用程序向 IoT Platform API 發出任何請求時,必須提供 API 作為其憑證:
- 用戶名 ="use-token-auth"
- 密碼 = 認證令牌
-
服務質量
- HTTP(S) 協議提供"最多一次"盡力而為的傳送,類似於 MQTT 協議提供的 QoS0 服務質量。在使用 QoS0 或 HTTP(S) 等效項傳送事件消息時,設備或應用程序必須實現重試邏輯來保證傳送。
設備的 MQTT 連接
-
客戶機連接
- 每個已注冊組織具有唯一端點,在連接該組織中設備的 MQTT 客戶機時必須使用此端點。
- org_id.messaging.internetofthings.ibmcloud.com
-
MQTT 客戶機標識
- 設備必須使用以下格式的客戶機標識進行認證:
- d:org_id:device_type:device_id
-
MQTT 認證
- 用戶名
- 服務當前僅支持針對設備進行基於令牌的認證,因此目前針對設備只有一個有效用戶名。值"use-token-auth"向服務表明:設備的認證令牌將作為 MQTT 連接的密碼進行傳遞。
- 密碼
- 如果使用基於令牌的認證,請在建立 MQTT 連接時,將設備認證令牌作為密碼提交。
-
發布事件
- 設備只能發布以下格式的事件主題:iot-2/evt/event_id/fmt/format_string
-
預訂命令
- 設備只能預訂以下格式的命令主題:command_id/fmt/format_string。無法預訂其他設備的事件,並且將僅接收專門發布到設備自身的命令。
-
受管設備
- 設備生命周期管理支持是可選的,IoTF 使用的設備管理協議利用設備已用於事件和命令控制的相同 MQTT 連接。
- 受管設備可以發布服務質量 (QoS) 級別為 0 或 1 的消息。如果使用 QoS 級別 1,那么在必要時會對來自設備的消息進行排隊。來自設備的消息不能是保留消息。
- IoT Platform 可發布 QoS 級別為 1 的請求以支持消息排隊。要在未連接受管設備的情況下讓發送的消息排隊,該設備應使用"cleansession=false"。
設備管理協議
- "設備管理"功能可創建新一類的已連接設備,即"受管設備"。受管設備必須包含一個管理代理程序,該代理程序可理解"IoT Platform 設備管理協議",並可向"IoT Platform 設備管理"服務器發送"管理設備"請求。受管設備可以訪問設備管理操作。
- 設備管理協議定義了一組受支持的操作。設備管理代理程序可以支持其中一部分操作,但必須支持"管理設備"和"取消管理設備"操作。支持固件操作的設備還必須支持觀察。
-
設備管理生命周期
- 在 IoT Platform 中使用儀表板或 API 創建設備及相關設備類型。
- 設備必須連接到 IoT Platform 並使用"管理設備"操作,才能成為受管設備。
- 通過設備操作(例如,固件更新和設備重新引導)查看和操縱設備的元數據(如設備模型中所述)。
- 設備可以通過設備管理協議來傳達更新(例如,位置或診斷信息,以及錯誤代碼)。
- 為了能夠在設備眾多的情況下處理失效的設備,"管理設備"操作請求中提供了一個可選的生命周期參數。此生命周期參數包含的是一個秒數,設備必須在這段時間內發出另一個"管理設備"請求,才能避免被標記為停止而成為非受管設備。
- 設備退役后,可以使用儀表板或 REST API 從 IoT Platform 中移除該設備。
Context Mapping
- Watson IoT Context Mapping 允許應用程序使用地理空間功能,例如,基於全球道路網絡的地圖匹配和最短路徑搜索。
-
通過 Context Mapping REST API 使用以下功能:
- 使用道路網絡幾何圖形的准確度高的地圖匹配。
- 處理地圖上的實時事件,例如交通。
- 考慮到實時事件的動態最短路徑搜索(路線搜索),例如交通。
- 檢索道路幾何圖形數據,可以用於在地圖上繪制道路形狀。
-
Context Mapping 服務使用從 OpenStreetMap 抽取的道路網絡數據(以 WGS84 坐標的形式)。只有車輛可通行的道路才用於分析。
- 使用 Context Mapping 進行地圖匹配
- 使用 Context Mapping 進行路線搜索
- 使用 Context Mapping 處理交通事件
Driver Behavior
- 使用 Watson IoT Driver Behavior,通過使用 Driver Behavior API 對駕駛員的行為進行分析,以收集並分析汽車探測數據和前后關聯的數據。
- 在創建和部署未綁定的服務實例之后,將應用程序與 Driver Behavior API 集成。
安全
-
IBM Watson IoT 是一項完全受管的雲托管服務,解決了以下方面的安全問題:
- 認證:查明嘗試訪問的用戶、設備或應用程序的身份。
- 授權:確保用戶、設備和應用程序有權訪問組織的信息。
- 加密:確保數據僅可由授權方讀取,並且不會被攔截。
安全 – 組織管理
-
基於瀏覽器的 GUI 和 REST API 前均標有 HTTPS,同時帶有 DigiCert 簽署的證書。
- GUI:已通過 IBM 標識認證。
- REST API:通過 GUI 創建 API 密鑰后,可將其用於針對組織執行已認證 的REST API 調用。
安全 – 設備和應用程序
- 注冊設備或生成 API 密鑰后,認證令牌將使用加密鹽 (Salt) 並散列化。
- 設備憑證和 API 密鑰在遭到破壞的情況下可單獨進行撤銷。
安全 – 連接
- 設備通過只有用戶知道的 clientId 和認證令牌的唯一組合進行連接。
- 提供了針對通過 TLS (V1.2) 的連接的完全支持。
- 使用了開放式標准 (MQTT V3.1.1) 以允許在很多平台和語言之間輕松進行互操作。
安全 – 設備之間的數據泄露
-
設備僅有權發布和預訂受限主題空間:
- /iot-2/evt/+/fmt/+
- /iot-2/cmd/+
- 所有設備都使用同一主題空間,防止設備能模仿其它的設備。
- 假冒其它設備的唯一方式是獲取該設備的遭到破壞的安全憑證。
安全 – 防止組織之間的數據泄露
- 設備和應用程序的主題空間域在單個組織內。
- 基於客戶機認證,使用組織標識變換主題結構,從而使一個組織無法訪問另一個組織中的數據。
平台界面
創建Bluemix賬戶
選擇區域
Watson IoT Platform 服務實例
配置用戶訪問權限
生成API秘鑰
創建設備類型
添加設備
設備認證令牌
設備事件