BT Mesh APP開發流程介紹(Android 版)- 下

一. 前言

上一篇「BT Mesh APP開發流程介紹(Android ) - 」已經針對Mesh架構、節點、元素、模型、發佈、訂閱及裝置開通與組網流程做介紹,接著本篇為大家解釋發佈及訂閱的用法,並介紹在QMesh Library內的重點程式碼。


二. Qmesh程式碼調用及介面介紹

1. GroupSubscribe, 訂閱):

在下方“+”添加Groups的按鈕


編輯Group名稱及選擇節點,下方節點為目前BT Mesh網路下包含的設備,如圖A。在Qualcomm Android APP SDK內“AddGroupsActivity.java”檔案中透過“MeshDatabaseManager.getInstance().getNodeList()”取出在資料庫內節點資
料。當輸入Group名稱後並選擇下方裝置,按下“ADD/REMOVE”按鈕即新增完成。當按下“ADD/REMOVE”按鈕時,背景會執行“updateSelectedNodeList()”更新列表,並且透過“MeshDatabaseManger.getInstance().getNewGroupAddress(netID)”取得新的Group Unicast。執行“ADD Node/Delete Node”時會執行檔案內“Add Request及Delete Request”的功能,透過Group Address判斷列表內是否存在相同的Node Unicast Address,且利用“private void addRequest(Node node)及private void deleteRequest(Node node)”函式判斷資料庫中的Node資料,再執行相對應的動作。

(圖A)


成功將裝置新增至Group後,會在按下“ADD Node/Delete Node”後跳出視窗(圖B),此視窗的資訊為透過“MeshGroupingResponseListener implements ConfigClientListener”class所實現,透過“MeshConstants.EXTRA_KEY_CONFIG_CLIENT_SUBSCRIPTION”取得回傳資料,並利用“MeshConfigRequestHandler.getInstance().getCurrentRequest()”判斷Request為Subscribe或Unsubscribe,再將Node的Address及Model ID顯示在上方。判斷Request時需注意“SUB_OPERATION_ADD”及“SUB_OPERATION_DELETE”兩種參數,透過“MeshConstants.EXTRA_KEY_CONFIG_CLIENT_SUBSCRIPTION”取出Node Unicast Address、Node Model ID及Subscribe或Unsubscribe的狀態。

(圖B)

Subscribe/Unsubscribe後,Group列表上看到目前存在哪些Group (圖C)。Group介面主要是在專案內的“GroupFragment”檔案中進行編譯,透過“updateLists()”函式內的“MeshDatabaseManager.getInstance().getGroupList()”功能取得現有的Group並顯示名稱、Unicast及Nodes數量在上方。


(圖C)


2. Publish (發佈):


如(圖D),Publish的部分提供了Select Model ID, Set Publish Address, Application key index,可以針對個別的裝置對Group進行Publish的功能。Select Model ID是針對基本的On/Off做設定,Set Publish Address是針對Group的Unicast做綁定,而Application Key這邊固定使用Key Index 0。

(D)

專案內”NodeConfigActivity”檔案中主要用來執行Publish的功能,  進入裝置Publish的頁面後,在Select Model ID的部分利用迴圈“for (NodeElement nEle: mNode.elementList)”的方式撈出Node內包含的Server Model,透過“ModelConstants.ModelNameList.get((int)mEle.modelId),mEle.modelId))”將所有的Model ID顯示在列表上。在Publish Address的部分是利用“MeshDatabaseManager.getInstance().getGroupList()”從資料庫中將Group的資料取出,再使用“grpList.name及grpList.address”將資料顯示於列表上。最後在Application Key Index的部分在專案內直接用預設的方式定義“Key Index 0”及“Key Index 1”,而在操作中都使使用“Key Index 0”。

三. 小結

“BT Mesh APP開發流程介紹(Android 版)-上”這篇博文內解釋了許多BT Mesh的基本觀念,也包含了本文介紹的「Publish」及「Subscribe」這兩項重點功能,透過「Publish」及「Subscribe」就能夠控制一個區域內的所有裝置。希望這兩篇文章有幫助到各位讀者,有問題歡迎聯繫我!


資料參考:

  1. Qualcomm Android SDK: qualcomm_mesh_demo_application.android.1.0.0_20200106(若有需求,請自行與「詮鼎科技Qualcomm Team」聯繫)

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論