分享|EdgeX Discovery 发现 - 动态设备发现
本文提供了 EdgeX Foundry Discovery 动态设备发现的基本原理和运行机制。

本文提供了 EdgeX Foundry Discovery 动态设备发现的基本原理和运行机制。

EdgeX Foundry 在下面将统一简称为 EdgeX

  • 自动设备发现概述
  • 触发发现
  • 查找设备
  • 过滤设备

本文内容大部分来自官方文档:EdgeX Discovery

动态设备发现

概述

某些设备协议允许自动发现设备。一个设备服务(DS: Device Service)可能包括发现设备和创建设备的能力 EdgeX 中对应的设备对象。这个框架在设备服务的 SDK 中实现。

发现过程将按如下方式运行:

  • 发现是通过内部计时器或通过调用 REST 端点来触发的
  • SDK 将调用 DS 实现提供的函数来请求设备扫描
  • 该实现回调 SDK 并提供其找到的设备的详细信息
  • SDK 根据一组接受标准过滤这些设备
  • SDK 在核心元数据中添加接受的设备,使得这些设备现在可以在 EdgeX 系统中

触发发现

布尔配置值 Device/Discovery/Enabled 默认为 false。如果这 值设置为 true,并且 DS 实现支持发现,自动发现功能将被启用。

SDK 将响应 /discovery 端点上的 POST 请求。请求中需要无内容(No Content)。此调用将返回以下代码之一:

  • 202:发现已被触发或已在运行。响应应指示哪个,并包含任何生成的设备添加请求将使用的相关 ID
  • 423:服务被锁定(管理状态 admin state)或禁用(运行状态 operating state)
  • 500:存在未知或意外的问题
  • 501:该协议实现不支持发现
  • 503:自动发现配置被禁用

在每种失败情况下,都应返回有意义的错误消息。

在触发发现的情况下,发现过程将在新线程或 goroutine,以便 REST 调用可以立即返回。

整数配置值 Device/Discovery/Interval 默认为 zero。如果该值设置为正值,并且启用发现,发现进程将按照指定的时间间隔(以秒为单位)触发。

查找设备

当发现被触发时,SDK 将调用由设备服务提供的实现函数(需要自己实现)。这需要找到设备应该执行任何特定于协议的程序,并通过调用 SDK 的方法将这些设备传入 SDK 过滤设备添加功能。

注意

实现应该为找到的每个设备回调。 SDK 负责过滤掉已经添加的设备。

已找到的设备所需的信息如下:

  • 自动生成的设备名称(Name)
  • 设备的协议属性(Protocol Properties)
  • 可选的描述字符串(Description)
  • 可选的标签字符串列表(Label)

过滤设备添加函数将采用包含上述数据的结构体集合作为参数。实现可以选择对每个发现的设备进行一次调用,但鼓励实现者在可行的情况下对设备进行批处理,因为在未来的 EdgeX 版本中,SDK 将可以在对核心元数据的单次调用中创建所有必需的新设备。

基本原理: 另一种设计是让实现函数将发现的设备集合返回给 SDK。使用回调机制具有以下优点:

  • 允许异步操作。在此模式下,DS 实现将启动发现并立即返回。例如,可以通过发送广播数据包来发起发现。然后设备将发送返回数据包以表明其存在。处理入站网络流量的线程可以在收到此类数据包后直接调用过滤的设备添加函数。
  • 允许 DS 实现,其中设备自行声明调用独立于发现过程的已过滤设备添加函数

过滤设备添加

已发现设备的过滤条件由 Provision Watchers 表示。 Provision Watcher 包含以下字段:

  • Identifiers:一组名称-值对,新设备的 ProtocolProperties 与之匹配
  • BlockingIdentifiers:另一组名称-值对,也与新设备的 ProtocolProperties 相匹配
  • Profile:应分配给通过此 ProvisionWatcher 的新设备的 DeviceProfile 的名称
  • AdminState:通过此 ProvisionWatcher 的新设备的初始管理状态

如果所有 Identifiers 匹配,但没有 BlockingIdentifiers 匹配,则新设备将通过 ProvisionWatcher 候选。

对于具有多个 Device.Protocols 的设备,每个 Device.Protocol 都会单独考虑。通过任何协议(如上所述)都会导致添加设备。

Identifiers 中指定的值是正则表达式。

注意

如果从 EdgeX 中手动删除发现的设备,则需要调整添加该设备的 ProvisionWatcher,方法是使 Identifiers 更具体或添加 BlockingIdentifiers否则下次启动发现时将重新添加设备

注意

ProvisionWatchers 存储在 core-metadata 中。需要一个用于管理 ProvisionWatchers 的工具,例如 edgex-cli 可以被扩展

关于我们

亿琪软件

上海亿琪软件有限公司成立于 2016 年,专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。

2023 年,公司发布“YiFUSION |工业边缘智能融合一体机”产品,为工业客户提供一整套的边缘计算+AI 能力:高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。

2022 年,公司推出 “YiCLOUD |亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动 OCP 认证,公司还是边缘计算产业联盟 ECC 成员。

关注我们

公司公众号爱好者公众号
yiqisoftedgexfoundry

联系我们--商业服务

  • 网站:http://yiqisoft.cn
  • 邮件:support@yiqisoft.cn
  • 电话:021-68863086
  • 手机:186-1666-9123
分享|EdgeX Platform Requirements 平台要求
本文提供了 EdgeX Foundry Platform Requerements 平台运行最低要求建议。