Edge X Foundry框架-初步配置

EdgeX Foundry 初级配置指南
本文详细介绍了在Windows 10环境下配置EdgeX Foundry物联网平台的过程,包括安装必要的软件、配置数据库及开发环境,以及部署和运行各个微服务。

前段时间我发布了Edge X Foundry的介绍,今天我就写一下如何初步配置这个框架

我们以Windows10 1803操作系统版本进行演示所以要的组件如下:

1.Java SDK 1.8版本,因为Edge X Foundry就是在这个版本上开发的,是兼容最好的,如何配置不再赘述

2.MongoDB,这是与框架搭配最好的数据库,如何配置可见我的另一篇文档

3.GitHub,版本管理工具,因为我们的框架要从GitHub上下载下来

4.开发工具IDE:Eclipse,这个就不用我介绍了,嘿嘿

5.Maven,这是一个项目管理工具,配置简单,我们各种搭建成框架的微服务就是在依托在Maven库里运行,推荐一个文章,介绍amaven与Eclipse的配置


首先,我们要初始化我们的Mongo 数据库

1.将数据库配置脚本从GitHub clone到本地

我们找到"init_shell.bat",右键编辑,用mongo.exe的正确路径覆盖掉默认的路径,别的不要动,然后运行

如果出现这样的情况然后退出掉,就说明我们构造好了数据库,接下来我们运行数据库,开启指令我们用官方提供的"startdb.bat"文件,但是注意呀,我们也要编辑一下文件内的"mongo.exe"路径和指向数据库所存放文件的路径(默认c:\users\Public\mongodb\db,随你喜欢自己填就可以),双击执行。

数据库配置好之后我们要将项目导入到IDE中,我们先把core-domain这个微服务clone到本地

在eclipse中使用导入->Maven下的Existing Maven Projects->填好项目路径

在导入之前我想说的是,我们在导入后要安装配置文件,像maven的依赖,这就需要连接maven仓库,我们要把默认的仓库路径改为国内阿里云才不会下载太慢浪费时间

找到maven所在位置的setting.xml文件,修改如下部分代码:

  <mirrors> 
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror> 
  </mirrors>

准备好这些,就可以导入微服务项目了,导入成功后,右击项目名->Run As->Maven Install

只要出现这个提示,就是打包到Maven成功了,证明这个项目是没有问题的,一般情况下我们可以运行了。

右击项目->Run As->Java Application,选择使用EdgeXSupportLoggingApplication运行

这个项目是不可以运行的,因为没有程序入口,这只是作为一个配套的maven服务存在,而能够运行的项目我会在后面做介绍

其实,我跟愿意使用PowerShell进行项目的启动。

我们在项目文件内启动PowerShell,执行mvn clean install


这样也可以将项目部署到maven里,而且能够把项目打包成一个jar可执行文件


Build 成功,接下来我们找到项目文件的target文件夹,运行PowerShell


用java -jar xxxxxx.jar就可以运行打包的jar项目了。因为core-domain不是可执行的项目所以无法启动

接下来我们依次获取并使用Maven install命令启动以下所有框架微服务项目:

core-domain (已部署,Edge X Foundry核心微服务域对象库)
core-test(Edge X Foundry微服务测试对象库)
core-exception(EdgeX Foundry核心微服务异常对象库)
support-domain(Edge X Foundry库 支持微服务域对象)
support-logging-client(用于调用Support Logging微服务的客户端库)
core-metadata-client(用于调用核心元数据微服务的客户端库)
core-data-client(用于调用Core Data微服务的客户端库)
support-notifications-client(用于调用支持通知和警报微服务的客户端库)
core-command-client(用于调用Core Command微服务的客户端库)
support-logging

(为其他微服务提供REST API的日志记录服务微服务,以添加/查询/删除日志记录请求。支持持久性的两个选项 - file或mongodb - 可通过属性文件或远程服务进行配置)
support-notifications

