分享|EdgeX Core Service 核心服务之 Core Metadata 核心元数据
本文将介绍核心服务之核心元数据: Core Metadata

核心服务提供了 EdgeX 北向和南向之间的中介。正如这些服务的名称所暗示的,它们是 EdgeX 功能的“核心”。核心服务是连接“事物”、收集的传感器数据和 EdgeX 配置的固有知识所在。

本文将介绍核心服务之核心元数据: Core Metadata

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

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

核心由以下微服务组成:

  • Core Data 核心数据:持久存储库和相关管理服务,用于从南向对象收集的数据。
  • Command 命令:促进和控制从北向到南向的驱动请求的服务。
  • Metadata 元数据:有关连接到 EdgeX Foundry 的对象的元数据的存储库和关联管理服务。元数据提供了配置新设备并将其与其拥有的设备服务配对的功能。
  • Registry & Configuration 注册表和配置:为其他 EdgeX Foundry 微服务提供有关系统内关联服务和微服务配置属性(即初始化值存储库)的信息。

目的

image

核心元数据微服务管理有关设备和传感器的知识。其他服务(设备、命令等)使用此信息与设备进行通信。

具体来说,元数据具有以下能力:

  • 管理有关连接到 EdgeX Foundry 并由 EdgeX Foundry 操作的设备的信息
  • 了解设备报告的数据的类型和组织
  • 知道设备命令如何操作

尽管元数据具有知识,但它不执行以下活动:

  • 它不负责从设备实际收集数据,由设备服务和核心数据执行
  • 它不负责向设备发出命令,由核心命令服务和设备服务执行

入门

数据模型

要了解元数据,了解其管理的 EdgeX 数据对象非常重要。元数据将其知识存储在本地持久性数据库中。 Redis 默认使用,但数据库抽象层允许使用其他数据库。

设备配置文件

设备配置文件定义了设备的一般特征、它们提供的数据以及如何命令它们。将设备配置文件视为设备类型或分类的模板。例如,BACnet 恒温器的设备配置文件提供 BACnet 恒温器发送的数据类型的一般特征,例如当前温度和湿度水平。它还定义了 EdgeX 可以发送到 BACnet 恒温器的命令或操作类型。示例可能包括设置冷却或加热点的操作。设备配置文件通常在 YAML 文件中指定并上传到 EdgeX。下面提供了更多详细信息。

设备配置文件详细信息

图像 元数据设备配置文件对象模型

一般特性

设备配置文件具有许多高级属性来提供配置文件上下文和标识。其名称字段是必需的,并且在 EdgeX 部署中必须是唯一的。其他字段是可选的 - 设备服务不使用它们,但可以填充它们以供参考:

  • 描述
  • 制造商
  • 模型
  • 标签

以下是随 BACnet 设备服务提供的示例 KMC 9001 BACnet 恒温器设备配置文件的一般信息部分示例(您可以找到配置文件 在 Github 中)。设备配置文件的此部分仅需要名称。设备配置文件的名称在任何 EdgeX 部署中都必须是唯一的。制造商、型号和标签都是可选信息,可以更好地查询系统中的设备配置文件。

name: 'BAC-9001'
manufacturer: 'KMC'
model: 'BAC-9001'
labels:
  - 'B-AAC'
description: 'KMC BAC-9001 BACnet thermostat'

标签提供了一种对各种配置文件进行标记、组织或分类的方法。它们在 EdgeX 内部没有任何实际用途。

设备资源

设备资源(在 YAML 文件的 deviceResources 部分中)指定设备内的传感器值,可以单独或作为设备命令的一部分(见下文)读取或写入该值。将设备资源视为可以从底层设备获取的特定值或可以设置给底层设备的值。在恒温器中,设备资源可以是温度或湿度(从设备感测到的值)或冷却点或加热点(可以设置/启动以允许恒温器确定相关加热/冷却系统何时打开或离开)。设备资源具有用于识别的名称和用于提供信息的描述。

设备资源的属性部分也得到了极大的简化。请参阅下面的详细信息。

回到 BACnet 示例,这里有两个设备资源。一个用于获取(读取)当前温度,另一个用于设置(写入或启动)主动冷却设定点。必须提供设备资源名称,并且它在任何 EdgeX 部署中也必须是唯一的。

