工业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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ实践——定制一致性Hash交换器的路由字段

大纲 Property法定制交换器绑定队列测试 Header法定制交换器绑定队列测试 代码工程参考资料 在《RabbitMQ实践——利用一致性Hash交换器做负载均衡》一文中&#xff0c;我们熟悉了一致性Hash交换器的使用方法。默认的&#xff0c;它使用Routing key来做Hash的判断源。但是有些时…

查看呗占用端口,并且删除该端口

点击windows开始菜单输入cmd 或者使用“winr”键来打开窗口 窗口中输入netstat -ano|findstr 18088 查找18088端口的进程 根据pid删除进程taskkill /pid 18088 -t -f

第4章 客户端-Java客户端Jedis

1.获取Jedis maven配置加入项目中 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.2</version> </dependency>2.Jedis的基本使用 Jedis的使用方法非常简单&#xff0c;只要下面三…

理解IP地址与域名:访问网站的基石

在互联网的世界里&#xff0c;每一次点击、每一次浏览都伴随着一个神秘的数字串——IP地址&#xff0c;以及一个易于记忆的字符串——域名。对于普通用户而言&#xff0c;这两者可能只是浏览网页时的“幕后英雄”&#xff0c;但实际上&#xff0c;它们构成了我们访问网站的基石…

【EtherCAT】TwinCAT3通过PLC修改SDO数据

目录 1、打开twincat3, 左边PLC右键->添加新项&#xff0c;建立PLC工程 2、->References右键添加库 3、找到Tc2_EtherCAT库&#xff0c;点确定。 4、PLC程序ST语言就可以调用下面的功能块函数 5、PLC编程界面右键->输入助手 1、打开twincat3, 左边PLC右键->添…

element ui form 表单验证

表单验证方法 在el-form元素上总体设置校验规则rules&#xff0c;下面是官方案例 <el-form :model"ruleForm" :rules"rules" ref"ruleForm" label-width"100px" class"demo-ruleForm"><el-form-item label"…

单目标应用:基于吸血水蛭优化器(Blood-Sucking Leech Optimizer,BSLO)的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、吸血水蛭优化器求解微电网 2.1算法简介 吸血水蛭优化器&#xff08;B…

科技助力行政执法:4G无线网络技术在管理指挥中心的应用

随着科技的飞速发展&#xff0c;4G无线网络技术已经越来越成熟&#xff0c;为行政执法管理带来了前所未有的便利与效率。特别是在管理指挥中心&#xff0c;通过实时观看高清现场画面&#xff0c;执法人员可以随时进行调度指挥&#xff0c;掌握行政执法队伍的全过程&#xff0c;…

2024年03月Python六级真题+答案(中国电子学会 )

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.以下选项中&#xff0c;创建类正确的是&#xff1f;&#xff08; &#xff09; A. class test1…

Java——枚举

1. 概念 枚举是在JDK1.5之后引入的&#xff0c;主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3;但是…

ED系列可读可写低频地埋电子标识器(内置SIC279芯片)数据写入说明

ED系列低频地埋电子标识器&#xff08;内置SIC279芯片&#xff09;&#xff0c;即带ID可读可写电子标识器&#xff0c;包含ED1100-ID-RW&#xff0c;ED1500-ID-RW&#xff0c;ED2000-ID-RW&#xff0c;支持按固定格式写数据的地埋电子标识器。 ED系列可读可写低频地埋电子标识…

大猫咪守护LoRA:定制你的大猫私人大猫咪宠物写真合影,某音某书流行款

&#x1f339;大家好&#xff01;我是安琪&#xff01;感谢大家的支持与鼓励。 大猫咪LoRA模型简介 今天应群里同学大猫咪宠物合影写真提议&#xff0c;为大家介绍一款来自作者 沐沐人像合成的主题为大猫咪守护的LoRAl模型&#xff1a;沐沐-大猫咪。这是一款当下在某音、某书…

【5G核心网】5G NWDAF(Network Data Analytics Function)网元功能介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

sql查询CONCAT、group_concat、concat_ws函数用法

SELECT str_code, 1 CONCAT 连接多字段字符串就模糊查询 select CONCAT(dept_name, , dept_code , , parent_id) ,* from sys_dept where CONCAT(dept_name, , dept_code , , parent_id) LIKE %16% 2、语法&#xff1a;group_concat( [distinct] 要连接的字段 [order by …

光模块市场受益于AI热潮同比增长45%,行业前景看好

近日&#xff0c;市场研究机构YOLE Group在最新的市场报告中指出&#xff0c;AI驱动的光模块市场将出现同比45%的增长。预计至2024年&#xff0c;数据通信领域的人工智能光收发器市场将实现高达45%的同比增长&#xff0c;展现出了强大的市场活力和广阔的发展前景。 光收发器市…

Amazon OpenSearch Service 现在支持 JSON Web Token(JWT)身份验证和授权

最近&#xff0c;Amazon OpenSearch 推出了一个新功能&#xff0c;支持 JWT 认证和授权。虽然这个功能在开源的 OpenSearch 中早已存在&#xff0c;但在托管的 Amazon OpenSearch 中的实现一直不够理想。 此前的授权方式 控制台登录 内部数据库&#xff1a;使用基本的用户名…

【分布式系列】分布式锁在 Redis 主从部署中的挑战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

易基因:围产期母体有毒物质暴露对子代血液、大脑和肝脏DNA甲基化的影响 | 研究速递

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 母体在环境化学物质中暴露可能对后代的健康造成不利影响。越来越多的证据支持这些不良效应至少部分受表观遗传修饰调控。目前尚不清楚血液中的表观遗传变化是否反映了大脑皮层或肝脏等目…

【机器学习】K-means++: 一种改进的聚类算法详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 K-means: 一种改进的聚类算法详解引言1. K-means算法回顾1.1 基本概念1.2 局限性…

TEMU半托管模式引领跨境电商新风尚

TEMU半托管模式作为2024年的热门话题&#xff0c;正吸引着越来越多卖家的目光。继全托管模式取得巨大成功之后&#xff0c;半托管模式的推出无疑为跨境电商行业注入了新的活力。 在选品方向上&#xff0c;TEMU半托管模式强调商品的聚焦与精选。卖家在选择上架商品时&#xff0c…