上一篇「BT Mesh APP開發流程介紹(Android 版) - 上」已經針對Mesh架構、節點、元素、模型、發佈、訂閱及裝置開通與組網流程做介紹,接著本篇為大家解釋發佈及訂閱的用法,並介紹在QMesh Library內的重點程式碼。
二. Qmesh程式碼調用及介面介紹
1. Group(Subscribe, 訂閱):
在下方“+”添加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」就能夠控制一個區域內的所有裝置。希望這兩篇文章有幫助到各位讀者,有問題歡迎聯繫我!
資料參考:
- Qualcomm Android SDK: qualcomm_mesh_demo_application.android.1.0.0_20200106(若有需求,請自行與「詮鼎科技Qualcomm Team」聯繫)
評論