Shifu+WasmEdge:物联网数据轻松“瘦身”

当我们在使用 ***Shifu ** *采集数据的时候,通常会出现从设备所采集到的数据,与我们所需要的数据格式不同的情况。为解决此问题,我们可以使用  *Shifu *+  *WasmEdge *实现把  *Shifu *采集到的数据通过  *WasmEdge *进行处理后再返回给我们的应用程序。

Shifu+WasmEdge:物联网数据轻松“瘦身”

简介

本文将简单介绍如何将  WasmEdge 集成到  Shifu 中,从而实现从IoT设备上采集的数据的清洗。

以下为基本架构:

Shifu+WasmEdge:物联网数据轻松“瘦身”

以下为本项目的数据流:

Shifu+WasmEdge:物联网数据轻松“瘦身”

Shifu 简介

*Shifu *为用户提供全场景设备托管与一体化软件开发的透明框架。开发者通过使用  *Shifu *,可以更简单地连接、监视和控制任何物联网设备。

*Shifu *的创新优势是通过透明框架内的数字孪生技术,为设备赋予有思考能力的 “数字大脑”。数字孪生将反映设备的实时状态,对其进行开发操作等同于操作设备本身。物联网设备接入到  *Shifu *中便会生成标准化接口,实现互联网互动,通过平台层对场景内所有设备、机器进行北向数据收集和南向指令管控。

Shifu 是基于Kubernetes的云原生架构,创造性地将物联网设备对应为Kubernetes中的Pod,释放了物联网平台在边缘场景的设备管理能力以及云边端协同能力。云原生架构为物联网的应用开发提供了超高的系统稳定性,并提供给开发者仅运维一套架构实现对物联网的平台级维护。

***Shifu ** *官方网站: https://shifu.run

WasmEdge 简介

*WasmEdge *是轻量级、安全、高性能、符合 OCI 标准的软件容器与运行环境。目前是 CNCF 沙箱项目。 *WasmEdge *被应用在 Servrless SaaS、云原生,service mesh、边缘云、边缘设备、智能合约等领域。

WasmEdge 作为轻量级的容器,footprint 只有几兆,能够在资源受限的环境提供安全且不损失性能的运行环境。

嵌入式 Runtime 是 *WasmEdge *的一个典型应用场景, *WasmEdge *提供了 C/C++、Rust、 Golang 等 SDK,方便开发者将 *WasmEdge *嵌入到 现有的应用软件中,从而将几乎任何应用软件变成可扩展的开发者平台。 *WasmEdge *作为嵌入到 *Shifu *的轻量级容器,为 *Shifu *提供了安全运行第三方不受信任代码的环境。

了解 *WasmEdge *相关信息:

https://github.com/WasmEdge/WasmEdge

步骤

准备

kubectl v1.24.2

docker 20.10.16

kind v0.14.0

git 2.36.1

部署

为了方便更快的了解本篇文章,你可以通过以下命令从GitHub上拉取本项目。

git clone https://github.com/Edgenesis/wasm-shifu-demo.git
`cd wasm-shifu-demo`

创建 kind 集群

使用以下命令创建 Kind 集群 。

$ kind delete cluster && kind create cluster

Creating cluster "kind" ...

 ✓ Ensuring node image (kindest/node:v1.24.0) 

 ✓ Preparing nodes :package: 

 ✓ Writing configuration :scroll: 

 ✓ Starting control-plane   ️ 

 ✓ Installing CNI :electric_plug: 

 ✓ Installing StorageClass :floppy_disk: 

Set kubectl context to "kind-kind"

You can now use your cluster with:

kubectl cluster-info --context kind-kind

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 

构建 Shifu 镜像

使用以下命令构建 *Shifu *镜像。

$ make -f shifu/Makefile build-image-deviceshifu

$ kind load docker-image edgehub/deviceshifu-http-http:v0.0.6

$ docker images | grep edgehub/deviceshifu-http-http 

edgehub/deviceshifu-http-http                v0.0.6    1d6b3544b8ad   54 minutes ago   36.1MB

运行虚拟设备

为了方便你的体验,这里我们使用虚拟设备进行模拟。安装并运行虚拟设备,设备的端口号为8099。

$ docker build -f mockDevice/dockerfile -t mockdevice:v0.0.1 .

$ docker run -p 8099:8099 -itd mockdevice:v0.0.1 

$ docker ps | grep mockdevice

