物联网云原生云边协同

news/2024/7/8 3:14:10

文章目录

    • 一、物联网平台设计
      • 1.物联网平台设计
      • 2.物联网平台实现
    • 二、部署环境
      • 1.节点配置
      • 2.版本信息
    • 三、物联网平台部署
      • 1.部署 Kubernetes 集群
      • 2.部署 KubeEdge
      • 3.部署 ThingsBoard 集群
      • 4.部署 ThingsBoard Edge
        • 4.1.创建 Edge 实例
        • 4.2.部署 PostgreSQL
        • 4.3.创建数据库
        • 4.4.部署 ThingsBoard Edge
    • 四、物联网设备接入
      • 1.创建设备
      • 2.MQTTX 工具
      • 3.上传遥测
      • 4.上传属性

  • 物联网
# ThgingsBoard

https://iothub.org.cn/docs/iot/
https://iothub.org.cn/docs/iot/tb-edge/edge-iot/

一、物联网平台设计

1.物联网平台设计

IoT 平台总体设计:

  • 物联网平台(IoT)部署在云上,物联网设备通过边缘计算节点接入物联网平台
  • 物联网平台采用云原生设计,应用容器化部署,在云端实现容器的调度编排
  • 物理网平台实现云边协同,云作为控制平面,边作为计算平台
  • 云端物联网平台选择开源物联网平台 ThingsBoard 社区版
  • 边缘计算节点选择 ThingsBoard Edge 接入物联网设备

在这里插入图片描述

IoT 云边协同设计:

  • Kubernetes 在云端部署 ThingsBoard 平台
  • KubeEdge 在边缘节点部署 ThingsBoard Edge
  • IoT 设备通过 MQTT 协议接入边缘计算节点
  • 通过 Kubernetes 、KubeEdge 实现云边协同

2.物联网平台实现

物联网平台(IoT)具体实现:

  1. 部署 Kubernetes 集群
  2. 部署 KubeEdge
  3. 部署 ThingsBoard 集群
  4. 部署 ThingsBoard Edge 边缘节点
  5. IoT 设备通过 MQTT 链接 ThingsBoard Edge
  6. MQTTX 工具模拟物联网设备

在这里插入图片描述

二、部署环境

1.节点配置

主机名IP地址角色
k8s-master192.168.202.201master
k8s-node1192.168.202.202node
k8s-node2192.168.202.203node
edge-1192.168.202.211edge

在这里插入图片描述

2.版本信息

信息版本备注
K8sv1.23.12
centos7.8# cat /etc/redhat-release
KubeEdgev1.13.4
ThingsBoardv3.5.1
ThingsBoard Edge3.5.1EDGE

三、物联网平台部署

1.部署 Kubernetes 集群

部署 Kubernetes 集群参考

# 部署 Kubernetes 集群

https://iothub.org.cn/docs/kubernetes/pro/deploy-kubernetes/
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE    VERSION
k8s-master   Ready    control-plane,master   27d    v1.23.12
k8s-node1    Ready    <none>                 27d    v1.23.12
k8s-node2    Ready    <none>                 10d    v1.23.12

在这里插入图片描述

2.部署 KubeEdge

部署 KubeEdge 参考

# 部署 KubeEdge

https://iothub.org.cn/docs/kubeedge/deploy/deploy/
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE    VERSION
edge-1       Ready    agent,edge             4d4h   v1.23.17-kubeedge-v1.13.4
k8s-master   Ready    control-plane,master   27d    v1.23.12
k8s-node1    Ready    <none>                 27d    v1.23.12
k8s-node2    Ready    <none>                 10d    v1.23.12


[root@k8s-master ~]# kubectl get all -n kubeedge
NAME                               READY   STATUS    RESTARTS        AGE
pod/cloud-iptables-manager-592m5   1/1     Running   3 (3d22h ago)   4d5h
pod/cloud-iptables-manager-pg4pl   1/1     Running   3 (3d22h ago)   4d5h
pod/cloudcore-5959c5986f-8hsc4     1/1     Running   3 (3d22h ago)   4d5h

NAME                TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                           AGE
service/cloudcore   NodePort   10.110.71.216   <none>        10000:30976/TCP,10001:31372/TCP,10002:31922/TCP,10003:30163/TCP,10004:31927/TCP   4d5h

NAME                                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/cloud-iptables-manager   2         2         2       2            2           <none>          4d5h

NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cloudcore   1/1     1            1           4d5h

NAME                                   DESIRED   CURRENT   READY   AGE
replicaset.apps/cloudcore-5959c5986f   1         1         1       4d5h

在这里插入图片描述
在这里插入图片描述

