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回调函数的实现。