bdfd2b1323be   mockdevice:v0.0.1      "./mockDevice"           19 seconds ago      Up 18 seconds      0.0.0.0:8099->8099/tcp      admiring_feistel

编写规则,编译wasm

你可以通过使用 JavaScript 编写规则。如果你不熟悉 JavaScript,可以直接使用默认规则。

规则文件路径: wasmEdge/js-func/src/js/run.js    你可以通过修改该规则来实现不同的功能。

$ docker build -t wasm:v0.0.1 -f wasmEdge/js.dockerfile  .

$ kind load docker-image wasm:v0.0.1

$ kubectl apply -f wasmEdge/k8s

你可以通过以下命令检查 **WasmEdge **的 pod 运行情况。

$ kubectl get pod -n wasmedge

NAME                              READY   STATUS    RESTARTS   AGE

wasm-deployment-fbc9564d8-td428   1/1     Running   0          1s

安装并运行 Shifu

使用以下命令安装 shifu。

$ kubectl apply -f shifuConfig/shifu_install.yml

$ kubectl get pod -n shifu-crd-system

NAME                                            READY   STATUS    RESTARTS   AGE

shifu-crd-controller-manager-5bbdb4d786-s6h4m   2/2     Running   0          1s

安装 deviceShifu    与   mockDeivce    进行连接。在此之前,请先将    shifuConfig/task3/task3.yaml    文件中的    address 修改成你电脑的IP。

spec:

 sku: "E93"

 connection: Ethernet

 address: "192.168.14.163:8099" #修改此处IP地址

通过以下命令,部署运行 deviceShifu  。

$ kubectl apply -f shifuConfig/task3

$ kubectl get pod -n deviceshifu

NAME                                                 READY   STATUS    RESTARTS   AGE

deviceshifu-demodevice-deployment-5589b55569-l5nb2   1/1     Running   0          4s

体验

你可以启动一个 nginx    与   deviceShifu    进行通信。

$ kubectl run nginx --image=nginx:1.21

$ kubectl get pod 

NAME    READY   STATUS    RESTARTS   AGE

nginx   1/1     Running   0          3s

通过以下命令,你即可与设备的数字孪生进行交互,从而清洗从IoT设备上采集的数据。

$ kubectl exec -it nginx -- curl -v  http://deviceshifu-demodevice-service.deviceshifu.svc.cluster.local/get_info;echo
[

 {

 "code":375287,

 "name":"大气温度",

 "val":"24.56",

 "unit":"℃",

 "exception":"温度过高"

 },

 {

 "code":375287,

 "name":"大气湿度",

 "val":"81.63",

 "unit":"%RH",

 "exception":"湿度过高"

 }

]

同时我们可以使用以下命令查看 IoT 设备所产生的原始数据。

$ curl localhost:8099/getInfo
{

 "statusCode":"200",

 "message":"success",

 "entity":[

 {

 "dateTime":"2022-09-09 09:46:45",

 "eUnit":"℃",

 "eValue":"23.87",

 "eKey":"e1",

 "eName":"大气温度",

 "eNum":"101"

 },

 {

 "dateTime":"2022-09-09 09:46:45",

 "eUnit":"%RH",

 "eValue":"80.62",

 "eKey":"e2",

 "eName":"大气湿度",

 "eNum":"102"

 }

 ],

 "deviceId":950920,

 "deviceName":"950920",

 "deviceRemark":"2022-09-09 09:46:45"

}

将两个输出放在一起比较,可以清晰看出我们成功地将数据采集并进行了清洗,从而得到我们想要的数据。

Shifu+WasmEdge:物联网数据轻松“瘦身”

关于 WasmEdge

WasmEdge 是轻量级、安全、高性能、实时的软件容器与运行环境。目前是 CNCF 沙箱项目。WasmEdge 被应用在 Serverless SaaS、云原生,service mesh、边缘云/计算、智能合约、边缘设备等领域。

本文章来源于互联网,如有侵权,请联系删除!原文地址:Shifu+WasmEdge:物联网数据轻松“瘦身”

相关推荐: 纸鸢|物联网云平台选型手册

1、明确目标找到合适的云 2、定位云平台选型规模大小 3、选型步骤 4、现场终端设备情况 5、现场联网情况 6、数据上云后的处理方式 本文章来源于互联网,如有侵权,请联系删除!原文地址:纸鸢|物联网云平台选型手册相关推荐: 物美智能物联网平台在日常学习中发现了…