> 文档中心 > Edgexfoundry自动化安装制作与操作详解中文手册

Edgexfoundry自动化安装制作与操作详解中文手册

Edgexfoundry自动化安装与操作详解

目录

1. 概述

2. 环境准备

2.1. 操作系统与要求

2.2. 下载安装包

3. 安装edgex

3.1. 解压安装包

3.2. 修改配置文件

3.3. 执行安装

4. 验证安装

4.1. 查看docker安装情况

4.2. 查看docker-compose安装情况

4.3. 查看镜像

5. 启停edgex操作

5.1. 启动edgex

5.2. 验证Edgex启动情况

5.3. 停止edgex方法

5.4. 启停单个服务

5.4.1. 停止单个服务

5.4.2. 启动单个服务

5.4.3. 重启单个服务

6. edgex功能验证

6.1. 登录edgex-ui

6.2. 操作设备

6.2.1. Device-smiple设备服务

6.2.2. device-virtual设备服务

6.2.3. modbus设备服务

6.2.4. MQTT设备服务

6.3. 导出功能

6.3.1. 导出到MQTT

6.3.2. 导出为restful

6.4. 规则引擎

6.4.1. 启动服务

6.4.2. 创建引擎规则

6.4.3. 操作设备触发规则

6.4.4. 可能的问题

6.5. 通知功能

6.5.1. 邮件通知功能

6.5.2. Restful通知功能

6.6. event保存成图片功能(专业版)

6.6.1. 启动图片保存服务

6.6.2. 查看生成的图片

6.7. 导出到Kafka功能(专业版)

6.7.1. 启动kafka导出服务

6.7.2. 查看导出的kafka消息

7. 卸载edgex

8. 碰到的问题与关注点

8.1. 当主机IP变化时无法使有kafka

8.2. 无法操作设备

8.3. 通知邮件无法发出

8.4. 配置参数从consul中读

8.5. 关于几个hostname

8.6. 设备数据在内存

8.7. 关于无法发消息到kafka

8.8. Edgex模块启动顺序

图片太多,无法上传,原版含图片的,请联系古桥教育 QQ:15599633

古桥教育_古桥教育腾讯课堂官网 (qq.com)

  1. 概述

本文通过安装包的方式,快速安装edgexfoundry,体验edgex功能。

版本:基于edgexfoundry fuji 1.1.0

与官方版本对比:

  1. 功能增加

增加了kafka导出插件(通过app-functions-sdk),将接收到的event导出到kafka

增加了将图片event,保存到图片文件

Rule Engine,增加了通知功能

  1. Edgex-UI优化项

DeviceService:增加了设备操作支持图像显示

Rule Engine增加了通知功能,当规则触发时,同时可以发通知

Rule Engine 解决了创建规则不同profile,command重名混乱问题

export 模块mqtt导出显示大数量会中断问题

export 模块mqtt导出显示echart图形不显示问题,并增加了平均数显示

export 增加注册导出端时,Filters (optional)无法选择问题

  1. 环境准备
    1. 操作系统与要求
  1. Ubuntu OS主机一台,亦可是虚拟机(内存建议4G以上),ubuntu安装可参考《vware上安装ubuntu虚拟机.docx》。本次演示安装在一台虚拟机上

  1. 安装时会提醒安装docker,如果需要安装,则主机需连互联网且下面所有操作需要root用户身份,如果机子已安装docker则无需互联网
  1. 建议以root身份执行所有安装与启动操作,因为在清除缓存功能需要用到操作/var/lib/docker目录,否则清除缓存功能无法
  1. 建议内存4G以上

    1. 下载安装包

下载安装文件包:

edgex-fuji_standard_1.1.0.tar.gz  (标准版)

edgex-fuji_expert_1.1.0.tar.gz(专业版,含kafka与图片保存功能)

里面含有安装sh文件、配置文件与镜像,解压后目录类似如下:

  1. 安装edgex
    1. 解压安装包

tar zxvf edgex-fuji_standard_1.1.0.tar.gz (标准版)

tar zxvf edgex-fuji_expert_1.1.0.tar.gz (专业版)