3.部署 ThingsBoard 集群

部署 ThingsBoard 参考

# ThingsBoard 单机部署
https://iothub.org.cn/docs/iot/deploy/deploy-single/

# ThingsBoard 集群部署
https://iothub.org.cn/docs/iot/deploy/deploy-cluster/

备注:考虑测试环境资源有限,部署单机代替云端 ThingsBoard 集群
在这里插入图片描述
在这里插入图片描述

4.部署 ThingsBoard Edge

4.1.创建 Edge 实例

在 ThingsBoard 服务端上配置 Edge
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# ThingsBoard 服务器地址
82.157.166.86

# 边缘键
1d2952e8-227e-b019-7eab-d29664b605c1

# 边缘密钥
iihb0i793etbqct62gpf
4.2.部署 PostgreSQL

postgresql.yaml

[root@k8s-master kubeedge]# vim postgresql.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgresql
  template:
    metadata:
      labels:
        app: postgresql
    spec:
      nodeName: edge-1    #调度到指定机器
      hostNetwork: true   # 使用主机网络
      containers:
      - name: postgresql
        image: postgres:12
        env:
          - name: LANG
            value: "C.UTF-8"
          - name: TZ
            value: "Asia/Shanghai"      
          - name: POSTGRES_DB
            value: "postgres"
          - name: POSTGRES_USER
            value: "postgres"
          - name: POSTGRES_PASSWORD
            value: "postgres"
[root@k8s-master thingsboard]# kubectl apply -f postgresql.yaml 
deployment.apps/postgresql created


[root@k8s-master thingsboard]# kubectl get all
NAME                              READY   STATUS    RESTARTS   AGE
pod/postgresql-867f894fd4-tthq8   1/1     Running   0          31s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   84d

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/postgresql   1/1     1            1           31s

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/postgresql-867f894fd4   1         1         1       31s

在这里插入图片描述

访问PostgreSQL

# 访问地址

192.168.202.211
5432
postgres/postgres

在这里插入图片描述

4.3.创建数据库

在边缘节点创建数据库 tb-edge
在这里插入图片描述

4.4.部署 ThingsBoard Edge

tb-edge.yaml

[root@k8s-master kubeedge]# vim tb-edge.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tb-edge
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tb-edge
  template:
    metadata:
      labels:
        app: tb-edge
    spec:
      nodeName: edge-1    #调度到指定机器
      containers:
      - name: tb-edge
        image: thingsboard/tb-edge:3.5.1EDGE
        ports:
        - containerPort: 1883
          hostPort: 11883
        - containerPort: 8080
          hostPort: 18080
        env:
          - name: SPRING_DATASOURCE_URL
            value: "jdbc:postgresql://192.168.202.211:5432/tb-edge"          
          - name: SPRING_DATASOURCE_USERNAME
            value: "postgres"
          - name: SPRING_DATASOURCE_PASSWORD
            value: "postgres"
          - name: CLOUD_ROUTING_KEY
            value: "1d2952e8-227e-b019-7eab-d29664b605c1"     
          - name: CLOUD_ROUTING_SECRET
            value: "iihb0i793etbqct62gpf"     
          - name: CLOUD_RPC_HOST
            value: "82.157.166.86"
          - name: CLOUD_RPC_PORT
            value: "7070"
          - name: CLOUD_RPC_SSL_ENABLED
            value: "false"
[root@k8s-master thingsboard]# kubectl apply -f tb-edge.yaml 
deployment.apps/tb-edge created


[root@k8s-master thingsboard]# kubectl get all
NAME                              READY   STATUS    RESTARTS   AGE
pod/postgresql-867f894fd4-tthq8   1/1     Running   0          14m
pod/tb-edge-67f4b7c8-xbpjg        1/1     Running   0          2m34s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   84d

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/postgresql   1/1     1            1           14m
deployment.apps/tb-edge      1/1     1            1           2m34s

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/postgresql-867f894fd4   1         1         1       14m
replicaset.apps/tb-edge-67f4b7c8        1         1         1       2m34s

在这里插入图片描述

访问 ThingsBoard Edge

# 访问地址

http://192.168.202.211:18080/login
tenant@thingsboard.org
tenant

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#  参考
docker run -d --network host --name tb-edge --restart=always \
-e "SPRING_DATASOURCE_URL=jdbc:postgresql://192.168.202.166:5432/tb-edge" \
-e "SPRING_DATASOURCE_USERNAME=postgres" \
-e "SPRING_DATASOURCE_PASSWORD=postgres" \
-e "CLOUD_ROUTING_KEY=672b5ad6-cf07-c8af-e7cf-ac8a85114902" \
-e "CLOUD_ROUTING_SECRET=tuhk87tqb4l1463revxf" \
-e "CLOUD_RPC_HOST=82.157.166.86" \
-e "CLOUD_RPC_PORT=7070" \
-e "CLOUD_RPC_SSL_ENABLED=false" \
-v ~/.mytb-edge-data:/data \
-v ~/.mytb-edge-logs:/var/log/tb-edge \
thingsboard/tb-edge:3.5.1EDGE