(警报和通知服务 - 当需要通过节点上的另一个微服务通知人或其他系统发现节点上发现的某些内容时,警报和通知将提供设施来传递该信息。其他服务可能需要广播的警报和通知的示例包括在特定参数(通常由规则引擎服务检测到)或系统/服务故障(通常由系统管理服务检测到)之外检测到的传感器数据)
core-metadata

(元数据微服务 - 包括设备/传感器元数据数据库和API以将数据库公开给其他服务。特别是,设备配置服务将通过该服务存储和管理设备元数据。该服务还可以保存和管理网关上其他服务使用的其他配置元数据 - 例如清理计划,硬件配置(Wi-Fi连接信息,MQTT队列等)。非设备元数据可能需要保存在另一个数据库中和/或由另一个服务管理 - 取决于实现。)

core-data

(核心数据服务包括设备/传感器收集的数据数据库和API以将数据库公开给其他服务以及北向集成。数据库安全时,直接访问数据库仅限于核心数据服务API。还提供了REST API来创建/注册新设备)
core-command

(Command Service(命令服务) - 通过管理设备服务触发其他服务的触发器,以触发设备/传感器的操作 该服务提供了一个API来获取可以为所有设备或单个设备发布的命令列表。命令分为每个设备的组:Gets和Puts。获取命令发送到设备/传感器获取设备上特定属性的当前值(如恒温器传感器提供的当前温度,或类似灯的开/关状态)。Put命令发布到设备/传感器,用于更改设备或其某个属性的当前状态或状态(例如设置电机的转速或设置调光器的亮度))
device-sdk
device-virtual

(虚拟设备服务2-虚拟设备服务2可以模拟不同类型的设备,以生成事件和读取到核心数据微服务。此外,用户可以通过命令和控制微服务发送命令并获得响应。在执行功能测试或性能测试时没有任何实际设备,这很有用。此版本的虚拟设备服务是基于设备服务SDK实现的。)

如果有启动失败的情况:

请检查您是否已将Eclipse环境配置为指向开发计算机上的可用JDK
请检查您是否先建立/安装了任何相关库或微服务项目
检查你的环境中是否安装了Maven插件


然后,我们开始启动可执行的微服务项目,可以在IDE里运行,也可以使用jar包的形式

1.开启core-metadata,并且出现"This is the Core metadata Micro Service."

2.开启core-data,并且出现"This is the Core Data Micro Service."

3.开启core-command,并且出现"This is the Core Command Micro Service."

4.编辑device-virtual的application.properties,并更改service.name和service.host名称以匹配你的电脑名称。在下面的例子中,PC的名称是Test-PC
#default device service settings
  service.name=Test-PC
  service.host=localhost

然后启动,注意,device-virtual这个项目打包成jar文件会出现空指针的错误,但是在IDE中运行就不会报错,所以建议大家这个块微服务直接在IDE中运行就好了。

6.通过打开浏览器并转到localhost:48080/api/v1/event/count,检查是否正在将事件/读取数据发送到core-data,并且点数会随着刷新而不断上升~

做到这里就说明我们的框架成功的搭建起来了,完结撒花~~~~


如果各位朋友有什么意见,建议,指正,欢迎留言,一起交流

更多有关Edge X Foundry的内容请点击https://blog.youkuaiyun.com/winfanchen/article/category/7702798


