工业AIoT竞赛流程

不要点到重置!!!要刷新虚拟机就点重启

xshell连接虚拟机:ssh root@Public IP

环境构建

vim /etc/hosts

按 i 进入插入模式,加内网ip和主机名,按esc,按 : ,按wq

三个虚拟机都这样配

# 在 k8s-master01 上
ping yurt-edge01
ping yurt-edge02

# 在 yurt-edge01 上
ping k8s-master01
ping yurt-edge02

# 在 yurt-edge02 上
ping k8s-master01
ping yurt-edge01

# 下面是命令,但这里测试不需要输入命令,直接测试就行

# 查看节点状态

kubectl get nodes

# 查看所有 pods 状态

kubectl get pods --all-namespaces

cd /data/script/

ls | grep install_openyurt_manager

# ./install_openyurt_manager_v5.sh是搜索到的脚本文件

./install_openyurt_manager_v5.sh > /data/logs/install_openyurt_manager.log 2>&1

2.2自动对了

3.3运行

kubectl get pods -A

等一会儿,等最后一个也ready

启动edge01的虚拟机

cd /data/script

ls | grep yurtadm_join_edge01 或 02

# 这里的*根据上一个命令的结果来填写,后面这个VC...是master01虚拟机的密码

./yurtadm_join_edge01_*.sh 'VCtYS9aA#dB' > /data/logs/yurtadm_join.log

kubectl get nodes

kubectl get pods -A

edge02同上

kubectl edit cm -n kube-system kube-proxy

先按i,光标移动到这一行,按shift+#注释掉,按esc,按 : ,输入wq,按回车

kubectl delete pod --selector k8s-app=kube-proxy -n kube-system

kubectl get pods -A -owide | grep kube-proxy

# 下面两行是一条命令,csdn自动换行了

kubectl annotate svc kube-dns -n kube-system openyurt.io/topologyKeys='openyurt.io/nodepool'

kubectl get svc kube-dns -n kube-system -o yaml

cd /data/soft/openyurt/openyurt-helm-main
helm install yurt-iot-dock ./charts/yurt-iot-dock

kubectl get crds -A

# 每一大段都全部复制

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: beijing
spec:
  type: Cloud
EOF
 

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: hangzhou01
spec:
  type: Edge
EOF
 

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: hangzhou02
spec:
  type: Edge
EOF

kubectl label node k8s-master01 apps.openyurt.io/nodepool=beijing
kubectl label node yurt-edge01 apps.openyurt.io/nodepool=hangzhou01
kubectl label node yurt-edge02 apps.openyurt.io/nodepool=hangzhou02

cat <<EOF | kubectl apply -f - apiVersion: iot.openyurt.io/v1alpha2 kind: PlatformAdmin metadata: name: edgex-edge01 spec: version: minnesota poolName: hangzhou01 #components: #- name: yurt-iot-dock #- name: edgex-device-modbus #- name: edgex-core-data #- name: edgex-ui-go #- name: edgex-nodered EOF
 

# 新开一个ssh会话,再登录一个master01的虚拟机

/data/script/edgex_pod_ok.sh

cat <<EOF | kubectl apply -f - apiVersion: iot.openyurt.io/v1alpha2 kind: PlatformAdmin metadata: name: edgex-edge01 spec: version: minnesota poolName: hangzhou01 components: - name: yurt-iot-dock - name: edgex-device-modbus - name: edgex-core-data - name: edgex-ui-go - name: edgex-nodered EOF

kubectl get pa

kubectl get pods -owide
 

kubectl edit cm platformadmin-framework

按 : ,输入290,按 i ,把imagePullPolicy的值修改成IfNotPresent,把image的值修改成v1.4.1,按esc,按 : ,按wq按回车

去模块说明里面找

等下就把这个复制粘贴到文件里面

kubectl edit cm platformadmin-framework

按 i ,找deployment,从那开始整体下移一行,然后缩进对齐