name: Temperature
description: "Get the current temperature"
isHidden: false

name: ActiveCoolingSetpoint
description: "The active cooling set point"
isHidden: false

笔记

虽然在此示例中明确说明,但在未指定时 isHidden 默认为 falseisHidden 表示是否将设备资源暴露给核心命令服务。

设备服务允许通过 REST 端点访问设备资源。可以通过以下 URL 模式访问设备配置文件的设备资源部分中指定的值:

  • http://<device-service>:<port>/api/{{api_version}}/device/name/<DeviceName>/<DeviceResourceName>
属性

与设备资源关联的属性是设备服务访问特定值所需的特定参数。换句话说,属性是“面向内的”,设备服务使用属性来确定如何与设备对话以读取或写入(获取或设置)其某些值。属性是详细的协议和/或设备特定信息,通知设备服务如何与设备通信以获取(或设置)感兴趣的值。

回到 BACnet 设备配置文件示例,下面是示例设备的 Temperature 和 ActiveCoolingSetPoint 的完整设备资源部分(包括属性)。

- name: Temperature
  description: 'Get the current temperature'
  isHidden: false
  attributes:
    {
      type: 'analogValue',
      instance: '1',
      property: 'presentValue',
      index: 'none',
    }
- name: ActiveCoolingSetpoint
  description: 'The active cooling set point'
  isHidden: false
  attributes:
    {
      type: 'analogValue',
      instance: '3',
      property: 'presentValue',
      index: 'none',
    }
特性

设备资源的属性描述了在设备上获取或设置的值。这些属性可以选择通知设备服务对值执行一些简单的处理。再次以 BACnet 配置文件为例,以下是与恒温器温度设备资源相关的属性。

name: Temperature
description: 'Get the current temperature'
attributes:
  {
    type: 'analogValue',
    instance: '1',
    property: 'presentValue',
    index: 'none',
  }
properties:
  valueType: 'Float32'
  readWrite: 'R'
  units: 'Degrees Fahrenheit'

“值类型”属性的属性提供了有关收集或设置的值的更多详细信息。在本例中给出了要设置的温度值的详细信息。该值提供详细信息,例如收集或设置的数据的类型、该值是否可以读取、写入或两者兼而有之。

value 属性中提供以下字段:

  • valueType - 必需。值的数据类型。支持的类型包括 Bool、Int8 - Int64、Uint8 - Uint64、Float32、Float64、String、Binary、Object 和基本类型数组(int、float、bool)。数组被指定为例如。 Float32Array、BoolArray 等
  • readWrite - R、RW 或 W 指示该值是否可读或可写。
  • units - 提供有关与值相关的测量单位的更多详细信息。在这种情况下,温度测量单位为摄氏度/华氏度。
  • min - 最小允许值
  • max - 最大允许值
  • defaultValue - 用于未指定的 PUT 请求的值。
  • base - 在返回之前要计算原始读数次方的值。
  • scale - 在返回读数之前乘以读数的系数。
  • offset - 在返回读数之前要添加到读数的值。
  • mask - 将应用于整数读数的二进制掩码。
  • shift - 整数读数右移的位数。

由基础、缩放、偏移、掩码和移位定义的处理按该顺序应用。这是在 SDK 内完成的。 SDK 将反向转换应用于集合操作中的传入数据(NB 集合上的掩码转换为 NYI)

设备命令

设备命令(在 YAML 文件的 deviceCommands 部分中)定义对多个同时设备资源的读取和写入的访问权限。设备命令是可选的。每个命名设备命令应包含许多获取和/或设置资源操作,分别描述读取或写入。

当读数在逻辑上相关时,设备命令可能很有用,例如,对于 3 轴加速度计,一起读取所有轴(X、Y 和 Z)会很有帮助。

设备命令由以下属性组成:

  • name - 命令的名称
  • readWrite - R、RW 或 W 指示操作是否可读或可写。
  • isHidden - 指示是否将设备命令公开给核心命令服务(可选,默认为 false)
  • resourceOperations - 命令中包含的设备资源操作的列表。

