有奖捉虫:行业应用 & 管理与支持文档专题 HOT
本文为您介绍如何基于 物联网开发平台 C SDK 开发网关接入腾讯物联网开发平台。

C SDK 网关特性

网关和子设备信息管理

网关和子设备的 HAL 层设备信息管理接口和直连设备有所区别,调用 HAL_GetGwDevInfo 获取网关和子设备的设备信息,此接口需要适配实现,即开发者需要根据目标平台和应用场景实现设备信息的管理,尤其是真实子设备和平台子设备的设备信息映射。

网关与云端建连

网关示例 gateway_sample.c 介绍如何使用 C SDK 提供的 API 实现设备信息获取、网关与云端建连、代理子设备上线及下线、代理子设备通信,并且展示了子设备如何基于数据模板进行通信。

代理子设备上下线

网关上线后,通过特定的协议(例如:BLE、Zigbee 等)进行子设备管理。
对于已经建立通信的子设备,调用 IOT_Gateway_Subdev_Online 实现子设备在云端的上线,详情可参考 上线数据请求格式
对于失去通信的子设备,调用 IOT_Gateway_Subdev_Offline 实现子设备在云端的下线,详情可参考 下线数据请求格式

动态绑定解绑子设备

网关能代理子设备上下线及通信,前提是网关设备和子设备已在平台建立拓扑关联关系。
产品级的关联,即子设备的产品和网关产品关联必须在 控制台建立
设备级的关联,可以在控制台建立,并且可以动态绑定和解绑。动态绑定和解绑,网关需要有子设备密钥实现签名,如果签名在网关侧计算,网关需要有对应待绑定子设备的密钥,动态绑定解绑数据请求格式

代理子设备通信

网关代理子设备上线成功后,即可调用 IOT_Gateway_Subscribe 代理子设备的订阅消息,调用 IOT_Gateway_Publish 向云端推送消息。

网关示例

网关示例 gateway_sample.c 介绍使用 C SDK 提供的 API,如何实现设备信息获取、网关与云端建连、代理子设备上线及下线、代理子设备通信,并且示例了子设备如何基于数据模板进行通信。

网关开发实现

网关产品通常的开发流程如下:n
dev_flow


虚线框内的三个步骤由网关厂商实现,通常建议如下:
对于网关设备是 Wi-Fi 联网的方式,需要参照 Wi-Fi 配网协议 配合腾讯连连小程序实现配网。
对于网关和子设备的通信,平台没有限定,由网关厂商和子设备自由定义。但网关要实现对子设备的设备信息管理及合法性校验,需要和云端关联的子设备做好映射,一般会用子设备的唯一信息(MAC/EUI)作为平台子设备的设备名,在子设备入网过程网关实现映射关系的管理。
网关和物联网开发平台的通信协议必须是 数据模板协议,每一个产品类型、数据模板是不一样的,网关和子设备的通信一般是二进制。所以网关需要基于不同类型的产品,实现子设备二进制数据到数据模板协议数据的双向转换。一般的做法,创建两个消息队列和子设备到网关的消息队列 stack_msg_queue 及云端到网关的消息队列 cloud_msg_queue,独立线程中分别从消息队列中取消息,进行相应的转换后做消息的分发及推送。
对于蓝牙场景,腾讯有定义 连连 LLSync 协议,接入腾讯物联网平台的网关,网关和子设备的通信协议建议使用连连 LLSync 协议。