- deployment: selector: matchLabels: app: edgex-device-modbus strategy: {} template: metadata: creationTimestamp: null labels: app: edgex-device-modbus spec: containers: - env: - name: SERVICE_HOST value: edgex-device-modbus envFrom: - configMapRef: name: common-variables image: edgexfoundry/device-modbus:3.0.0 imagePullPolicy: IfNotPresent name: edgex-device-modbus ports: - containerPort: 59901 name: tcp-59901 protocol: TCP resources: {} hostname: edgex-device-modbus name: edgex-device-modbus service: ports: - name: tcp-59901 port: 59901 protocol: TCP targetPort: 59901 selector: app: edgex-device-modbus # nodered的yaml片段 - deployment: selector: matchLabels: app: edgex-nodered strategy: {} template: metadata: creationTimestamp: null labels: app: edgex-nodered spec: containers: - env: - name: SERVICE_HOST value: edgex-nodered envFrom: - configMapRef: name: common-variables image: nodered/node-red:3.1.9 imagePullPolicy: IfNotPresent name: edgex-nodered ports: - containerPort: 1880 name: tcp-1880 protocol: TCP resources: {} hostname: edgex-nodered name: edgex-nodered service: ports: - name: tcp-1880 port: 1880 protocol: TCP targetPort: 1880 selector: app: edgex-nodered

把上面这一大段复制进去,然后按esc,按 :wq

kubectl apply -f platformadmin-framework.yaml

kubectl get pods -n default -l app=edgex-device-modbus

kubectl get pods -n default -l app=edgex-nodered

如果报错了就跳过,这个实在不会

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge02
spec:
  version: minnesota
  poolName: hangzhou02
  components:
  - name: yurt-iot-dock
  - name: edgex-device-modbus
  - name: edgex-core-data
  - name: edgex-ui-go
  - name: edgex-nodered
EOF
 

kubectl get pods -o wide -w | grep yurt-edge02

kubectl label nodes k8s-master01 megagame=cloud
kubectl get node k8s-master01 --show-labels

cd /data/yaml/mqtt/

ls | grep mqtt_

# 根据名字更改下面命令

kubectl apply -f /data/yaml/mqtt/mqtt_v4.yaml

kubectl apply -f /data/yaml/fuxa/fuxa.yaml
kubectl label nodes k8s-master01 megagame=cloud
kubectl get node k8s-master01 --show-labels

kubectl label nodes yurt-edge02 megagame=edge02
kubectl get node yurt-edge02 --show-labels

kubectl apply -f /data/yaml/yurt-edge02/openplc-megagame.yaml
kubectl get pods -o wide --field-selector spec.nodeName=yurt-edge02

数据采集

到谷歌浏览器把edgex-ui放上去,右上角切换中英文

在设备管理中,点击设备元信息,添加里面写

name: Env_Device_Profile

deviceResources:
  - name: temp_sensor
    isHidden: false
    attributes:
      primaryTable: HOLDING_REGISTERS
      startingAddress: 0
    properties:
      valueType: Float32
      readWrite: R
  - name: wets_sensor
    isHidden: false
    attributes: 
      primaryTable: HOLDING_REGISTERS
      startingAddress: 2
    properties:
      valueType: Float32
      readWrite: R
  - name: pm25_sensor
    isHidden: false
    attributes:
      primaryTable: HOLDING_REGISTERS
      startingAddress: 4
    properties:
      valueType: Float32
      readWrite: R
  - name: alarm
    isHidden: false
    attributes:
      primaryTable: COILS
      startingAddress: 0
    properties:
      valueType: Bool
      readWrite: RW

deviceCommands: []

在设备中,点击添加设备出来这个页面,左边勾选后点击下一页

自动采集为空,直接点下一页

选这个协议

题目给了模板,把address改成edge01虚拟机的内外ip就行

边缘计算应用

  1. 时间戳:设置按3秒重复

  2. Http请求:获取温度的URL(GET请求)
    http://10.244.1.78:59882/api/v3/device/name/env-device/temp_sensor

  3. Function 1代码

var value = msg.payload.event.readings[0].value;
global.set("temp_sensor", parseFloat(value));
msg.payload = parseFloat(value);
return msg;
  1. Http请求:获取湿度的URL(GET请求)http://10.244.1.78:59882/api/v3/device/name/env-device/wets_sensor
  2. Function 2代码
var value = msg.payload.event.readings[0].value;
global.set("wets_sensor", parseFloat(value));
msg.payload = parseFloat(value);
return msg;
  1. Http请求:获取PM2.5的URL(GET请求)
    http://10.244.1.78:59882/api/v3/device/name/env-device/pm25_sensor

  2. Function 3代码

var value = msg.payload.event.readings[0].value;
global.set("pm25_sensor", parseFloat(value));
msg.payload = parseFloat(value);
return msg;
  1. Function 4代码