每个资源操作将指定:

  • deviceResource - 设备资源的名称
  • defaultValue - 可选,当操作未提供时返回的值
  • parameter - 可选,如果 PUT 请求未指定该值,则将使用该值。
  • mappings - 可选,允许重新映射字符串类型的读数。

还可以通过设备服务的 REST API 以与设备资源所述类似的方式访问设备命令。

- http://`<device-service>`:`<port>`/api/`{{api_version}}`/device/name/`<DeviceName>`/`<DeviceCommandName>`

如果设备命令和设备资源同名,则设备命令可用。

核心命令

未隐藏的设备资源或设备命令可通过 EdgeX 核心命令服务查看和使用。

其他服务(例如规则引擎)或 EdgeX 的外部客户端应通过核心命令服务向设备服务发出请求,当它们这样做时,它们正在调用设备服务的未隐藏设备命令或设备资源。直接访问设备服务的设备命令或设备资源是不受欢迎的。通过 EdgeX 命令服务提供的命令允许 EdgeX 采用者添加额外的安全性或控制,以控制在实际设备上触发和调用事件的人员/内容/时间。

图像

设备

有关实际设备的数据是元数据微服务存储和管理的另一种类型的信息。 EdgeX Foundry 管理的每个设备都会注册元数据(通过其所属的设备服务)。每个设备必须有一个与其关联的唯一名称。

元数据根据数据库中的名称存储有关设备的信息(例如其地址)。每个设备还与设备配置文件相关联。这种关联使元数据能够将设备配置文件提供的知识应用到每个设备。例如,恒温器配置文件会说它以摄氏度报告温度值。将特定恒温器(例如大厅中的恒温器)与恒温器配置文件相关联允许元数据知道大厅恒温器报告以摄氏度为单位的温度值。

图像

设备服务

元数据还存储和管理有关设备服务的信息。设备服务充当 EdgeX 与实际设备和传感器的接口。

设备服务是通过设备的协议与设备进行通信的其他微服务。例如,Modbus 设备服务促进所有类型的 Modbus 设备之间的通信。 Modbus 设备的示例包括电机控制器、接近传感器、恒温器和功率计。设备服务简化了 EdgeX 其余部分与设备的通信。

当设备服务启动时,它会使用元数据注册自身。当 EdgeX 配置新设备时,该设备会与其所属的设备服务关联。该关联也存储在元数据中。

图像

元数据设备、设备服务和设备配置文件模型

图像 元数据的设备配置文件、设备和设备服务对象模型以及它们之间的关联

供给观察者

设备服务可以包含自动供应新设备的逻辑。这可以静态或动态地完成。在静态设备配置(也称为静态配置)中,设备服务连接到并建立一个新设备,并根据提供的设备服务配置在 EdgeX(特别是元数据)中管理该设备。例如,可以向设备服务提供其在启动时要加入的一个或多个设备的特定 IP 地址和附加设备详细信息。在静态配置中,假设设备将在那里并且在通过配置指定的地址或位置可用。设备和这些设备的连接信息在设备服务启动时就已知。

在动态发现(也称为自动配置)中,设备服务会获得一些有关查找位置的一般信息以及一个或多个设备的一般参数。例如,设备服务可能会被给予一定范围的 BLE 地址空间,并被告知在该范围内寻找某种性质的设备。但是,设备服务并不知道设备实际存在,并且设备在启动时可能不存在。它必须在其操作期间(通常按某种计划)不断扫描配置提供的位置和设备参数指南中的新设备。

并非所有设备服务都支持动态发现。如果它确实支持动态发现,则有关新设备的查找内容和位置(换句话说,扫描位置)的配置由配置观察程序指定。供应观察程序是提供给存储在元数据中的设备服务(通常在启动时)的特定配置信息。除了提供有关在扫描期间查找哪些设备的详细信息之外,配置观察器还可能包含“阻止”指示器,该指示器定义有关不自动配置的设备的参数。这允许缩小设备扫描的范围或允许避开特定设备。

图像 元数据的供应观察者对象模型

配置

请参阅常规通用配置文档了解所有服务通用的配置设置。 以下仅是特定于核心元数据的附加设置和部分。

