1. 拉取EdgeX镜像
# 进入docker-compose.yml所在文件夹
$ cd developer-scripts/releases/geneva/compose-files
# 选择mongo数据库no-secty版本
$ cp docker-compose-geneva-mongo-no-secty.yml docker-compose.yml
# 在更改docker-compose.yml文件后拉取镜像(更改文件见下文)
$ docker-compose -f docker-compose-geneva-mongo-no-secty.yml pull
更改docker-compose.yml文件

添加ui管理界面,取消device-mqtt部分的注释:

  ui:
    image: edgexfoundry/docker-edgex-ui-go:1.2.1
    ports:
      - "0.0.0.0:4000:4000"
    container_name: edgex-ui-go
    hostname: edgex-ui-go
    networks:
      - edgex-network
...
...
  device-mqtt:
    image: edgexfoundry/docker-device-mqtt-go:1.1.1
    ports:
      - "192.168.0.92:49982:49982"
    container_name: edgex-device-mqtt
    hostname: edgex-device-mqtt
    networks:
      - edgex-network
    environment:
      <<: *common-variables
      Service_Host: edgex-device-mqtt
    depends_on:
      - data
      - command
2. 运行eclipse-mosquitto镜像

准备工作篇里已经拉取了eclipse-mosquitto镜像,现在运行它

docker run -d --name broker -p 1883:1883 eclipse-mosquitto
3. 运行MQTT脚本(python2)

在运行MQTT脚本之前先更改某些参数:
在这里插入图片描述

逐个参数讲解:

参数填写说明
BROKER_HOST_ADDR这里填写broker主机地址,也就是eclipse-mosquitto镜像运行的主机地址
BROKER_HOST_PORT1883
USERNAME随便填,但会用到
PWD随便填,但会用到
CMD_TOPIC随便填,但会用到

然后运行脚本

python2 mock-device-for-mqtt.py
4. 运行EdgeX的容器
docker-compose up -d
docker-compose ps

注意:此时的edgex-device-mqtt镜像状态为Exited,下面修复这个错误。
在这里插入图片描述

(1) 修改Host

打开浏览器,访问http://127.0.0.1:8500,这是一个EdgeX微服务管理界面
Key/Value -> edgex -> devices -> 1.0 -> edgex-device-mqtt -> Driver
修改IncomingHost字段和ReponseHost字段为broker主机地址,也就是eclipse-mosquitto镜像运行的主机地址
在这里插入图片描述

(2) 重启edgex-device-mqtt容器
docker restart edgex-device-mqtt
docker-compose ps

这时重新查看edgex-device-mqtt运行状态为up
在这里插入图片描述

5. 添加MQTT设备
(1) 访问页面

打开浏览器新页面,访问http://127.0.0.1:4000,这是一个设备管理平台页面
创建user随便创建,例如用户名:admin,密码:admin
在这里插入图片描述

然后登录
在这里插入图片描述

(2) 上传配置文件

DeviceProfile一栏点击+号上传配置文件mqtt.test.device.profile.yml
在这里插入图片描述

(3) 添加设备

DeviceService一栏选择edgex-device-mqtt,点击Devices添加设备
在这里插入图片描述

参数填写说明
DeviceService -> Nameedgex-device-mqtt
Device -> Name随便填, 例: test
Device -> Description随便填, 例: test
DeviceProfile刚才添加的Profile, 即: Test.Device.MQTT.Profile
DeviceAddressablemqtt
DeviceAddressable -> ClientId不用改
DeviceAddressable -> Hostbroker主机地址,也就是eclipse-mosquitto镜像运行的主机地址
DeviceAddressable -> Port1883
DeviceAddressable -> User参考Python脚本,两者一致
DeviceAddressable -> Password参考Python脚本,两者一致
DeviceAddressable -> Topic参考Python脚本,两者一致
DeviceAddressable -> Schematcp

在这里插入图片描述

6. 测试

点击新添加的设备test,点击commands,点击send按钮发送消息测试。
如果返回Json数据说明部署成功!
在这里插入图片描述

参考资料:

EdgeX Foundry使用系列

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