標籤:
國外物聯網平台初探(三)
——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 Distributed File System (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秘鑰
建立裝置類型
添加裝置
裝置認證令牌
裝置事件
國外物聯網平台初探(三):IBM Watson IoT