EdgeX 3.0

EdgeX 3.0 中删除了通知 配置。元数据将利用设备系统事件来替换原始设备更改通知。

EdgeX 3.0

对于 EdgeX 3.0,MessageQueue 配置已移至通用配置 MessageBus

Writable

属性默认值描述
如果服务使用 -cp/--configProvider 标志运行,则可以在服务运行时动态更改配置的可写部分中的条目
LogLevelINFO日志条目严重级别。不属于默认级别或更高级别的日志条目将被忽略。

Writable.Telemetry

属性默认值描述
请参阅通用配置了解所有服务通用的遥测配置 Writable.Telemetry
Metrics核心元数据收集的服务指标。布尔值指示是否启用指标报告。
Tags<empty>要包含在报告的每个指标中的任意核心元数据服务级别标签的列表。

Writable.ProfileChange

属性默认值描述
StrictDeviceProfileChangesfalse是否允许设备配置文件修改,设置为 true 以拒绝所有可能影响现有事件和读数的修改。因此,仍然可以进行 manufactureisHidden 或 description 等更改。
StrictDeviceProfileDeletesfalse是否允许设备配置文件删除设置为 true 以拒绝所有删除。

可写.UoM

属性默认值描述
Validationfalse是否启用度量单位验证,设置为 true 以根据核心元数据的度量单位列表验证所有设备配置文件 units

服务

属性默认值描述
核心元数据的独特设置。常用设置可以在常用配置中找到
Port59881微服务端口号
StartupMsgThis is the EdgeX Core Metadata Microservice服务完成引导启动时记录消息

计量单位

属性默认值描述
UoMFile'./res/uom.yaml'测量单位配置位置的路径

数据库

属性默认值描述
核心元数据的独特设置。常用设置可以在常用配置中找到
Namemetadata数据库或文档存储名称

消息总线.可选

属性默认值描述
核心元数据的独特设置。常用设置可以在常用配置中找到
ClientIdcore-metadata连接到 MQTT 或 NATS 基础 MessageBus 时使用的 ID

计量单位

核心元数据将在启动期间读取位于 UoM.UoMFile 中的计量单位配置(请参阅下面的配置示例)。 指定的配置可以是本地配置文件,也可以是配置的 URI。有关更多详细信息,请参阅文件 URI 部分。

!!! info "EdgeX 3.1|

支持通过 URI 加载 UoM.UoMFile 配置是 EdgeX 3.1 中的新增功能。

计量单位配置示例

Source: reference to source for all UoM if not specified below
Units:
temperature:
    Source: www.weather.com
    Values:
    - C
    - F
    - K
weights:
    Source: www.usa.gov/federal-agencies/weights-and-measures-division
    Values:
    - lbs
    - ounces
    - kilos
    - grams

启用验证时(Writable.UoM.Validation 设置为 true), 所有设备配置文件 units(在设备资源、设备属性中)都将根据核心元数据的计量单位列表进行验证。

换句话说,当通过核心元数据 API 创建或更新设备配置文件时,设备资源的 units 字段中指定的单位 将根据通过核心元数据配置提供的有效计量单位列表进行检查。

如果 units 值与任一配置计量单位匹配,则设备资源被视为有效 - 允许继续创建或更新操作。 如果 units 值与任何一个配置测量单位都不匹配,则设备配置文件或设备资源操作(创建或更新)将被拒绝(返回错误代码 500)并出现相应错误消息在响应中返回给核心元数据 API 的调用者。

笔记

配置文件上的 units 字段是且应保持可选。如果设备配置文件中未指定 units 字段,则假定设备资源没有明确定义的测量单位。换句话说,核心元数据不会在设备资源上未指定 units 字段的配置文件中失败。

V3 配置迁移指南

  • 已删除 RequireMessageBus
  • UoMFile 值更改为指向 YAML 文件而不是 TOML 文件

请参阅通用配置参考了解有关常见配置更改的完整详细信息。

附加信息

设备配置文件

设备配置文件描述了 EdgeX 系统内的一种设备类型。设备服务管理的每个设备都与设备配置文件关联,设备配置文件根据其支持的操作定义该设备类型。

