阿里云物联网平台C-SDK网关子设备如何上报物模型?

简介: 物联网设备很多都是微型嵌入式级别的,集成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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值