概述
简介: 物联网设备很多都是微型嵌入式级别的,集成SDK一方面耗费资源、影响设备性能、增加成本,另一方面对于商家来说新入网一款设备带来极大的不便,集成SDK要进行开发(设备厂家要进行额外的定制),需要更新固件程序。所以阿里云物联网平台提供了一种网关-子设备的入网模式,为商家新入网设备提供便利。网关设备属于和物联网平台直连设备,子设备不和物联网平台连接,那么子设备又是如何进行物模型上报(物模型上报指的是设备端将物模型数据发送给物联网平台)呢?尤其是C-SDK(网关集成SDK),官方没有现成的Demo。 此篇文章将阐述C-SDK4.X版本网关子设备上报物模型的业务流程原理和Demo源码。
业务场景
1、子设备与子设备、网关与子设备之间通过业务协议进行通信(ZigBee、wifi、蓝牙等)
2、网关设备连接物联网平台,创建物理通道,并代理子设备上线创建逻辑通道
3、子设备通过逻辑通道与物联网平台进行通信,但是实际不建立任何物理上的连接。
原理介绍
1、子设备上报物模型,首先得满足网关-子设备架构,先要创建网关和子设备产品
关于网关产品和子设备的产品创建这里就不过多赘述。物模型上报,首先肯定得有物模型的定义吧。
2、子设备和网关要建立一种关联关系,建立网关与子设备的topo结构。(这样网关和平台才知道,谁是这个网关的子设备)
(1)可以直接在控制台上进行操作
(2)可以通过云端API进行操作
(3)可以通过SDK的接口进行操作
components/subdev/aiot_subdev_api.h
3、网关设备创建与物联网平台的链路,再代理子设备进行上线(注意:这些操作都是在网关上完成)
网关设备如同普通直连设备一样,与物联网平台建立连接,即网关-子设备架构中的物理通道
代理子设备上线,帮助子设备与物联网平台建立逻辑通道
components/subdev/aiot_subdev_api.h
4、子设备通过网关与物联网平台的物理链路上报消息到物联网平台(注意:这些操作都是在网关上完成,子设备只需要提供三元组信息)
不管是MQTT API还是物模型API,他们的底层原理都是一样的,网关设备和物联网平台进行直连,存在唯一的一条物理通道,而子设备通过网关代理上线,使用逻辑通道与平台进行通信,复用的是网关的物理通道
官网说明:
可以看到这里有两种方式,分别是基于MQTT API的接口
和基于物模型API的接口。
那么aiot_mqtt_pub和aiot_dm_send又是如何体现
物理通道和逻辑通道呢?
(1) MQTT API aiot_mqtt_pub()接口方式
core/aiot_mqtt_api.h
直接调用aiot_mqtt_pub传入带子设备信息的Topic
(2) 物模型API aiot_dm_send()接口方式
在aiot_dm_send()的两个参数中handle使用网关代理上线后的那个handle,msg携带子设备的信息,完成逻辑通道的消息传输。
components/data-model/aiot_dm_api.h
这个接口里面优先使用的是msg里面携带的product key和devicename来组装topic
这个msg结果如下aiot_dm_msg_t
最后
以上就是壮观时光为你收集整理的阿里云物联网平台C-SDK网关子设备如何上报物模型?的全部内容,希望文章能够帮你解决阿里云物联网平台C-SDK网关子设备如何上报物模型?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复