有关设备配置文件字段及其所需值的完整列表,请参阅设备配置文件参考。

有关设备配置文件模型及其所有属性的详细信息,请参阅元数据设备配置文件数据模型。

标识

配置文件包含各种标识字段。 Name 字段是必填字段,并且在 EdgeX 部署中必须是唯一的。其他字段是可选的 - 设备服务不使用它们,但可能出于信息目的而填写:

  • Description
  • Manufacturer
  • Model
  • Labels

设备资源

deviceResource 指定设备内的传感器值,可以单独或作为 deviceCommand 的一部分读取或写入该值。它具有用于识别的名称和用于提供信息的描述。

设备服务允许通过其 device REST 端点 访问 deviceResources

deviceResource 中的 Attributes 是访问特定值所需的设备服务特定参数。每个设备服务实现都有自己的一组所需的命名值,例如,BACnet 设备服务可能需要对象标识符和属性标识符,而蓝牙设备服务可以使用 UUID 来标识值。

deviceResource 的 Properties 描述值和可选请求对其进行一些简单的处理。以下字段可用:

  • valueType - 必需。值的数据类型。支持的类型有 Bool, Int8 - Int64、Uint8 - Uint64、Float32、 Float64、String、Binary、 Object 和基本类型(int、float、bool)的数组。指定数组 例如。 Float32Array、BoolArray 等
  • readWrite - R、RW 或 W 指示该值是否可读或 可写。
  • units - 指示值的单位,例如安培、摄氏度等。
  • minimum - 允许 SET 命令的最小值,超出范围将导致错误。
  • maximum - 允许 SET 命令的最大值,超出范围将导致错误。
  • defaultValue - 用于未指定 SET 命令的值。
  • assertion - 与读数(处理后)进行比较的字符串值。 如果读数与断言值不同,则设备正在运行 状态将被设置为禁用。这对于健康检查很有用。
  • base - 在返回之前要计算原始读数次方的值。
  • scale - 在返回读数之前乘以读数的系数。
  • offset - 在返回读数之前要添加到读数的值。
  • mask - 将应用于整数读数的二进制掩码。
  • shift - 整数读数右移的位数。
  • mediaType - 指示 Binary 值格式的字符串。
  • optional - 给定设备资源的可选属性映射。

由 basescaleoffsetmask 和 shift 定义的处理应按照这个顺序。这是在 SDK 内完成的。应用逆变换通过 SDK 对集合操作传入的数据进行处理(NB 集合上的掩码转换为 NYI)

设备命令

DeviceCommands 定义对多个同时读取和写入的设备资源。每个命名的 deviceCommand 应该包含一些 resourceOperations

例如,当读数逻辑相关时,设备命令可能很有用,当使用 3 轴加速度计时,一起读取所有轴会很有帮助。

资源操作由以下属性组成:

  • deviceResource - 要访问的 deviceResource 的名称。
  • defaultValue - 可选,如果 SET 命令未指定值,则将使用该值。
  • mappings - 可选,允许重新映射读数字符串类型。

设备服务允许通过相同的 REST 访问 deviceCommandsdevice 端点用于访问设备资源。

设备配置文件参考

本章详细介绍了设备配置文件的结构以及允许的值 它的领域。

设备配置文件

字段名称类型必需的?备注
nameStringY在 EdgeX 部署中必须是唯一的。仅允许使用 RFC3986 中定义的非保留字符。
descriptionStringN
manufacturerStringN
modelStringN
labelsString 数组N
deviceResourcesDeviceResource 数组Y
deviceCommandsDeviceCommand 数组N

设备资源

字段名称类型必需的?备注
nameStringY在 EdgeX 部署中必须是唯一的。仅允许使用 RFC3986 中定义的非保留字符。
isHiddenBoolN是否将 DeviceResource 暴露给 Command Service,默认 false
tagStringN
attributesString-Interface MapN每个设备服务应定义必需的和可选的关键字
propertiesResourcePropertiesY

资源属性

