全部产品
云市场

WiFi设备接入LP

更新时间:2019-04-22 16:39:22

本文描述WiFi设备如何接入LP平台(阿里云IoT物联网平台)。

SDK依赖

下面是需要设备商在产品上实现、而不是SDK提供的功能:

  • WiFi热点信息输入,让WiFi设备可以连接WiFi AP
  • 通过DHCP Client从路由器获取IP地址,或者手动指定IP地址功能

开发过程

云端开发

  • 创建WiFi产品

开发者需要在云端创建产品,定义产品功能,云平台会自动为产品生成产品标识(ProductKey)以及产品密钥(ProductSecret),ProductKey的长度为11字节。开发者可以参见创建WiFi产品操作过程了解在物联网平台的控制台上的操作

注:开发者开发时需要将产品的ProductKey复制下来备用
  • 创建调试设备

开发者需要在云端创建调试设备,云平台会自动为产品生成设备密钥(DeviceSecret)和设备标识(DeviceName),这两个数值的长度最长为32字节。开发者可以参见创建调试设备操作过程了解在物联网平台的控制台上的操作


注:开发者开发时需要将设备的DeviceSecret、DeviceName复制下来备用。


在本文中使用设备身份认证信息统称ProductKey、ProductSecret、DeviceName、DeviceSecret。

  • 云端数据处理

设备上报数据到物联网平台之后,开发者可以将数据转发到自己的业务服务器,或者在物联网平台上将该数据转发到另外的设备;


需要发送数据给设备时,开发者需要调用物联网平台提供的接口将数据发送给设备。

设备端开发

开发者需要设计如何保存设备的产品标识(ProductKey)、产品密钥(ProductSecret)、设备标识(DeviceName)、设备密钥(DeviceSecret)到每个设备上,建议开发者可以将这些信息加密之后存放到设备的Flash的某个位置、或者某个文件中,当设备上电后将这些信息从指定的地方读取出来之后传递给SDK。

开发者开发设备有以下几种方式:

  • 基于TOPIC进行数据收发

开发者在物联网平台产品定义时添加topic,指定topic用于数据发布(指设备数据上报)、订阅(设备从云端接收数据)或者“发布和订阅”,开发者根据产品的需要进行topic的定义以及数据格式的定义。


因此开发者在设备端开发时:

  • 获取设备的身份认证信息
  • 开发让用户输入WiFi热点SSID/密码的实现
  • 当设备已经获取到IP地址之后,调用SDK提供的API连接到物联网平台并进行认证
  • 当SDK连接到阿里云物联网平台并通过认证后,对于希望从云端接收到的数据的topic进行订阅,并编写接收到数据后的处理函数
  • 根据自己产品的功能,实现有数据需要上报时,将数据发送到产品的用于数据上报的topic
  • 编写设备连接异常断开时的异常处理。注:若SDK已连接到物联网平台之后再断开,SDK会自动发起重连
  • 基于物模型进行设备开发

开发者在物联网平台可以使用物模型来定义产品,也即定义产品支持的属性、服务、事件,其中

  • 属性表示设备支持的某个可读、或者可读可写的参数,比如灯的亮度
  • 服务表示一个设备支持的功能,比如让一个设备重启
  • 事件是设备主动上报的某种情况发生的信息,比如有人在撬锁时智能锁可以上报一个暴力撬锁的事件到云端进行报警


使用物模型开发设备的好处在于设备的功能以JSON格式进行了格式化,设备与云端交互数据的可读性较好,并且对云端服务来说编程比较友好,阿里云IoT也对常见的产品进行了物模型定义,开发者可以使用阿里云定义的物模型进行设备开发,这样当有应用服务商想对设备进行管理时,只要将物模型定义告知服务商即可。


因此开发者在设备端开发时:

  • 获取设备的身份认证信息
  • 开发让用户输入WiFi热点SSID/密码的实现
  • 当设备已经获取到IP地址之后,调用SDK提供的API连接到物联网平台并进行认证
  • 当SDK连接到阿里云物联网平台并通过认证后,将设备属性的最新数据上报云端
  • 当设备的属性发生变化时,将设备属性的最新数值上报云端
  • 注册服务处理函数,对收到的服务进行处理
  • 编写设备连接异常断开时的异常处理。注:若SDK已连接到物联网平台之后再断开,SDK会自动发起重连

开发者需要根据设备开发使用的语言/平台进行设备的功能开发,不同语言SDK的使用方式存在差异,下面是支持的语言/平台的SDK:

示例

基于Ubuntu+C+MQTT Topic的数据收发实现

请参见快速体验中的“以MQTT TOPIC方式接入设备”,该章节描述了设备在Ubuntu上使用C SDK将数据发送到物联网平台、然后将该数据接收回来的实现案例。

可参见自定义MQTT TOPIC编程了解相关细节

基于Ubuntu+C+MQTT+物模型的加法器实现

请参见快速体验中的“以物模型编程方式接入设备”,该章节描述了在Ubuntu上使用C SDK实现的一个支持加法运算的设备逻辑。

可参见C语言的物模型编程指南了解相关API说明

基于Ubuntu+C+MQTT的OTA实现

OTA用于设备固件升级,C SDK的目录src\ota\examples\ota_example_mqtt.c描述了OTA的实现示例。
可参见C语言OTA的说明文档了解相关API说明

基于Ubuntu+C+MQTT的动态注册实现

如果在产线上给每个设备烧录ProductKey、ProductSecret、DeviceName、DeviceSecret,由于每个设备的DeviceName和DeviceSecret每个设备烧写的内容都是不一样的,厂商需要对产线进行改造。有的厂商不愿意进行产线工具改造,因此阿里云IoT提供了动态注册用于解决该问题,设备上烧写ProductKey、ProductSecret,并使用设备的MAC地址、或者序列号作为设备标识(DeviceName),来避免对产线工具进行改造。

C SDK的目录src\dynamic_register\examples\dynreg_example.c示例了如何动态获取设的DeviceSecret,然后再连接阿里云物联网平台。

可参见C语言的设备认证编程文档中的“一型一密”了解细节。

设备量产

当设备功能调试运行正常之后,设备进入量产阶段。设备量产是指设备厂商将产品的固件烧录到每个设备,并将每个设备的身份认证信息烧录到每个设备的过程。

开发者需要对自己的产线进行设计来将设备的身份信息可以快速的烧录到每个设备中

开发者需要在阿里云物联网平台为所有的设备申请设备身份信息,操作步骤为“设备管理”->“设备”,选中相应产品后点击“批量添加”批量获取设备身份信息。