为了账号安全,请及时绑定邮箱和手机立即绑定

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

自定义的deviceShifu数据处理程序

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

默认情况

默认情况下,从设备到deviceShifu的数据将以其原始格式提供。

file

自定义处理

在添加了定制的逻辑后,deviceShifu可以对数据进行处理,使其更适合应用:

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

file

添加自定义的 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"
  }
]

本文由边无际授权发布

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消