并进入到edgex-fuji目录增加sh执行权限:

cd ./edgex-fuji

chmod -R +x ./bin

    1. 修改配置文件

打开解压后目录下的host文件,将其中的IP改为你的真实的物理机IP(前后不要用空格)

    1. 执行安装

1)进入安装目录,如下:

cd edgex-fuji/bin

2)修改可执行权限:

chmod -R +x *

3)执行安装脚本:

./ install-edgex.sh

如下图,输入“Y”进行安装,输入“n”则退出安装

如下图,输入“Y”会重新安装docker与docker-compose,输入“n”则不安装docker与docker-compose(此时确保本机已经有docker与docker-compose)

如下图,在安装docker与docker-compose

如下图,自动装载镜像:

  1. 验证安装
    1. 查看docker安装情况

输入命令:docker version

    1. 查看docker-compose安装情况

输入命令:docker-compose version

    1. 查看镜像

执行:docker images

  1. 启停edgex操作
    1. 启动edgex

进入安装目录,如下:

cd edgex-fuji/bin

执行启动脚本

提供两个版本的启动,可以任选一种

  1. Mongo版本:

./start-edgex.sh mongo

若清除consul缓存与数据库启动,则用:

./start-edgex.sh mongo y  (需要root用户身份)

  1. Redis 版本:

./start-edgex.sh redis

若清除consul缓存与数据库启动,则用:

./start-edgex.sh redis y   (需要root用户身份)

以Redis版启动为例,启动界面如下图: 

    1. 验证Edgex启动情况

在客户机浏览器输入如下地址:http://192.168.75.141:8500

(192.168.75.141改为你的真实IP)

上图Node health列全为绿色,表示edgex服务启动成功

    1. 停止edgex方法

进入安装目录,如下:

edgex-fuji/bin

执行启动脚本,提供两个版本的启动,根据之前启动的版本选择

  1. Mongo版本:

./stop-edgex.sh mongo

  1. Redis  版本:

./stop-edgex.sh redis

    1. 启停单个服务

版本指:mongo 或 redis

服务名:见docker-compose-mongo.yml 或 docker-compose-redis.yml

服务名

服务名

配置

consul

config-seed

数据库

redis

mongo

核心

metadata

data

command

支持

logging

notifications

scheduler

导出

export-client

export-distro

规则引擎

rulesengine

设备

device-simple

device-mqtt

device-modbus

device-virtual

App-function

app-service-rules

app-service-kafkaexport

app-service-imagesave

安全

vault

vault-worker

kong-db

kong-migrations

kong

edgex-proxy

内置mqtt

edgex-mosquitto

      1. 停止单个服务

stop-one-sevice.sh 版本 服务名

      1. 启动单个服务

start-one-sevice.sh 版本 服务名

      1. 重启单个服务

restart-one-sevice.sh 版本 服务名

  1. edgex功能验证
    1. 登录edgex-ui

在客户机浏览输入:http://192.168.75.141:4000 

(192.168.75.141改为你的真实IP)

输入:admin/admin 用户名与密登录

进入主界面如下

设置gateway

    1. 操作设备
      1. Device-smiple设备服务

此设备演示灯光开关功能,根据Swicth的值(false,true两种)

当设备属性Switch值为false时,属性Image为黑色关灯图片,反之则为黄色亮灯图片

启动设备服务:

./start-one-sevice.sh redis device-simple

如下图依次点击

当点send按钮时,会根据Method列get 或 set方法操作device-simple设备,展示或设置设备的值

可能的问题

在获取属性值时,返回failed或显示不了图版时,说明设备工作异常,此时需重启此设备服务:

./stop-one-sevice.sh redis device-simple

./start-one-sevice.sh redis device-simple

或者

./restart-one-sevice.sh redis device-simple

操作后,刷新edgex-ui界面,重新偿试

      1. device-virtual设备服务

启动设备服务:

./start-one-sevice.sh redis device-virtual

此设备服务共有三个设备,即温湿度、马达转速功能、boolean类数据操作

说明:

当EnableRandomization_Temperature 值设为true时,设置的Temperature属性值不起作用,由设备随机产生一个值;否则有效,始终返回指定的属性值

可能的问题

在不能正常获取属性值时,返回failed时,说明设备工作异常,此时需重启此设备服务:

先删除,后创建

./stop-one-sevice.sh redis device-virtual

./start-one-sevice.sh redis device-virtual

或者

./restart-one-sevice.sh redis device-virtual

操作后,刷新edgex-ui界面,重新偿试

      1. modbus设备服务

此设备服务演示操作modbus设备,即读写modbus设备的属性值,本例使用了Modbus Slave模似器模拟一台modbus设备,modbus两种通讯连接方式

操作设备

启动设备

进入edgex-fuji/bin目录,如下所示,启动设备:

./start-one-service.sh redis device-modbus

Tcp通讯

修改设备地址,改为device-modbus设备服务能访问到的模拟设备:

操作设备

将operationMode的值设为2

查看模拟器的值已改了2

获取值,界面上get时,值也是2,相吻合

RTU串口通讯

查看串口参数

 

查看虚拟机所在的串口情况(若不虚拟机,用的是物理主机,则不需要下面操作):

命令:dmesg | grep tty 

如果操作失败,可能下是的设备服务没有启动成功,需重启modbus设备服务

可能的问题

在获取属性值时,返回failed或显示不了图版时,说明设备工作异常,此时需重启此设备服务:

./stop-one-sevice.sh redis device-modbus

./start-one-sevice.sh redis device- modbus

或者

./restart-one-sevice.sh redis device- modbus

      1. MQTT设备服务

此演示通过mock模拟mqtt设备,接受device-mqtt的指令收发数据,并设备可主动向device-mqtt设备发送数据。

启动设备

进入edgex-fuji/bin目录,如下所示,启动设备:

./start-one-service.sh redis device-mqtt

由于机子性能问题,演示此例时,建议停止其实设备服务,避免消息拥堵。

操作设备

后台容器显示:

Service向设备发命令:

设备响消数据:

可能的问题

在不能正常获取属性值时,返回failed时,说明设备工作异常,此时需重启此设备服务:

先删除,后创建

./stop-one-sevice.sh redis device-mqtt

./start-one-sevice.sh redis device-mqtt

或者

./restart-one-sevice.sh redis device-mqtt

    1. 导出功能
      1. 导出到MQTT

启动mqtt broker

./start-one-sevice.sh mongo edgex-mosquitto

注册客户端

下图画圈的对方必须如图所示

如下图关闭返回:

会看到不断有数据导出到配置的mqtt broker上了

拖到下方,并能看到设备属性动态图像

可以使用portainer进入容器上去查看:

启动portainer:

./start-one-sevice.sh redis portainer

登录进去:http://192.168.75.141:9000

创建一个不少于8个字串的密码

输入命令:

mosquitto_sub -h localhost -p 1883 -t test -u "mqttuser" -P "123456"

如下图:

注意事项:

不演示时,需要退出用户登录,或直接关闭浏览器,否则后台一直在导出该浏览器,可以观看edgex-ui后台

      1. 导出为restful

注册restful导出端

本次示例导出的目的服务器IP

查看导出情况

参考导出功能中的“导出为restful”章节,通过规则引擎触发一条通知,查看通知信息是否通知到目的地址:http://192.168.0.104:9000/recviedata

下面可以看到edgex发出的请求,说明数据已成功导出来了

可能的问题:

确保monitor运行的主机通讯端口是否被防火墙关闭了

可采用nc –zv hostname/ip port方式测试联通性

    1. 规则引擎

本次演示采用了app-service-configurable方式接收core-data的event,并push到5566端,规则引擎从此端口接收event(另外一种方式是从distro 服务push到5567端口,这个需要在consul中配置,修改规则引擎的event接收端口)

      1. 启动服务

启动规则引擎与app-service-configurable服务:

./start-one-sevice.sh redis rulesengine

如下图,创建两个服务,一个是app-service-configurable,另一个是rulesengine(规则引擎)

      1. 创建引擎规则

登录edgex-ui创建规则

