EdgeX Foundry MQTT设备服务

news2024/12/31 7:39:23

一、部署edgex

        1.运行命令行,进入放置docker-compose-fuji-no-secty.yml文件的路径下

        下载到本地的docker-compose文件

        执行:

docker-compose -f docker-compose-fuji-no-secty.yml pull

        拉取相关镜像,这里默认将文件中没有注释的服务镜像全部拉取,其实用户可以根据自行需要只拉取edgex的核心镜像也是可以的(只需要将不需要的服务注释即可)

二、拉取edgex的镜像文件后,拉取eclipse-mosquitto镜像

        这是一个broker,用于发布订阅mqtt消息的:

docker pull eclipse-mosquitto:latest

三、运行eclipse-mosquitto

docker run -mosquitto -p 1883:1883 eclipse-mosquitto

四、修改mqtt设备脚本,这里示范python脚本的修改:

mqtt脚本修改

注:主机信息必须与你的broker主机保持一致,不然该设备脚本无法连接至broker;主题可以随便起,但是必须与edgexUI当中添加的设备的topic保持一致。

五、运行mqtt脚本,在mqtt脚本文件的路径下执行以下命令:

python2 mock-device-for-mqtt.py

        脚本成功运行

        注:只有出现Connected with result code 0才表示模拟设备脚本成功连接至mosquitto broker

六、运行edgex的容器,这里只需要执行一行命令即可:

docker-compose -f docker-compose-fuji-no-secty.yml up -d

        运行后执行docker ps -a显示正在运行的容器信息,

        报错的mqtt服务

        注:这里我展示的是很早就运行的容器信息,所有会有一些不一样,大家只需要关心device-mqtt-go即可,可以看到,框中服务的状态显示:Excited(2) ...这个表示容器异常退出,OK,没有关系,继续按照步骤来。

7.打开浏览器,输入:

http://192.168.194.131:8500(192.168.194.131为运行edgex的主机ip,8500为edgex中consul服务的运行端口)

        修改一下consul当中字段即可:具体修改请按照图所示:

7.1可以看到edgex-device-mqtt的Tags为错误状态。

        consul界面

7.2打开:

        consul中要修改的地方

7.3找到当前页面,将IncomingHost与ResponseHost当中的ip地址信息修改为运行broker的主机ip,这里为:http://192.168.194.131

        只有这样,edgex的mqtt设备服务才能成功连接到mosquitto broker。

consul中要修改的地方

7.4修改IP字段

        填写broker的主机ip

8.在命令行重启mqtt设备服务:

        重启mqtt服务

        验证mqtt设备服务是否成功启动:

8.1通过命令行验证:

        命令行中成功启动的mqtt服务

8.2 通过consul界面查看:

        consul界面中成功启动的mqtt服务

        综上两点所述:edgex当中的mqtt服务已经成功启动了。

9.打开UI界面http://192.168.194.131:4000/

        注:4000为edgex当中UI服务的运行端口:

        UI登录界面

        注:用户名和密码都是admin

        Gateway信息填写

        以上信息主要主要的是Gateway中的Address字段,填写的是edegx实例所运行的主机IP,请如实填写。

        接下来点击左边当中的device-service按钮。

        选择service按钮

        依次进入如下界面,可以看到这里有一个edegx-device-mqtt设备服务,但是下方的device-profile处为空。

        service界面

10添加设备配置文件:

        添加配置文件

        将之前提到的设备配置文件上传即可。

11添加设备:

        添加设备的步骤

        添加设备的界面

        要填写的核心key-value字段

        源码中的相关字段

        注:以上文件的链接:https://github.com/edgexfoundry/device-mqtt-go/blob/fuji/internal/driver/config.go

        最后该教程中填写示例如下:

        填写示例

12测试。

        OK。现在让我们测试一下是否可以在UI界面中成功获取到mqtt设备脚本的值:

        获取数据

        通过上图我们发现,我们已经成功地在UI界面中获取到了mqtt设备脚本的值。

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

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

相关文章

企业注册版 :ag-Grid Enterprise 30.1.0

Ag-Grid 被描述为一种商业产品,已根据 EULA 进行分发,并受到我们提供的技术团队的鼓励。它非常高级,具有与行分组一样的性能以及范围选择、主数据和案例、行的服务器端模型等等。Ag-Grid Enterprise 通常附带集成图表,允许用户和开…

无涯教程-JavaScript - IFS函数

描述 IFS函数检查是否满足一个或多个条件,并返回与第一个TRUE条件相对应的值。此功能已在Excel 2016中添加。 语法 IFS (logical_test1, value_if_true1, [logical_test2, value_if_true2], [logical_test3, value_if_true3]…) 争论 Argument描述Required/Optionallogical…

无涯教程-JavaScript - ATAN函数

描述 The ATAN function returns the arctangent, or inverse tangent, of a number. The returned angle is given in radians between -π/2 and π/2. The arctangent is the angle whose tangent is number. 语法 ATAN (number)争论 Argument描述Required/OptionalNumb…

springboot配置注入增强(二)属性注入的原理

一 原理 1 配置的存储 springboot在启动的时候会后构建一个org.springframework.core.env.Environment类型的对象,这个对象就是用于存储配置,如图springboot会在启动的最开始创建一个Environment对象 这个webApplicationType的枚举是在new SpringAppli…

