物联网云原生云边协同

文章目录

    • 一、物联网平台设计
      • 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.上传属性

  • 物联网
# ThgingsBoardhttps://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 参考

# 部署 KubeEdgehttps://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)   4d5hNAME                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   4d5hNAME                                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/cloud-iptables-manager   2         2         2       2            2           <none>          4d5hNAME                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cloudcore   1/1     1            1           4d5hNAME                                   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: 1selector:matchLabels:app: postgresqltemplate:metadata:labels:app: postgresqlspec:nodeName: edge-1    #调度到指定机器hostNetwork: true   # 使用主机网络containers:- name: postgresqlimage: postgres:12env:- name: LANGvalue: "C.UTF-8"- name: TZvalue: "Asia/Shanghai"      - name: POSTGRES_DBvalue: "postgres"- name: POSTGRES_USERvalue: "postgres"- name: POSTGRES_PASSWORDvalue: "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          31sNAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   84dNAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/postgresql   1/1     1            1           31sNAME                                    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: 1selector:matchLabels:app: tb-edgetemplate:metadata:labels:app: tb-edgespec:nodeName: edge-1    #调度到指定机器containers:- name: tb-edgeimage: thingsboard/tb-edge:3.5.1EDGEports:- containerPort: 1883hostPort: 11883- containerPort: 8080hostPort: 18080env:- name: SPRING_DATASOURCE_URLvalue: "jdbc:postgresql://192.168.202.211:5432/tb-edge"          - name: SPRING_DATASOURCE_USERNAMEvalue: "postgres"- name: SPRING_DATASOURCE_PASSWORDvalue: "postgres"- name: CLOUD_ROUTING_KEYvalue: "1d2952e8-227e-b019-7eab-d29664b605c1"     - name: CLOUD_ROUTING_SECRETvalue: "iihb0i793etbqct62gpf"     - name: CLOUD_RPC_HOSTvalue: "82.157.166.86"- name: CLOUD_RPC_PORTvalue: "7070"- name: CLOUD_RPC_SSL_ENABLEDvalue: "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          2m34sNAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   84dNAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/postgresql   1/1     1            1           14m
deployment.apps/tb-edge      1/1     1            1           2m34sNAME                                    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"}}
}

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

  • 物联网
# ThgingsBoardhttps://iothub.org.cn/docs/iot/
https://iothub.org.cn/docs/iot/tb-edge/edge-iot/

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

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

相关文章

在Blender中清理由Instant-NGP等几何学习技术生成的网格

使用布尔运算: 创建一个大的立方体或其他简单几何体包裹住全部网格。使用布尔修改器对两个网格进行“差集”运算。这将移除超出包裹体之外的多余网格部分。 手动选择并删除: 进入编辑模式&#xff08;按Tab键&#xff09;。按A键取消选择所有顶点。按B键并拖动以选择您想要删除…

11. 搭建较通用的GoWeb开发脚手架

文章目录 导言一、加载配置二、初始化日志三、初始化MySQL连接四、初始化Redis连接五、初始化gin框架内置的校验器使用的翻译器六、注册路由七、 启动服务八、测试运行九&#xff1a;注意事项 代码地址&#xff1a;https://gitee.com/lymgoforIT/bluebell 导言 有了前述知识的…

最简单的基于 FFmpeg 的内存读写的例子:内存转码器

最简单的基于 FFmpeg 的内存读写的例子&#xff1a;内存转码器 最简单的基于 FFmpeg 的内存读写的例子&#xff1a;内存转码器正文源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的内存读写的例子&#xff1a;内存转码器 参考雷霄骅博士的文章&#xff0c;链接&#xf…

Chrome中如何导出和导入书签

导出书签 如下图所示&#xff1a; 右上角三点->书签和清单->书签管理器->右上角三点->导出书签 然后你选择保存地址即可。打开后如下&#xff1a; 导入书签 如下图所示&#xff1a; 右上角三点->书签和清单->导入书签和设置->选择以前导出的书签&…

【Node.js】-闲聊:前端框架发展史

前端框架的发展史是一个不断演进和创新的过程&#xff0c;旨在提高开发效率、优化用户体验&#xff0c;并推动前端技术的不断发展。以下是前端框架发展的主要阶段和关键里程碑&#xff1a; 早期阶段&#xff1a; 在这个阶段&#xff0c;前端主要由HTML、CSS和JavaScript等基础技…

ceph 换盘扩容

调整时间 基础设施调整操作&#xff1a;工作日0点之后操作&#xff0c;或者非工作日 基础设施包括网络、主机系统、存储 / 备份系统、安全系统、以及机房动力环境等 调整规范 变更管理实现所有基础设施和应用系统的变更&#xff0c;变更管理应记录并对所有要求的变更进行分…

LLM Drift(漂移), Prompt Drift Cascading(级联)