var temp_sensor = global.get("temp_sensor");
var wets_sensor = global.get("wets_sensor");
var pm25_sensor = global.get("pm25_sensor");if (temp_sensor > 35 || wets_sensor > 60 || pm25_sensor > 100) {msg.payload = { alarm: true }
} else {msg.payload = { alarm: false }
}
return msg;
  1. Http请求:设置报警器的URL(PUT请求)
    http://10.244.1.78:59882/api/v3/device/name/env-device/alarm

输入nodered

右上角的settings里面设置中文

灰色的拖下来

双击http请求,在URL地址中放入command,后缀见上面的格式

返回处把utf-8改成json对象

function1里面放上面的代码,写完后点击左上角的部署

把每个http请求和function按上面格式修改,记得看眼请求方式

任务二

把时间戳改成周期性执行

任务一的

任务二的

任务三

数据分析

做不动了

数据清洗与挖掘

开启jupyter_AioT虚拟机

按照模块说明进行连接

输入jupyter lab后,浏览器输入Public_IP:8888

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创新实训博客(十三)——admin前端工作效果

管理/教师端前端工作汇总education-admin&#xff1a; 首先是登录注册页面的展示 管理员 首页 管理员登录后的首页如下图所示 管理员拥有所有的权限 课程管理 1、可以查看、修改、增添、删除课程列表内容 2、可以对课程资源进行操作 3、可以对课程的类别信息进行管理&…

什么类型的网站需要配置OV证书

目录 什么网站更适合OV证书&#xff1a; 申请OV需要注意&#xff1a; 申请单位组织验证型OV SSL证书的详细步骤 OV SSL证书全称Organization Validation SSL(组织验证性SSL证书)&#xff0c;是一种需要验证网站真实身份的数字证书。通过证书颁发机构审查网站企业身份和域名所…

3D模型优化10个最佳实践

对于许多在建模、渲染和动画方面经验丰富的 3D 建模者来说&#xff0c;3D 优化可能是一个令人畏惧的过程 - 特别是当你正在优化实时应用程序的 3D 模型时&#xff01; 在 Google 上快速搜索“如何优化 3D 文件”将会出现一些建议&#xff0c;例如减少多边形数和消除多余的顶点。…

为什么叫云计算?云计算的优势有哪些

说起云计算大家并不会感到陌生&#xff0c;那么为什么叫云计算&#xff1f;云计算技术的引入通常会使企业的信息技术应用更高效、更可靠、更安全。云计算支持用户在任意位置、使用各种终端获取应用服务。使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性&a…

等保测评中的问题与建议

随着信息技术的广泛使用和飞速发展&#xff0c;网络安全已逐渐演变为威胁经济社会发展的关键议题。信息安全的范围涵盖了政治、商务、军事、教育等多个方面。其中&#xff0c;信息的存储、分享以及管理&#xff0c;主要取决于政府的宏观规划和决策、商业运作的信息、银行的财务…

构建 Audio Unit 应用程序

构建 Audio Unit 应用程序 构建 Audio Unit 应用程序从选择设计模式开始I/O Pass ThroughI/O Without a Render Callback FunctionI/O with a Render Callback FunctionOutput-Only with a Render Callback Function其他设计模式 构建应用程序配置 audio session指定 audio uni…

金融行业自动化运维的研究与实践

金融行业自动化运维的研究与实践 在金融行业中&#xff0c;信息技术&#xff08;IT&#xff09;运维已经成为保障业务连续性和稳定性的重要环节。随着金融业务的复杂化和信息系统的多样化&#xff0c;传统的手工运维模式已无法满足高效、安全的需求。自动化运维技术的应用变得…

流计算状态算子灵活开发指南

随着实时数据流处理需求的不断增长&#xff0c;高效、可扩展的流计算框架变得愈发重要。DolphinDB 作为一款高性能分布式时间序列数据库&#xff0c;不仅在数据存储和查询上表现出色&#xff0c;还通过引入面向对象编程&#xff08;OOP&#xff09;编程范式&#xff0c;使得开发…

聚焦 HW 行动,构筑重保邮件安全防线

随着信息技术的飞速发展&#xff0c;网络安全已成为国家安全的重要组成部分。HW行动作为国家级网络安全演练&#xff0c;通过模拟实战攻防&#xff0c;检验和提升国家关键信息基础设施的防护能力。 CACTER凭借多年HW防护经验&#xff0c;提供全面的邮件安全防护体系&#xff0…

