APP和設備處于局域網環境中,未和外網連接,往往需要通過本地通信的方式,對設備進行控制和查詢。阿里云IoT提供了一種本地通信方案,可以達到該目標。

背景信息

設備端的Link Kit SDK中已內置本地通信功能(ALCS),這樣集成Link Kit SDK的設備,即可使用本地通信能力。集成了ALCS client功能的android app、IOS app、邊緣網關等終端都可以通過本地控制與芯片模組產品交互。

原理圖

第一次連接和認證階段 APP 會和云端有一次數據交互來獲取認證信息,連接認證成功之后會將認證數據保存在本地,后續的連接認證優先使用本地緩存的認證數據。

操作步驟

  1. App端開發。

    App端流程如下。

    流程圖
    • iOS

      iOS端開發依賴 IMSThingCapability.framework。

      pod 'IMSThingCapability'
    • Android

      安卓端開發請依賴 public-tmp-ext-boneplugin SDK 包。

      依賴關系
  2. 設備端開發。
    對于本地通信功能,設備端只需要使用IOT_RegisterCallback函數注冊ITE_PROPERTY_GET事件,實現對應回調函數即可。

    接口說明如下。

    • 當該事件被觸發時,用戶收到的payload格式為本地通信請求的設備屬性列表,以JSON格式描述。例如:["property1","property2","property3"]
    • 當用戶回復該本地通信請求時,需按如下格式回復消息:{"property1":...,"property2":...,"property3":...}

    示例如下。

    property1為int型,property2為字符串類型,property3為復合類型,包含int型的item1和字符串類型的item2:

    {"property1":23,"property2":"hello,world","property3":{"item1":23,"item2":"hello"}}

    具體代碼可參考SDK Example中的user_property_get_event_handler回調函數的實現。