更新时间:2024-08-21 GMT+08:00
设备代理
概述
在网关和子设备的拓扑关系不是固定的场景下,平台目前的固定的拓扑关系难以适配。基于此情况,平台目前推出设备代理功能。
将设备拓扑与数据转发能力解耦,子设备可以选择非拓扑关系的设备进行数据转发。
图1 子设备数据上报示意图
使用场景
- 网关高可用方案中,主备网关的切换。如在隧道场景,设置主网关和备用网关,可在主网关网络不好或者故障时切换至备用网关进行数据传输,达到不影响数据传输,保障及时可靠的传输数据的目的。
- 网关故障导致更换,子设备迁移至新网关进行数据转发。目前平台当网关故障时需要将子设备删除并重新注册到新网关,使用该功能后,无需删除原网关,即可通过新网关进行数据传输。
- 可移动设备与网关不存在稳定的从属关系,由子设备自行选择网关进行数据转发。如:诊疗车搭载了医疗设备传感器,病床完成诊疗后需尽快将数据传输到医疗中心系统。为了保证信息实时传输,每个病房配置IoT网关用于上传设备中的数据。由诊疗车自主选择当前病房网关进行数据上报。
功能介绍
- 物联网平台将设备拓扑与数据转发能力解耦,对于数据转发能力支持通过一种设备代理策略来进行描述。即在台注册设备时已经固定拓扑关系,但是可以通过其他网关进行数据转发。这种设备代理策略需要在平台进行定义,和管理。代理授权主要分为两个部分:
- 时间维度:可为代理设备的转发权限设定一定的时限,一旦过期该设备便不再具备代理能力。
- 空间维度:只有加入该设备代理的设备才能转发彼此的数据(设备代理内的网关可共同转发子设备数据)。
- 在同一时刻,子设备只能存在一个确定的网关,且只能通过这个网关进行数据转发,因此在对子设备进行数据转发前需要提前确定代理关系。子设备代理网关的切换必须通过网关上报子设备状态来实现,当上报子设备状态为在线时,平台会根据用户在平台定义好的代理策略进行校验,校验通过后平台就会在该子设备与当前网关之间建立代理关系,之后才会允许通过该代理网关进行数据转发。当上报子设备状态为离线后,会清除代理关系,禁止通过该网关进行数据转发。
- 设备切换代理网关后,只能通过该代理网关进行数据上报等操作,通过其他网关(包括创建设备时指定的网关)上报时会校验失败。
- 平台下发子设备消息时,如果存在有效的代理关系,下发的消息将会发送到代理设备,当不存在代理关系时,会发送到子设备创建设备时指定的网关上。
- 如果您的业务需要使用该功能,请提交工单提交工单说明您的需求。
使用限制
- 单账号调用该接口的TPS限制最大为1/S(每秒1次请求数)。
- 单实例最大支持创建10个设备代理。
- 一个设备代理中最多能添加10个设备。
- 仅支持直连/网关设备加入设备代理,子设备不允许添加至设备代理中。
- 一个设备仅允许加入一个设备代理中。
样例演示
- 访问设备接入服务,单击“管理控制台”进入设备接入控制台。选择您的实例,单击实例卡片进入。
- 在左侧导航栏选择“注册设备”,填写相关参数,创建两个网关设备:网关一(deviceproxy-gateway1),网关二(deviceproxy-gateway2),与他们对应的4个子设备gateway1-subdevice-1,gateway1-subdevice-2,gateway2-subdevice-1, gateway2-subdevice-2。
,单击图2 设备-注册设备代理设备
- 选择“设备代理”标签,单击“创建设备代理”,创建时选择第一步创建好的两个网关设备。
图3 设备代理-详情
- 通过代理网关上报子设备状态,演示通过网关一上报网关二的子设备状态(gateway2-subdevice-2,gateway2-subdevice-1)。填入参数时请填入设备标识对应的设备id。
Topic: $oc/devices/{device_id}/sys/events/up 数据格式: { "object_device_id": "********_deviceproxy-gateway1", "services": [{ "service_id": "$sub_device_manager", "event_type": "sub_device_update_status", "event_time": "20151212T121212Z", "paras": { "device_statuses": [{ "device_id": "********_gateway2-subdevice-2", "status": "ONLINE" }, { "device_id": "********_gateway2-subdevice-1", "status": "ONLINE" } ] } }] }
- 网关一收到上报子设备状态响应。
Topic: $oc/devices/{device_id}/sys/events/down 数据格式: { "object_device_id": "********_deviceproxy-gateway1", "services": [ { "service_id": "$sub_device_manager", "event_type": "sub_device_update_status_response", "event_time": "20151212T121212Z", "event_id": "********", "paras": { "successful_devices": [ { "device_id": "********_gateway2-subdevice-2", "status": "ONLINE" }, { "device_id": "********_gateway2-subdevice-1", "status": "ONLINE" } ], "failed_devices": [ ] } } ] }
- 在控制台“所有设备”查看两个子设备为在线,表明两个子设备的代理网关已切换至deviceproxy-gateway1。后续可通过代理网关上报对子设备进行操作,此处以数据上报作为样例。
图4 设备代理-设备状态
- 通过网关一上报网关二两个子设备数据。
Topic: $oc/devices/{device_id}/sys/gateway/sub_devices/properties/report 数据格式: { "devices":[ { "device_id":"********_gateway2-subdevice-2", "services":[ { "service_id":"BasicData", "properties":{ "luminance":"12" }, "event_time":"20200702T121212Z" } ] }, { "device_id":"********_gateway2-subdevice-1", "services":[ { "service_id":"BasicData", "properties":{ "luminance":"66" }, "event_time":"20200702T121212Z" } ] } ] }
- 在“设备详情”查看设备上报数据。
图5 设备详情-设备代理子设备
父主题: 设备管理