<think>好的,我现在需要帮助用户找到关于EdgeX Foundry连接时序数据库的解决方案或配置方法。用户明确要求教程、配置指南和示例代码。首先,我需要回忆一下EdgeX Foundry的基本架构,特别是数据存储和导出部分。 根据之前的引用[^1],EdgeX Foundry是一个边缘计算平台,负责管理物联网设备的数据收集和处理。用户提到时序数据库,这通常用于存储时间序列数据,比如传感器读数。EdgeX默认使用Redis作为数据存储,但用户可能需要将数据导出到外部的时序数据库,比如InfluxDB或TimescaleDB。 接下来,我应该考虑EdgeX的组件结构。EdgeX分为设备服务、核心服务、支持服务和应用服务。数据导出通常通过应用服务层,比如使用App Service Configurable进行配置。用户可能需要配置一个导出到时序数据库的流水线。 需要检查EdgeX的官方文档是否有相关指南。例如,EdgeX的App Service Configurable支持多种目标,包括MQTT、REST等,但直接连接时序数据库可能需要自定义配置或使用现有的扩展。比如,InfluxDB有HTTP API,可以通过HTTP导出器发送数据。 另外,可能需要使用EdgeX的规则引擎,比如Kuiper(引用[^3]),进行数据预处理后再存储到时序数据库。Kuiper可以处理数据流,并将结果推送到不同的存储系统中。 步骤可能包括:1. 配置EdgeX的应用服务,将数据通过HTTP发送到时序数据库的API;2. 使用Kuiper进行数据过滤或转换;3. 编写相应的配置文件或使用Docker环境变量。 还需要考虑时序数据库的具体配置,例如InfluxDB需要创建数据库、用户权限,以及接收数据的端点。示例配置可能涉及修改App Service的配置文件,设置目标URL、认证信息等。 最后,示例代码部分可能需要展示如何通过App Service的配置YAML文件设置导出规则,或者使用Kuiper的SQL语句定义数据流处理规则,并输出到InfluxDB。同时,确保用户了解如何验证数据是否成功写入时序数据库,比如使用InfluxDB的查询语句检查数据是否存在。</think>### EdgeX Foundry 连接时序数据库解决方案 EdgeX Foundry 默认使用 Redis 作为本地存储,但支持通过应用服务(App Service)将数据导出到外部时序数据库(如 InfluxDB、TimescaleDB)。以下是具体配置步骤与示例: --- #### **一、配置时序数据库(以 InfluxDB 为例)** 1. **安装 InfluxDB** ```bash docker run -d -p 8086:8086 --name influxdb influxdb:2.7 ``` 2. **初始化 InfluxDB** - 访问 `http://<服务器IP>:8086` 创建用户、密码和存储桶(Bucket)。 - 生成 API Token 用于 EdgeX 认证。 --- #### **二、配置 EdgeX App Service** 1. **启用 HTTP 导出功能** 修改 `app-service-configurable` 的配置文件(`http-export.yml`): ```yaml Writable: LogLevel: INFO Pipeline: Functions: HTTPExport: Parameters: url: "http://<InfluxDB_IP>:8086/api/v2/write?bucket=<Bucket名称>&precision=ns" method: "POST" mimeType: "text/plain" persistOnError: "false" PerTopicPipelines: metrics: Topics: "edgex/events/core" Functions: [ "HTTPExport" ] ``` 2. **添加认证头部** 在配置中补充安全参数(如 API Token): ```yaml SecretStore: Secrets: influxdb: Path: "influxdb" SecretData: token: "<生成的API_Token>" ``` 3. **启动服务** ```bash docker run -d --name edgex-app-http-export \ -v $(pwd)/http-export.yml:/res/http-export.yml \ edgexfoundry/app-service-configurable:3.0 \ --cp=consul.http://<Consul_IP>:8500 \ --registry ``` --- #### **三、验证数据写入** 1. **查询 InfluxDB 数据** ```bash curl --get http://<InfluxDB_IP>:8086/query \ --header "Authorization: Token <API_Token>" \ --data-urlencode "q=SELECT * FROM <测量名称>" ``` --- #### **四、进阶:通过 Kuiper 进行流处理** 若需数据预处理,可使用 EdgeX Kuiper(引用[^3]): ```sql -- 创建流 CREATE STREAM temperature_stream () WITH (FORMAT="JSON", TYPE="edgex") -- 过滤高温数据并导出到 InfluxDB CREATE RULE high_temp_alert WITH (SINK="influx_sink", ACTION={ "url": "http://influxdb:8086/api/v2/write", "bucket": "alerts", "token": "<API_Token>" }) SELECT sensor_id, AVG(temperature) as avg_temp FROM temperature_stream WHERE temperature > 30 GROUP BY TUMBLINGWINDOW(ss, 10) ``` --- ###
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值