MySQL详细介绍:开源关系数据库管理系统的魅力

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

Flutter 小技巧之为什么推荐 Widget 使用 const

今天收到这个问题&#xff0c;本来想着简单回复下&#xff0c;但是感觉这个话题又可以稍微展开讲讲&#xff0c;干脆就整理成一篇简单的科普&#xff0c;这样也能更方便清晰地回答这个问题。 聊这个问题之前&#xff0c;我们需要把一个“老生常谈”的概念拿出来说&#xff0c;那…

Open3d 点云投影到 xoy yoz 平面最简单的方式(附python 代码)

最简单的方式&#xff0c;就是直接把原有的点云的数据的 z or x 赋值为0, 然后生成一个新的点云。 filename_model1 r"1.pcd"down 10point_cloud o3d.io.read_point_cloud(filename_model1) point_cloud point_cloud.uniform_down_sample(int(down)) print(降采样…

metasfresh开源ERP系统Windows开发环境配置参考

目录 概述 开发环境 配置过程 后端启动 前端启动 登陆系统 其他 概述 Compiere闭源之后衍生出了Admpiere等若干开源的产品&#xff0c;metasfresh就是其中之一&#xff0c;metasfresh截至发稿时在GitHub上已有64000多次的修改提交&#xff0c;而且仍在维护中&#xff0…

GIS避坑指南!工作中ArcGIS常用的40个小技巧

01图斑的边界线太粗而且无法修改 之前有群友遇到这样一个问题&#xff0c;边界线粗到连图斑都看不见&#xff1a; 查看符号系统&#xff0c;很正常&#xff1a; 究其原因&#xff0c;是地图视图比例的问题&#xff0c;正常情况下&#xff0c;地图的视图比例会随着视图范围自动调…

未来20年人工智能将如何塑造社会

照片由Brian McGowan在Unsplash上拍摄 更多资讯&#xff0c;请访问 2img.ai “人工智能会成为我们的救星还是我们的末日&#xff1f;” 几十年来&#xff0c;这个问题一直困扰着哲学家、科学家和科幻爱好者。 当我们踏上技术革命的边缘时&#xff0c;是时候透过水晶球&#x…

我国氮化硼市场规模逐渐扩大 市场集中度有望不断提升

我国氮化硼市场规模逐渐扩大 市场集中度有望不断提升 氮化硼&#xff08;BN&#xff09;俗称为白石墨&#xff0c;是由硼原子和氮原子所构成的一种晶体材料&#xff0c;在常温条件下多表现为一种棕色或暗红色晶体。氮化硼具有导热性好、硬度大、熔点高、抗化学侵蚀性等优点&…

快来看,错过了今天就要设置为vip文章了----openEuler@2024全球发展展望与战略规划

会议主题&#xff1a;openEuler2024全球发展展望与战略规划 OpenEuler2024项目在2024年成功推出了多个长期支持&#xff08;LTS&#xff09;版本&#xff0c;标志着其在智能技术领域的全新篇章&#xff0c;并致力于构建全球性的开源新生态。以下是该项目的主要内容和成就概览&a…

【日记】软考居然一次过了(620 字)

正文 早上空闲的时候&#xff0c;上 QQ 看了一下&#xff0c;许久不见动静的系统架构设计师群有人说出分了。我想高级都出分了&#xff0c;中级应该也出来了&#xff0c;于是用手机查了一下。看到分数几乎快要泪从中来。为什么软考能一次过&#xff0c;银行从业资格证考了两三…

MST霍尔传感器IC-MH251,MH253,GT3144在卷发器方案中的应用

霍尔传感器驱动卷发器应用 卷发器在我们的日常生活中已经成为了不可或缺的一种生活工具&#xff0c;它时刻可以护理我们的头发&#xff0c;保养我们的发质。霍尔传感器驱动卷发器&#xff0c;那么霍尔传感器是如何运用在卷发器中的呢&#xff1f;霍尔传感器在卷发器中的工作原…

快速阅读参考文献:kimi请求出战!

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 上篇文章&#xff0c;我们为大家演示了“如何使用kimi创建论文中的流程图”。今天继续为大家介绍“使用kimi快速阅读学术参考文献”。 在学术研究的海洋中&#xff0c;文献阅读是一项基…