Learn Prompt-Midjourney 图片生成

简介 随着 ChatGPT 的爆火,越来越多的人开始关注并尝试 AI 相关的应用。而图片生成就是其中一个备受瞩目的领域。目前已经有许多图像生成工具,如 Midjourney,Stable Diffusion,DALL-E,Firefly等。本课程主要是以 Midj…

Python 变量的类型注解

视频版教程 Python3零基础7天入门实战视频教程 类型注解 前面有个示例,我们函数参数是字符串类型,但是pycharm工具不知道,所以不会给我们提示s的方法,我们只能人工手写,效率大大降低。 类型注解: 在代码中…

心法利器[101] | 从大模型到大模型系统

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

使用ElementPlus实现内嵌表格和内嵌分页

前言 有时遇到这样的需求,就是在表格里面嵌入一个表格,以及要求带有分页,这样在ElementPlus中很好实现。以下使用Vue2语法实现一个简单例子,毕竟Vue3兼容Vue2语法,若想要Vue3版本例子,简单改改就OK了。 一…

数据结构——图的应用

文章目录 前言一、图的应用1. 最小生成树普里姆(Prim)算法克鲁斯卡尔(Kruskal)算法 2. 最短路径Dijkstra算法求单源最短路径 3. 拓扑结构4. 关键路径 总结 前言 图的应用 1.1 最小生成树 1.2 最短路径 1.3 拓扑结构 1.4 关键路径…

【网络教程】揭秘Windows SSH服务端免密登录:告别繁琐,享受安全连接

文章目录 开启Windows下的SSH服务端图形界面安装手动下载安装Windows如何查看系统用户名Windows如何查看本机IP开启免密登录Window生成秘钥Linux下生成秘钥配置公钥视频讲解开启Windows下的SSH服务端 这篇文章演示的环境是Windows11Windows的SSH服务端默认情况下是没有安装的,…

9.项目细节调整

文章目录 学习资料项目整体细节调整处理首页 学习资料 https://www.bilibili.com/video/BV13g411Y7GS/?p24&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 项目整体细节调整 处理首页 默认的首页 肯定不能给人看。文件在这个位置。 可以删除…

live555 BasicUsageEnvironment目录解读

文章目录 BasicUsageEnvironmentBasicHashTable.cppBasicTaskScheduler.cppBasicTaskScheduler0.cppBasicUsageEnvironment.cppBasicUsageEnvironment0.cppDelayQueue.cpp后续会进行更新 BasicUsageEnvironment ├── BasicHashTable.cpp ├── BasicTaskScheduler0.cpp ├─…

类加载器 - 双亲委派模型

文章目录 回顾一下类加载过程类加载器类加载器介绍类加载器加载规则类加载器总结自定义类加载器 双亲委派模型双亲委派模型介绍双亲委派模型的执行流程双亲委派模型的好处打破双亲委派模型方法 本文参考: 类加载器详解(重点) | JavaGuide(Ja…

多目标优化算法:基于非支配排序的海象优化算法(NSWOA)MATLAB

一、海象优化算法WOA 海象优化算法(Walrus Optimization Algorithm,WOA)由Trojovsk等人于2023年提出,该算法模拟海象的进食,迁移,逃跑和对抗捕食者的过程,WOA包含探索、迁移和开发三个阶段&…

正则表达式学习和高级用法

以下所有的验证都在 在线验证 1. 起始符 / 正则表达式的起始符2. 限定符 匹配前面的子表达式**1次或多次**。例如,zo 能匹配 "zo" 以及"zoo",但不能匹配 "z"。等价于 {1,}。 ? 匹配前面的子表达式**0次或1次**。例如…

二进制 Deploy Kubernetes v1.23.17 超级详细部署

文章目录 1. 预备条件2. 基础配置2.1 配置root远程登录2.2 配置主机名2.3 安装 ansible2.4 配置互信2.5 配置hosts文件2.6 关闭防firewalld火墙2.7 关闭 selinux2.8 关闭交换分区swap2.9 修改内核参数2.10 安装iptables2.11 开启ipvs2.12 配置limits参数2.13 配置 yum2.14 配置…

函数防抖和节流

函数防抖和节流 经典真题 防抖,节流是什么,如何实现 (字节) 什么是函数防抖和节流 JavaScript 中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合理,否则一般不会遇到跟性能相关…

DMA简单总结

文章目录 一、基础概念1.1 DMA---Direct Memory Access 直接存储器访问,目的减少CPU资源占用 二、典型DMA硬件模型2.1 基本硬件特性---通道数、源/目标类型,地址与累加方式,数据位宽,搬移长度,循环模式,中断…

在c#中使用CancellationToken取消任务

目录 🚀介绍: 🐤简单举例 🚀IsCancellationRequested 🚀ThrowIfCancellationRequested 🐤在控制器中使用 🚀通过异步方法的参数使用cancellationToken 🚀api结合ThrowIfCancel…

‘XXX’ is already defined @typescript-eslint/no-redeclare 警告 问题解决

上文ReactTypescript项目环境中搭建并使用redux环境 结束是 其实不算完全写完吧 还会留下一个警告 这个报错 好像是说 这两个值已经定义过了 可能很多人 会觉得小问题 但你会发现 无论你名字怎么改都会一直 带着你新的名字继续报错 我们可以多套一层 export namespace Const…