本文描述以太网设备如何接入物联网平台。
下面是需要设备商在产品上实现,而不是SDK提供的功能:通过DHCP Client从路由器获取IP地址,或者手动指定IP地址功能。
云端开发
- 创建以太网产品:开发者需要在云端创建产品,定义产品功能,产品联网方式指定“以太网”。
- 创建调试设备。
- 云端数据处理 :
- 设备上报数据到物联网平台之后,开发者可以将数据转发到自己的业务服务器。
- 需要发送数据给设备时,开发者需要调用物联网平台提供的接口将数据发送给设备。
设备端开发
开发者需要设计如何保存设备身份认证信息到每个设备上,建议开发者将该信息加密后存放到设备的Flash的某个位置或某个文件中,当设备上电后可以将这些信息从指定的地方读取出来,然后传递给SDK。
开发者开发设备有以下两种方式。
- 基于Topic方式开发设备
开发者在物联网平台产品定义时添加topic,指定topic用于数据发布(指设备数据上报)、订阅(设备从云端接收数据),开发者根据产品的需要进行topic的定义以及数据格式的定义。
因此设备固件逻辑如下:
- 获取保存的设备认证信息。
- 获取到IP地址之后,调用SDK连接物联网平台进行认证。
- 认证后,调用SDK的接口完成云端数据的订阅,并编写对数据处理的函数。
- 编写设备连接异常断开时的异常处理。
注意 若SDK已连接到物联网平台之后再断开,SDK会自动发起重连。
- 基于物模型方式开发设备
开发者在物联网平台可以使用物模型来定义产品,即定义产品的属性、服务、事件,其中:
概念 解释 属性 表示设备支持的某个可读、或者可读可写的参数,例如灯的亮度。 服务 表示一个设备支持的功能,例如让一个设备重启。 事件 是设备主动上报的某种情况发生的信息,例如有人在撬锁时智能锁可以上报一个暴力撬锁的事件到云端进行报警。 因此开发者在设备端程序的大体流程为:
- 获取设备的身份认证信息。
- 获取到IP地址之后,调用SDK连接物联网平台进行认证。
- 认证后,调用SDK提供的API将设备属性的最新数据上报云端。
- 当设备属性变化时,调用SDK将设备属性的最新数值上报云端。
- 向SDK注册服务处理函数,对收到的服务进行处理。
- 编写设备连接异常断开时的异常处理。
注意 若SDK已连接到物联网平台之后再断开,SDK会自动发起重连。
使用物模型开发设备的好处在于对设备的功能以JSON格式进行了格式化,设备与云端交互数据的可读性较好,并且对云端服务来说编程比较友好,阿里云IoT也对常见的产品进行了物模型定义,开发者可以使用阿里云定义的物模型进行设备开发,这样当有应用服务商想对设备进行管理时,只要将物模型定义告知服务商即可。
Link SDK
开发者需要根据设备开发使用的语言/平台进行设备的功能开发,不同语言SDK的使用方式存在差异,下面是支持的语言/平台的SDK:
- Link SDK for C
- Link SDK for Java
- Link SDK for Python
- Link SDK for NodeJS
- Link SDK for Android
- Link SDK for iOS
注意 若SDK已连接到物联网平台之后再断开,SDK会自动发起重连。
示例参考
-
基于Ubuntu + C + MQTT Topic的数据收发实现
请参见快速体验中的“以MQTT Topic方式接入设备”,该章节描述了设备在Ubuntu上使用C SDK将数据发送到物联网平台、然后将该数据接收回来的实现案例。
相关细节请参见自定义MQTT Topic编程。
-
基于Ubuntu + C + MQTT + 物模型的加法器实现
请参见快速体验中的“以物模型编程方式接入设备”,该章节描述了在Ubuntu上使用C SDK实现的一个支持加法运算的设备逻辑。
有关API说明请参见C语言的物模型编程指南。
-
基于Windows + C + MQTT Topic的数据收发实现
请点击本示例了解使用Eclipse+MSYS2在Windows上移植SDK中的“mqtt_example.c”的完整过程,其中提供了HAL的参考实现。
-
基于Windows + C + 物模型的产品实现
请点击本示例了解Eclipse+MSYS2在Windows上移植SDK中的“linkkit_example_solo.c”的完整过程,其中提供了HAL的参考实现。
-
基于Ubuntu + C + MQTT的OTA实现
OTA用于设备固件升级,C SDK的目录src\ota\examples\ota_example_mqtt.c描述了OTA的实现示例。有关API说明请参见C语言OTA的说明文档。
-
基于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语言的设备认证编程文档中的“一型一密”了解细节。
设备量产
当设备功能调试运行正常之后,设备进入量产阶段。设备量产是指设备厂商将产品的固件烧录到每个设备,并将每个设备的身份认证信息烧录到每个设备的过程。
开发者需要自行设计在产线上将设备身份信息快速烧录至设备的方法。
开发者需要在阿里云物联网平台为所有的设备申请设备身份信息,操作步骤为在 ,选中相应产品后单击批量添加批量获取设备身份信息。