概述
多數IoT應用程序由三部分組成:IoT終端設備、查看和管理IoT終端設備的應用程序、以及連接、數據收集和分析的平臺:ActorCloud作爲物聯網設備管理平臺,可將終端設備和應用程序之間建立連接:
以下以車輛GPS定位器爲例,構建一個IoT Connect 應用程序的流程,包含以下三個部分:
- 車輛GPS模擬器(Python腳本仿真器)
- 應用程序(Postman)
- ActorCloud設備管理平臺
以上組成部分使用與 MQTT 協議進行實時的發佈/訂閱消息傳遞,將測試以下場景:
- 模擬的車輛頻繁地發佈遙測數據,APP應用程序通過API獲取來自ActorCloud的數據;
- 模擬車輛從應用程序側訂閱一個主題,APP應用程序命令對車輛發佈控制指令(比如開啓超速報警功能)。
準備工作
- 註冊免費試用ActorCloud賬戶,賬戶創建完成後,在ActorClound創建“車輛GPS”的產品,具體查看產品創建文檔。
- Python編碼模擬車輛發佈數據
- Postman軟件工具(用於模擬應用程序請求API)
註冊設備
添加能使用 MQTT協議且具備連接該服務實例的設備,對於設備客戶端,ActorCloud會分配主機名、用戶名和密碼,用於連接到服務實例,在設備管理->設備列表->設備詳情->編碼信息中,可查看詳情。如下圖:
更多設備註冊詳情,請參閱:設備註冊
設備連接
對於真實的設備連接,需確保固件是使用MQTT模塊構建,在設備連接時,需將ActorCloud註冊設備時分配的設備編號和訪問令牌給IoT設備。現基於Python語言模擬設備連接,用Python語言模擬設備連接需要的參數:
服務器名稱:mqtt.actorcloud.io
服務器端口:1883
客戶端標識符:客戶端標識符既爲設備編號“61502”
設備用戶名和密鑰:*******/********
如圖將參數指定給模擬設備:
執行此腳本,該設備連接到ActorCloud平臺,從ActorCloud可查看該設備的連接狀態,在設備管理->設備列表中可見該設備狀態爲在線:
模擬車輛發佈數據
用Python語言編碼模擬車輛發佈遙測數據(ActorCloud提供測試中心),將MQTT服務器地址、設備編號、連接用戶名、設備密鑰:
host_name = "mqtt.actorcloud.io"
host_port = 1883
client_id="61502"
username = "******"
password = "******"
設置到仿真模擬器裏,編碼python腳本,發送數據:
不同的事件類型可發佈到不同的主題,對於此設備,將信息發佈到主題device_event,每3秒上報一次數據:
返回到ActorCloud平臺的設備事件,可以看到終端設備發佈的數據,如下圖:
ActorCloud平臺生成API的密鑰
模擬車輛終端將數據發佈到ActorCloud。設備上報的數據,在被應用程序使用之前,需確保應用程序可訪問ActorCloud,以下爲應用程序生成 API 密鑰:
- 登錄的ActorCloud平臺,爲產品創建角色爲“超用應用”的應用,點擊完成後。
-
ActorCloud會爲該應用生成API 密鑰和身份驗證令牌:
應用程序調用ActorCloud平臺所有API,都需要使用應用 ID 與應用密鑰,更多細節,請參閱應用管理。
以下是使用Python語言基於Basic Auth 認證調用ActorCloud 的API編碼示例:
執行該腳本,可查看到調用API返回爲Json格式的數據,如圖:
APP應用程序中使用來自ActorCloud數據
通過API獲取模擬車輛發佈的數據,以下是簡單的 GET 示例,調用該API,需要基於ActorCloud平臺生成的API密鑰和密碼進行Basic Auth認證,該示例允許我們的應用程序發送 GET 請求。在此API 中,返回了我們在前面步驟中模擬車輛發佈的數據。
APP應用程序獲取這些數據後,可解析Payload的數據,對其分析,如果上報數據值增幅太大,可猜測到的事件是車輛處於加速狀態,應用程序可對模擬車輛設備發佈指令(比如安全提示信息的指令)。
對車輛發佈指令(ActorCloud下發、APP下發)
APP通過API對車輛下發指令
Postman模擬應用程序對車輛發佈指令,車輛模擬器訂閱用於接收應用程序或者平臺下發的指令的主題,需要以下準備:
- 模擬車輛從應用程序側訂閱主題,主題和APP應用程序確定好,這裏模擬車輛訂閱主題爲:‘livestream/278eac2510d04c0eb473df4478def376’
-
用APP應用程序對設備發送地標信息的指令
模擬車輛側,收到APP下發指令數據:
在真實場景中,設備收到下發數據,設備可執行對應的操作,並進行對應的響應。
ActorCloud對車輛下發指令
對於平臺下發的指令,在設備管理->設備列表->設備詳情->設備控制->添加指令中,ActorCloud對於登錄設備會代理訂閱‘devices/設備id/inbox'的主題,用戶只需要編碼Paylaod的json串:
車輛模擬設備,收到ActorCloud下發的指令數據:
總結
如本文演示的場景,ActorCloud不僅可從連網設備接收數據,還可以通過平臺或者API形式將數據或者指令發佈到設備,設備可以對下發數據執行計算,顯示提醒或執行其他操作,還可將設備上報的數據通過API形式給APP。用戶可根據自己業務使用ActorCloud,更多關於設備管理平臺,詳情瞭解:https://www.actorcloud.io/
更多信息請訪問我們的官網 emqx.io,或關注我們的開源項目 github.com/emqx/emqx ,詳細文檔請訪問 官方文檔。
1人點贊
作者:EMQ
鏈接:https://www.jianshu.com/p/c30a9e011b2e
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。