原文地址&#xff1a;LLM Drift, Prompt Drift & Cascading 提示链接可以手动或自动执行&#xff1b;手动需要通过 GUI 链构建工具手工制作链。自治代理在执行时利用可用的工具动态创建链。这两种方法都容易受到级联、LLM 和即时漂移的影响。 2024 年 2 月 23 日 在讨论大型…

什么是自动化测试?什么情况下使用?

什么是自动化测试? 自动化测试是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架&#xff0c;编写自动化测试脚本&#xff0c;来模拟手工测试过程。比如说&#xff0c;在项目迭代过程中&#xff0c;持续的回归测试是一项非常枯燥…

如何在Mapbox GL中处理大的GEOJSON文件

Mapbox GL可以将 GeoJSON 数据由客户端(Web 浏览器或移动设备)即时转换为 Mapbox 矢量切片进行显示和处理。本文的目的是教大家如何有效加载和渲染大型 GeoJSON 源,并优化渲染显示速度,增强用户体验,减少客户端卡顿问题。本文以Mapbox 为例,至于其它框架原理大致相同,可…

【HarmonyOS】ArkTS-枚举类型

枚举类型 枚举类型是一种特殊的数据类型&#xff0c;约定变量只能在一组数据范围内选择值 定义枚举类型 定义枚举类型&#xff08;常量列表&#xff09; enum 枚举名 { 常量1 值, 常量2 值,......}enum ThemeColor {Red #ff0f29,Orange #ff7100,Green #30b30e}使用枚举…

HTML世界之标签Ⅲ

一、dfn 标签 <dfn> 标签是一个短语标签&#xff0c;用来定义一个定义项目。 写法&#xff1a; <dfn></dfn> 二、dialog 标签 <dialog> 标签定义一个对话框、确认框或窗口。 属性 值 描述 open open 规定 dialog 元素是有效的&#xff0c;用户…

为什么接口测试工具不跨域

浏览器实施了同源策略&#xff0c;限制了在不同域之间的资源共享。这是出于安全考虑&#xff0c;以防止恶意网站获取用户的敏感信息。同源策略要求发送请求的源&#xff08;协议、域名和端口&#xff09;必须与接收响应的源相同。如果源不同&#xff0c;则浏览器会拒绝该请求&a…

报错Importing ArkTS files to JS and TS files is not allowed. <etsLint>

ts文件并不支持导入ets文件&#xff0c;为了方便开发应用卡片&#xff0c;entryformAbility创建的时候默认是ts文件&#xff0c;这里只需要把ts文件改成ets便可以轻松的导入所需要的ets即可 我创建了一个鸿蒙开发的交流群&#xff0c;喜欢的鸿蒙朋友可以扫码或者写群号&#xf…

微服务自动化管理初步认识与使用

目录 一、ETCD 1.1、ETCD简介 对于实施工程师&#xff1a; 1.2、特点 1.3. 使用场景 1.4、 关键字 1.5 工作原理 二、ETCD的安装 2.1、下载路径 2.2、介绍 2.3、具体操作 安装服务端 安装etcd客户端 测试 三、ETCD使用 3.1、前奏具体操作 3.2、 常用操作 一、ET…

【NERF】入门学习整理(一)

【NERF】入门学习整理 1. 【NERF】入门学习整理1.1 基础含义输入输出2.位置编码含义3.代码中实际网路结构4.Volume Render部分(64个采样点处理)5.Volume Render部分(64个采样点处理)【NERF】及其变种(二) 1. 【NERF】入门学习整理 1.1 基础含义输入输出 深度学习模型中…

ROS——Ubuntu环境搭建

Ubuntu安装 首先下载 Ubuntu 的镜像文件&#xff0c;链接如下:ubuntu-releases-20.04安装包下载_开源镜像站-阿里云ubuntu-releases-20.04安装包是阿里云官方提供的开源镜像免费下载服务&#xff0c;每天下载量过亿&#xff0c;阿里巴巴开源镜像站为包含ubuntu-releases-20.04…

【Android 内存优化】KOOM 快手开源框架线上内存监控方案-源码剖析

文章目录 前言OOMMonitorInitTask.INSTANCE.initOOMMonitor.INSTANCE.startLoopsuper.startLoopcall() LoopState.Terminate dumpAndAnalysisdumpstartAnalysisService回到startLoop方法总结 前言 这篇文章主要剖析KOOM的Java层源码设计逻辑。 使用篇请看上一篇: 【Android …

使用阿里云服务器搭建网站简单吗?超简单教程

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

Pytorch学习 day08(最大池化层、非线性激活层、正则化层、循环层、Transformer层、线性层、Dropout层)

最大池化层 最大池化&#xff0c;也叫上采样&#xff0c;是池化核在输入图像上不断移动&#xff0c;并取对应区域中的最大值&#xff0c;目的是&#xff1a;在保留输入特征的同时&#xff0c;减小输入数据量&#xff0c;加快训练。参数设置如下&#xff1a; kernel_size&#…

Linux网络基础2之协议

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 1.协议 1.序列化与反序列换 2.协议定制 二…