四、物联网设备接入

1.创建设备

在 Edge 端创建设备 iot-device
在这里插入图片描述
在这里插入图片描述

在服务端查看设备
在这里插入图片描述

# 访问令牌
1ThJ4grl3mXxxw7egHNo

2.MQTTX 工具

192.168.202.211
11883
1ThJ4grl3mXxxw7egHNo

在这里插入图片描述

3.上传遥测

v1/devices/me/telemetry


{
 "temperature": 42.2, 
 "humidity": 70,
 "hvacEnabled": true,
 "hvacState": "IDLE",
 "configuration": {
    "someNumber": 42,
    "someArray": [1,2,3],
    "someNestedObject": {"key": "value"}
 }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.上传属性

v1/devices/me/attributes


{
	"attribute1": "value1",
	"attribute2": true,
	"attribute3": 42.0,
	"attribute4": 73,
	"attribute5": {
		"someNumber": 42,
		"someArray": [1, 2, 3],
		"someNestedObject": {
			"key": "value"
		}
	}
}

在这里插入图片描述
在这里插入图片描述

  • 物联网
# ThgingsBoard

https://iothub.org.cn/docs/iot/
https://iothub.org.cn/docs/iot/tb-edge/edge-iot/

http://lihuaxi.xjx100.cn/news/2082478.html

相关文章

C语言如何避免循环中的初值错误问题?

一、问题 在⼀些进⾏累加、累乘、累减的计算中&#xff0c;要对累积的变量赋初值&#xff0c;然后进⾏循环&#xff0c;不断地累积计算。但是当忘记为累积变量赋初值&#xff0c;或者赋初值的位置不当时&#xff0c;便会出现累积错误&#xff0c;应如何避免这种错误呢&#xff…

【教学类-34-08】20240309拼图(“光滑”长方拼图)4*4格子(AI对话大师)

背景需求&#xff1a; 前期制作了各类图片的切割拼图&#xff0c;以下是切割后图片是”长方形小图”的代码&#xff08;比较容易剪&#xff09; 一、学号拼图 【教学类-34-05】20230523拼图&#xff08;数字学号0X-长方块拼图-双色深灰浅灰&#xff09;3*3格子&#xff08;中…

多址接入技术 ---FDMA、TDMA、CDMA

1、多址接入技术 所谓多址技术就是把同一个无线信道按照时间、 频率等进行分割, 使不同的用户都能够在不同的分割段中使用这一信道, 而又不会明显地感觉到他人的存在, 就好像自己在专用这一信道一样。 占用不同的分割段就像是拥有了不同的地址, 使用同一信道的多个用户就…

【C语言】C语言编程实战:Base64编解码算法从理论到实现(附完整代码)

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

16 PyTorch 神经网络基础【李沐动手学深度学习v2】

1. 模型构造 在构造自定义块之前&#xff0c;我们先回顾一下多层感知机的代码。 下面的代码生成一个网络&#xff0c;其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层&#xff0c; 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 层和块 构造单层神经网咯…

ABAP接口部分-C#调用RFC

目录 ABAP接口部分-C#调用RFC创建表结构创建RFC函数创建C#项目引用SAP .Net Connector包绘制窗口的控件最终布局代码 项目配置报错SAP.Middleware.Connector.RfcDestinationManager报错SAP.Middleware.Connector.RfcLoginexception报错SAP.Middleware.Connector.RfcInvalidStat…

第十二章执行引擎

第十二章执行引擎 文章目录 第十二章执行引擎0. 前情概述1. 执行引擎的概述1.1 执行引擎的工作过程 2. Java代码编译和执行的过程什么是解释器&#xff1f;什么是JIT编译器&#xff1f;为什么说java是半编译半解释型语言 3. 机器码、指令、汇编语言机器码指令指令集汇编语言高级…

STM32基本定时功能

1、定时器就是计数器。 2、怎么计数&#xff1f; 3、我们需要有一恒定频率的方波信号&#xff0c;再加上一个寄存器。 4、比如每来一个上升沿信号&#xff0c;寄存器值加1&#xff0c;就可以完成计数。 5、假设方波频率是100Hz&#xff0c;也就是1秒100个脉冲。…