字段名称类型必需的?备注
valueTypeEnumYUint8、Uint16、Uint32、Uint64、Int8、Int16、Int32、Int64、Float32、Float64、Bool、String、Binary、Object、Uint8Array、Uint16Array、Uint32Array、Uint64Array、Int8Array、Int16Array、Int32Array、Int64Array、Float32Array、Float64Array、BoolArray
readWriteEnumYR, W, RW
unitsStringN开发商愿意定义值的单位
minimumFloat64N如果 SET 命令值超出最小范围,则出错
maximumFloat64N如果 SET 命令值超出最大范围,则出错
defaultValueStringN如果存在,应与类型字段兼容
maskUint64N仅当 Type 是无符号整数类型之一时有效
shiftInt64N仅当 Type 是无符号整数类型之一时有效
scaleInt64N仅当 Type 为整数或浮点类型之一时有效
offseFloat64N仅当 Type 为整数或浮点类型之一时有效
baseFloat64N仅当 Type 为整数或浮点类型之一时有效
assertionStringN与读数进行比较的字符串值
mediaTypeStringN仅当 valueType 为时才需要 Binary
optionalString-MapN给定资源的可选映射

设备命令

字段名称类型必需的?备注
nameStringY在此配置文件中必须是唯一的。除非重命名和/或限制 R/W 访问,否则具有单个 DeviceResource 的 DeviceCommand 是多余的。例如 DeviceResource 是 RW,但 DeviceCommand 是只读的。仅允许使用 RFC3986 中定义的非保留字符。
isHiddenBoolN是否将 DeviceCommand 暴露给 Command Service,默认 false
readWriteEnumYR, W, RW
resourceOperationsResourceOperation 数组Y

资源操作

字段名称类型必需的?备注
deviceResourceStringY必须在此配置文件中命名 DeviceResource
defaultValueStringN如果存在,应与指定设备资源的类型字段兼容
mappingsString-String MapN将 GET ResourceOperation 值映射到另一个字符串值

设备系统事件

系统事件是由设备元数据对象(Device、DeviceProfile 等)的添加、更新或删除触发的事件。每次添加新对象、更新现有对象或删除现有对象时,系统事件 DTO 都会发布到 EdgeX MessageBus。

系统事件 DTO

EdgeX 3.0

系统事件类型 deviceservicedeviceprofile 和 provisionwatcher 是 EdgeX 3.0 中的新增功能

系统事件 DTO 具有以下属性:

属性描述
Type系统事件类型devicedeviceservice、 deviceprofile 或 provisionwatcher
Action系统事件动作addupdate 或 delete
Source系统事件来源core-metadata 在这种情况下
Owner系统事件中数据的所有者在这种情况下,它是拥有该设备的设备服务的名称或 core-metadata
Tags附加数据的键值图在这种情况下为空
Details触发系统事件的数据对象在这种情况下添加、更新或删除的设备/设备配置文件/设备服务/供应观察程序
Timestamp系统事件的日期和时间时间戳

发布主题

设备系统事件的系统事件 DTO 发布到上面的 MessageQueue.PublishTopicPrefix 配置设置指定的主题,该主题的默认值为 edgex/system-events,加上添加以下数据项是为了允许接收者按订阅进行过滤。

  • source = core-metadata
  • type = device
  • action = add/update/delete
  • owner = [拥有该设备的设备服务名称]
  • profile = [与设备关联的设备配置文件名称]

示例设备系统事件发布主题

edgex/system-events/core-metadata/device/add/device-onvif-camera/onvif-camera
edgex/system-events/core-metadata/device/update/device-rest/sample-numeric
edgex/system-events/core-metadata/device/delete/device-virtual/Random-Boolean-Device

源代码

核心元数据的源代码可以在 edgex-go 中找到,网址为 https://github.com/edgexfoundry/edgex-go/tree/v3.1/cmd/core-metadata

API 参考

EdgeX Foundry Core Metadata 核心元数据微服务包括设备/传感器元数据数据库和将该数据库公开给其他服务的 API。特别是,设备配置服务通过该服务的 API 存储和管理设备元数据。

https://raw.githubusercontent.com/edgexfoundry/edgex-go/v3.1/openapi/v3/core-metadata.yaml

关于我们

亿琪软件

上海亿琪软件有限公司成立于 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 Core Service 核心服务之 Core Command 命令
本文将介绍核心服务之核心命令: Core Command