本文介绍用户如何通过生活物联网SDK开发接入生活物联网平台的网关及子设备。

术语解释

  • 网关设备:也叫主设备,是指可以挂载子设备的直连设备,网关具有子设备管理模块,维持子设备的拓扑关系,并且可以将拓扑关系同步到云端。
  • 子设备:本质上也是设备,但子设备不能直接连接到云端,只能通过挂接到网关上,通过网关间接连云,例如使用zigbee协议联网的设备。
  • 设备ID:设备句柄,在网关SDK中用于标识一个具体的设备。
  • 设备证书:指设备的productKey、deviceName和deviceSecret,用于在阿里IoT云中唯一标识设备。
  • 拓扑关系:子设备和网关的关联关系为拓扑关系,子设备与网关建立拓扑关系后,便可以复用网关的物理通道进行数据通信。
  • 子设备动态注册:子设备无需烧录一机一密(设备证书),只需要烧录ProductKey、ProductSecret,然后基于子设备的唯一标识作为设备证书中的deviceName(例如SN),再使用网关SDK到云端动态注册获取deviceSecret,从而得到完整的设备证书。子设备就可以使用该设备证书到云端进行设备的身份认证,并进而被云端统一管理。
  • TSL:Thing Specification Language,基于JSON格式,用于描述设备所具备的功能和能力,详细说明参见物模型介绍

网关开发流程

网关产品的开发流程如下图所示。


网关开发流程

请参见SDK概述与开发环境设置下载无AliOS的SDK。

  • 底色为蓝色的步骤表示该步骤中的功能完全由网关厂商自己定义与实现。
  • 网关如何去发现以及连接子设备是由网关厂商与子设备厂商去协商和定义的,平台并不参与网关与子设备之间的通信过程和数据格式定义。但是当网关添加一个子设备后,需要使用平台提供的 子设备验证机制 来验证子设备的合法性。
  • 当手机App对子设备进行控制时,命令将会通过手机发送到云端、再由云端发送到网关设备后转发给子设备。网关与子设备之间的数据格式由网关厂商和子设备厂商定义,因此网关需要进行数据格式从平台格式到厂商数据格式的转换。
  • 平台提供的网关SDK并不包含网关如何获取IP地址的功能。网关可能使用以太网、WiFi、或者蜂窝网技术(GRPS、3G、4G等)方式连网,网关上如何通过DHCP获取IP地址、域名服务器地址、下一跳路由器的IP地址等功能由网关厂商实现。
  • 如果网关使用WiFi接入网络,并且网关具有串口、或者web server这样的功能可以让用户输入WiFi热点的SSID/密码,那么网关厂商可以不用适配与集成阿里的WiFi配网功能。

在生活物联网平台定义网关产品

  1. 创建项目。
    参见创建项目
  2. 创建产品。
    参见新建产品,并按照以下要求设置参数。
    • 选择所属分类网络设备中的网关
    • 选择节点类型网关
    • 根据网关实际连网方式选择连网方式

    创建产品
  3. 添加测试设备。
    参见在线调试设备来添加测试设备,并设置设备的绑定策略等。

终端用户添加子设备的交互示意图

本节介绍用户添加子设备的整个交互示意,以让网关厂商了解子设备是添加到云端的整体过程。设备用户购买了网关和子设备之后,需要先添加网关,再将子设备添加到网关。完成后才能对子设备进行控制。下面是已添加网关后,添加子设备的多端交互示意图。


终端用户与子设备交互

当用户发起子设备添加时,手机将会向云端发送PermitJoin命令,之后云端会将该命令转发给网关,此时网关需要去发现与连接子设备,网关如何去发现与连接子设备是由网关厂商与子设备厂商来定义和实现的。当网关收到PermitJoin后,将发现的子设备上报到云端。

说明 如果网关没有收到来自云端的permitJoin消息,即使子设备已连接到网关,也不要向云端添加子设备;可以等到收到permitJoin之后再将已连接的子设备通知云端。

云端与网关之间数据格式由阿里云IoT定义,网关与子设备之间的数据格式是网关厂商与子设备厂商定义,因此网关需要实现阿里云IoT数据格式与子设备之间数据格式的转换工作。

当云端添加子设备到网关之后,将会发送消息到手机端,从而让用户可以看见添加的子设备,继而对子设备进行控制。

SDK应用于网关时的推荐配置

解压获取到的SDK包后,在主目录下的make.settings文件,定义功能模块的需求。对网关而言,除了不同联网方式(WiFi,以太网、蜂窝网)的不同配置之外,还需要配置以下参数的使能。

FEATURE_DEVICE_MODEL_GATEWAY=y
FEATURE_DEPRECATED_LINKKIT=n

HAL适配

请参照下面的文档进行HAL的实现。

网关编程

请参见子设备管理,了解如何进行网关的初始化、如何添加子设备、如何上报子设备的在线状态、以及对子设备进行管理。

子设备产品开发

子设备产品开发流程如下图所示。


子设备开发流程

在生活物联网平台为子设备创建产品,并按照以下要求设置参数。

  • 选择节点类型设备
  • 选择是否接入网关
  • 根据子设备实际连网方式选择连网方式

创建产品
说明 每个子设备也需要在智能生活平台上创建产品,并定义该产品支持的属性、事件、服务。子设备产品的注册方式为“动态注册”,每个子设备都需要一个有效且唯一的阿里IoT激活码。目前该激活码不需要烧写到子设备上,但是子设备厂商需要为每个产品申请激活码。子设备的激活码的DeviceName需要由子设备厂商指定,并上传到生活物联网平台,请参见配置激活码烧录方式了解步骤。