如下图,创建一条规则为:当温度大于40度时,将其设回到30度

创建成功如下图:

      1. 操作设备触发规则

将设备温度设置高于40度

设置成功如下图:

然后发送get指令,可以看到设备的温度已置为30了

下图是规则引擎后台打印结果:

      1. 可能的问题

如下原因可能导致规则无法触电发:

  1. app-service-configurable过滤的条件限制,导致没有接收event
  2. app-service-configurable没有启动
  3. zeromq端口没有配对
  4. 创建规则时,设备属性没有选对

    1. 通知功能
      1. 邮件通知功能

注册通知接收方

通知注册成功,如下:

触发通知

现用规则引擎来演示触发一条通知

规则如下,当设备温度大于30度时,发送通知,设置为25度

现在我们去操作设备,将其温度设置为大于30度,如下图设为31度

Get设备属性,如下:

很快就收到了QQ 邮件提醒了:

通知后台也有打印日志出来,没有错误

      1. Restful通知功能

注册restful导出端

使用postman进行注册restful通知端

可在edgex-ui上可以查看到注册成功:

查看通知

同上面邮件通知类型,通过规则引擎触发一条通知,使用eclipse中的monitor工具,配置如下:

下面可以看到edgex发出的通知restful,成功接收到了

    1. event保存成图片功能(专业版)

此功能演示device-simple设备服务定时发现的图片event,将其按时间戳保存起来。

      1. 启动图片保存服务

./start-one-sevice.sh redis app-service-imagesave

如下图:

      1. 查看生成的图片

进入到如下目录,查看导出的图片:

cd /var/lib/docker/volumes/composefiles_images/_data

提醒:不用时,记得关于此服务,因为device-simple运行时,它会持续保存图片

关于服务方法:

./stop-one-sevice.sh redis app-service-imagesave

    1. 导出到Kafka功能(专业版)

该功能演示,将edgex的event导出到kafak broker,方便数据进一步业务处理

      1. 启动kafka导出服务

./start-one-sevice.sh redis app-service-kafkaexport

      1. 查看导出的kafka消息

通过portainer工具,进入kafka broker容器查看消息导出情况,如下图:

(若portainer没有启动,可通过./start-one-sevice.sh redis portainer命令拉起来)

在里面执行如下命令查看从edgex导出来的kafka消息:

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic edgexKafkaTopic

从下图可看出导出到kafka的event消息:

停止kafka服务方法:

./stop-one-sevice.sh redis app-service-kafkaexport

  1. 卸载edgex

卸载会退回到edgex安装之前的状态

若需卸载docker 与 docker-compose,需要用root用户操作

进入edgex-fuji/bin目录,执行如下命令:

./uninstall-edgex.sh

  1. 碰到的问题与关注点
    1. 当主机IP变化时无法使有kafka

解决办法:

修改kafkahost文件为正确的IP

执行./resetip.sh

    1. 无法操作设备

设备get /set为failed

偿试如下办法:

  1. 重启设备服务,通过restop-one-service.sh脚本
  2. 浏览F12查看newwork网络通讯情况,如请求与响应消息
  3. 主机名配置错误,查看配置文件中的几处hostname是否一致

    1. 通知邮件无法发
  1. 邮箱发送帐号配置错误
  2. 没有注册通知客户端,或注册参数写错,如label、通知级别等
    1. 配置参数从consul中读

牢记,修改configuration.yml无效时,应考虑去consul UI 看配置

    1. 关于几个hostname

    1. 设备数据在内存
  1. 手工修工数据库不能生效,需要重启服务meta 与 data模块
  2. 用过postman修改,可立即生效,post 数据格式可参考官方提供的edgex-go\api\raml查看,或edgex-ui浏览器中F12查看
    1. 关于无法发消息到kafka

需要在app-service-kafkaexport服务中增加hosts域名解析

注意:需在容器创建前就需要注入域名解析,不可启动后进入容器修改/etc/hosts

    1. Edgex模块启动顺序

确保configseed启动完后,其它Core support export模块启动无后后顺序

================================全文结束=======================================