自定义的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"  }]
本文由边无际受权公布