关于程序员:Shifu高级功能自定义的deviceShifu数据处理程序

34次阅读

共计 2135 个字符,预计需要花费 6 分钟才能阅读完成。

自定义的 deviceShifu 数据处理程序

Shifu容许用户自定义deviceShifu,让数字孪生更加高效。

默认状况

默认状况下,从设施到 deviceShifu 的数据将以其原始格局提供。

自定义解决

在增加了定制的逻辑后,deviceShifu能够对数据进行解决,使其更适宜利用:

1. 将数据转换成用户须要的格局。
2. 过滤掉不须要的数据。
3. 进行动静计算和数据分析。

增加自定义的 deviceShifu

在咱们开始运行 Shifu 之前,要先做三件事。

1. 在 customized_handlers.py 中编写数据处理逻辑,解决办法的个别构造是这样的:

# 应用指令 /API 名称作为办法名称
def humidity(raw_data): 
    new_data = process(raw_data)
    return new_data

2. 将 customized_handlers.py 移到 pkg/deviceshifu/pythoncustomizedhandlers 中。

3. 生成deviceShifu

示例:湿度检测器

这里应用的示例设施在 examples/deviceshifu/customized/humidity_detector 目录下。

这个设施是一个虚构的湿度检测器,它将应用 HTTP 提供 JSON 格局的湿度和温度数据,指令 /API 只有humidity

0. 建设湿度检测器的虚构设施

第一步是用 humidity-detector.go 和它在 examples/deviceshifu/customized/humidity_detector 中的 Dockerfile 建设 humidity-detector 的 docker 镜像。

1. 增加定制的数据处理程序

examples/deviceshifu/customized/humidity_detector/pythoncustomizedhandlers 中,有一个 customized_hanlders.py 文件,将该文件复制到 pkg/deviceshifu/pythoncustomizedhandlers 中。

2. 编辑 deviceShifu 的 Docker 文件

examples/deviceshifu/customized/humidity_detector/sample_deviceshifu_dockerfiles/Dockerfile.deviceshifuHTTP 复制到dockerfiles

3. 增加数据处理程序的映射

examples/deviceshifu/customized/humidity_detector/configuration 中deviceshifu-humidity-detector-configmap.yaml文件,将您的设施指令, 与数据处理程序的 funcName,进行映射。

(例如:instructions 为 ‘/123’,funcName 为 ‘humidity’)

则须要在 customInstructionsPython 下设置 123: humidity 并在 instructions.instructionstelemetries.telemetries.device_health.properties.instruction下设置设施指令 Instructions

如下所示:

data:
  customInstructionsPython: |
    123: humidity 
    #123 是 instructions,humidity 是处理程序 funcName
  instructions: |
    instructions:
      123:
  telemetries: |
    telemetries:
      device_health:
        properties:
          instruction: 
            123

4. 建设 deviceShifu 的 docker 镜像

构建一个新的 deviceShifu 镜像用来增加定制的数据处理程序。

shifu 的根目录下,运行以下命令来构建 deviceShifu 的 docker 镜像。

make buildx-build-imag-deviceshifu-http-http

5. 启动 Shifu

这部分与疾速启动演示中的内容齐全一样。

Shifu 运行后,咱们须要将新建设的湿度检测器虚构设施导入到 kind 集群中。

kind load docker-image humidity-detector:v0.0.1

6. 查看解决后的数据

来自这个虚构设施的原始数据应该由 customized_hanlders.py 中定义的自定义处理程序来解决。

在 nginx shell 中,咱们应该能够 curl API humidity并查看后果是否被解决,后果如下:

[
  {
  "unit": "℃", 
  "code": "20990922009", 
  "exception": "temperature is too high", 
  "name": "atmosphere temperature", 
  "val": "37"
  }, 
  {
    "unit": "%RH", 
    "code": "20990922009", 
    "exception": "humidity is too high", 
    "name": "atmosphere humidity", 
    "val": "88"
  }
]

本文由边无际受权公布

正文完
 0