乐趣区

关于程序员:轻量化物联管理从Shifu-Cloud添加设备开始

用 Shifu Cloud 部署一个海康威视摄像头的数字孪生

a. 登陆 shifu.cloud

Shifu Cloud 是边无际基于开源物联网开发框架 Shifu 的一款 PaaS 产品,它为开发者带来了便携的工具,能够只填写一些设施根本信息来实现物联网设施的接入。在没有 Shifu Cloud 的状况下须要开发者手动填写一些设施的 YAML 配置文件,再将虚构设施进行部署。

b. 点击增加设施

c. 抉择公有协定 –> 在下拉菜单中抉择海康威视,之后点击下一步

d. 增加设施的根本信息,如设施名,厂商和型号

e. 填写摄像头的 IP 地址,RTSP 用户名以及明码

f. 点击接入并返回增加接口

g. 最初点击上传,Shifu Cloud 会主动生成 deviceShifu (数字孪生) 的 YAML 文件

h. 点击复制命令,在 K3s 的 master 上执行即可

i. 在命令行复制,输入如下:

[email protected]:~# kubectl apply -f https://******.com/*****/******.yaml
configmap/deviceshifu-devicehikvision-configmap created
service/deviceshifu-devicehikvision-service created
deployment.apps/deviceshifu-devicehikvision-deployment created
edgedevice.shifu.edgenesis.io/edgedevice-devicehikvision created
[email protected]:~#
  • 背地产生了什么:

Shifu Cloud 通过用户填写的一些根本信息,主动生成了设施孪生的 YAML 文件(Edge Device,ConfigMap,Deployment 和 Service),如果您想更深一步的理解请返回 github 中查看具体部署的文件

j. Shifu Cloud 暂不反对退出 nodeSelector 的性能(敬请期待),默认状况下设施孪生会被部署到 master 下面,咱们须要更新 deployment 的 spec 项来让 Pod 部署在 worker 节点中

  • 咱们通过命令获取以后 deployment 的名字

[email protected]:~# kubectl get deployment -n deviceshifu
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deviceshifu-devicehikvision-deployment   0/1     1            0           16m
  • 接着通过 kubectl edit deployment -n deviceshifu deviceshifu-devicehikvision-deployment 命令编辑,退出以下两行,保留即可

......
      nodeSelector:                                                                                                                            
        type: worker
......

k. 这时咱们再次查看,能够看到数字孪生曾经被部署到边缘节点 k3s 上

[email protected]:~# kubectl  get pods -n deviceshifu -owide
NAME                                                      READY   STATUS    RESTARTS   AGE    IP          NODE   NOMINATED NODE   READINESS GATES
nginx                                                     1/1     Running   0          165m   10.42.1.4   k3s    <none>           <none>
deviceshifu-devicehikvision-deployment-5f56fb56d9-2ph5s   2/2     Running   0          21s    10.42.1.6   k3s    <none>           <none>

运行成果

a. 接下来咱们就能够尝试与摄像头进行交互了,让咱们在 master 节点上运行一个 nginx 容器来模仿利用与 deviceShifu 之间的交互,执行kubectl run nginx-master -n deviceshifu --image=nginx,能够看到 nginx-master 确实运行在 master 节点上:

[email protected]:~# kubectl get po -n deviceshifu -owide
NAME                                                      READY   STATUS    RESTARTS   AGE     IP           NODE               NOMINATED NODE   READINESS GATES
nginx                                                     1/1     Running   0          169m    10.42.1.4    k3s                <none>           <none>
deviceshifu-devicehikvision-deployment-5f56fb56d9-2ph5s   2/2     Running   0          3m53s   10.42.1.6    k3s                <none>           <none>
nginx-master                                              1/1     Running   0          32s     10.42.0.11   localhost          <none>           <none>

b. 咱们通过 kubectl exec -it -n deviceshifu nginx -- bash 进入 nginx-master 的命令行,间接与数字孪生交互,获取元信息

[email protected]:~# kubectl exec -it -n deviceshifu nginx -- bash
[email protected]:/# curl deviceshifu-devicehikvision-service/info
<?xml version="1.0" encoding="UTF-8"?>
<DeviceInfo version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<deviceName>IP CAMERA</deviceName>
<deviceID>*****</deviceID>
<deviceDescription>IPCamera</deviceDescription>
<deviceLocation>hangzhou</deviceLocation>
<systemContact>Hikvision.China</systemContact>
<model>DS-2DE3Q140CN-W</model>
<serialNumber>DS-*****</serialNumber>
<macAddress>c8:02:8f:c8:86:11</macAddress>
<firmwareVersion>V5.5.800</firmwareVersion>
<firmwareReleasedDate>build 210816</firmwareReleasedDate>
<encoderVersion>V7.3</encoderVersion>
<encoderReleasedDate>build 200601</encoderReleasedDate>
<bootVersion>V1.3.4</bootVersion>
<bootReleasedDate>100316</bootReleasedDate>
<hardwareVersion>0x0</hardwareVersion>
<deviceType>IPCamera</deviceType>
<telecontrolID>88</telecontrolID>
<supportBeep>true</supportBeep>
<supportVideoLoss>false</supportVideoLoss>
<firmwareVersionInfo>B-R-E7-0</firmwareVersionInfo>
</DeviceInfo>

通过以下命令能够间接管制摄像头:

curl deviceshifu-devicehikvision-service/move/{up/down/left/right}

如果咱们想查看摄像头以后拍摄以及以后视频流,须要将摄像头的 service 通过 kubectl port-forward -n deviceshifu service/deviceshifu-devicehikvision-service 30080:80 --address 0.0.0.0 代理到本地
在浏览器中输出服务器的 IP 加端口号,能够间接查看图像 / 视频流:

<SERVER_IP>:30080/capture
<SERVER_IP>:30080/stream

总结

在此篇文章和上篇文章《物联网轻量级开发计划:在 K3s 部署 Shifu 实现云边端闭环》中,咱们分享了如何让 Shifu 运行在 K3s 的集群中实现云边协同的管制和数据收集。

在未来的文章中,Shifu Cloud 也会进一步与 Kubernetes 进行整合,减少对于边缘节点的部署管制以及主动将设施孪生部署到集群中,无需手动复制。

十分感谢您看到了这里,咱们期待您的反馈,如果感觉文章写得不错或者有任何倡议请毫不犹豫地留言。

本文由边无际受权公布

退出移动版