有奖捉虫:行业应用 & 管理与支持文档专题 HOT
物联网开发平台 C SDK 是面向可以和平台直接通信的设备,由于子设备无法直接和平台进行通信,所以子设备不需要集成物联网开发平台 C SDK。理论上,用户可以完全自定义子设备和网关的交互逻辑,但为使子设备能和平台实现交互,本文提供一些常用的处理建议。

子设备设备信息管理

网关需要取得子设备的设备信息,才能代理子设备实现相应的功能。

子设备发现及鉴权验证

网关对子设备的发现逻辑,基于不同的通信方式(例如 BLE、Zigbee 和485等)自由实现,但设备发现后,建议做设备的合法性鉴权。鉴权可以结合平台的设备信息进行实现,通常建议子设备对应的产品选择密钥认证方式,每一个子设备在平台都有对应的三元组信息,即 productId + deviceName + psk。如果网关侧保存了子设备的 psk 信息,可以基于 psk 做签名验证。
1. 腾讯连连小程序内单击发现子设备按钮。 腾讯连连小程序进入绑定主设备的流程有两种方式:
在网关设备界面,单击 "+" 添加子设备按钮。
扫描控制台子设备的产品开发界面内批量投产处设备二维码。
?
?
2. 网关设备会收到一条 search_devices 的消息,此时,网关设备就可以启动发现搜索子设备的流程。网关收到搜索子设备的 payload:{"payload":{"status":1},"type":"search_devices"} ,网关回复开始搜索 payload:
{"type":"search_devices",
"payload":{"status":1, "result":0}}
3. 这里的搜索逻辑由客户自行实现,当成功发现子设备(发现条件由客户自定义)后,就可以绑定该子设备到网关,具体的绑定可以参考 IOT_Gateway_Subdev_Bind 的实现,然后小程序界面即显示刚才绑定成功的设备。
?
?
注意:
子设备一般是指不能直接连接物联网开发平台,需要通过网关连接平台的设备。网关产品需要添加子产品后才能添加网关设备下的子设备。网关子设备的拓扑关系及参数字段的描述,请参考这里。

子设备动态绑定

网关设备和子设备的拓扑绑定关系,可以在控制台预先完成,也可以在运行过程动态绑定,网关设备和子设备能够进行动态绑定的前置条件是网关产品和子设备产品已在控制台完成绑定关系。网关设备在发现子设备之后,是否需要发起动态绑定的判断逻辑,网关侧需要基于网关侧的设备管理逻辑开发实现。动态绑定 需要有基于子设备密钥的签名信息,签名计算参考 C SDK 接口 subdev_bind_hmac_sha1_cal,签名的计算可以在子设备完成后发送给网关,也可以在网关侧完成,后者需要网关保存子设备的 psk 信息。
一个成功的绑定日志,可参考如下内容:
DBG|2022-01-14 16:57:25|mqtt_client_publish.c|qcloud_iot_mqtt_publish(346): publish packetID=0|topicName=$gateway/operation/TZ9Y9CLTEA/gateway_001|payload={"type":"bind","payload":{"devices":[{"product_id":"xxxx","device_name":"subdev_003","signature":"xxxxx","random":1820758684,"timestamp":1642150644,"signmethod":"hmacsha1","authtype":"psk"}]}}
INF|2022-01-14 16:57:25|gateway_sample.c|_message_handler(138): Receive Message With topicName:$thing/down/property/HW9ME416BI/subdev_002, payload:{"method":"report_reply","clientToken":"xxxx-45","code":0,"status":"success"}
DBG|2022-01-14 16:57:25|gateway_common.c|_gateway_message_handler(419): gateway recv : {"type":"bind","payload":{"devices":[{"result":0,"product_id":"HW9ME416BI","device_name":"subdev_003"}]}}
INF|2022-01-14 16:57:25|gateway_common.c|_gateway_message_handler(510): client_id(HW9ME416BI/subdev_003), bind result 0
DBG|2022-01-14 16:57:25|gateway_sample.c|show_subdev_bind_unbind(262): bind HW9ME416BI/subdev_003 success

子设备动态注册

考虑产品的量产方便,子设备可以使用动态注册的方式获取子设备的三元组信息,动态注册 需要子设备的 产品密钥 作为签名,签名的计算可以在子设备侧完成后发送给网关,也可以在网关侧完成,后者需要在网关侧保存子设备的 psk 信息,动态注册的子设备名建议取设备发现过程中网关可以获取的设备唯一信息,例如 MAC 地址、EUI 等。

子设备通信

网关和子设备通信

网关和子设备的通信协议及数据格式,平台不做限制,但网关代理子设备与云端通信时,则需要将子设备的消息转为 数据模板 格式数据。

子设备和子设备互通

通过控制台或者小程序配置子设备和子设备之间的消息转发规则,即可实现子设备互通。


http://www.vxiaotou.com