https://www.jianshu.com/p/c30a9e011b2e

概述

多數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人點贊

 

EMQTT

 



作者:EMQ
鏈接:https://www.jianshu.com/p/c30a9e011b2e
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章