本文描述Wi-Fi设备如何接入物联网平台。
下面是需要设备商在产品上实现、而不是SDK提供的功能:
- Wi-Fi热点信息输入,让Wi-Fi设备可以连接Wi-Fi AP。
- 通过DHCP Client从路由器获取IP地址,或者手动指定IP地址功能。
云端开发
- 创建Wi-Fi产品:开发者需要在云端创建产品,定义产品功能,云平台会自动为产品生成产品标识(ProductKey)以及产品密钥(ProductSecret),ProductKey的长度为11字节。
- 创建调试设备:开发者需要在云端创建调试设备,云平台会自动为设备生成设备密钥(DeviceSecret)和设备标识(DeviceName),这两个数值的长度最长为32字节。
- 云端数据处理 :
- 设备上报数据到物联网平台之后,开发者可以将数据转发到自己的业务服务器,或者在物联网平台上将该数据转发到另外的设备。
- 需要发送数据给设备时,开发者需要调用物联网平台提供的接口将数据发送给设备。
设备端开发
开发者需要设计如何保存设备身份认证信息到每个设备上,建议开发者将该信息加密后存放到设备的Flash的某个位置或某个文件中,当设备上电后可以将这些信息从指定的地方读取出来,然后传递给SDK。
开发者开发设备有以下两种方式。
- 基于Topic方式开发设备
开发者在物联网平台产品定义时添加topic,指定topic用于数据发布(指设备数据上报)、订阅(设备从云端接收数据)或者“发布和订阅”,开发者根据产品的需要进行topic的定义以及数据格式的定义。
因此开发者在设备端开发时:
- 获取设备的身份认证信息。
- 开发让用户输入WiFi热点SSID或密码的实现。
- 获取到IP地址之后,调用SDK连接物联网平台进行认证。
- 认证后,调用SDK的完成云端数据的订阅,并编写对数据处理的函数
- 调用SDK完成数据的上报。
- 编写设备连接异常的数据处理。
- 基于物模型方式开发设备
开发者在物联网平台可以使用物模型来定义产品,也即定义产品支持的属性、服务、事件,其中:
概念 解释 属性 表示设备支持的某个可读、或者可读可写的参数,例如灯的亮度。 服务 表示一个设备支持的功能,例如让一个设备重启。 事件 是设备主动上报的某种情况发生的信息,例如有人在撬锁时智能锁可以上报一个暴力撬锁的事件到云端进行报警。 使用物模型开发设备的好处在于对设备的功能以JSON格式进行了格式化,设备与云端交互数据的可读性较好,并且对云端服务来说编程比较友好,阿里云IoT也对常见的产品进行了物模型定义,开发者可以使用阿里云定义的物模型进行设备开发,这样当有应用服务商想对设备进行管理时,只要将物模型定义告知服务商即可。
因此开发者在设备端程序的大体流程为:
- 获取设备的身份认证信息
- 开发让用户输入WiFi热点SSID/密码的实现
- 获取到IP地址之后,调用SDK连接物联网平台进行认证。
- 认证后,调用SDK提供的API将设备属性的最新数据上报云端。
- 当设备属性变化时,将调用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语言的设备认证编程文档中的“一型一密”了解细节。
设备量产
当设备功能调试运行正常之后,设备进入量产阶段。设备量产是指设备厂商将产品的固件烧录到每个设备,并将每个设备的身份认证信息烧录到每个设备的过程。
开发者需要对自己的产线进行设计来将设备的身份信息可以快速的烧录到每个设备中。
开发者需要在阿里云物联网平台为所有的设备申请设备身份信息,操作步骤为在 选中相应产品后,单击批量添加批量获取设备身份信息。