EdgeX系列之三 -- 连接MQTT设备
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
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_PORT | 1883 |
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 -> Name | edgex-device-mqtt |
Device -> Name | 随便填, 例: test |
Device -> Description | 随便填, 例: test |
DeviceProfile | 刚才添加的Profile, 即: Test.Device.MQTT.Profile |
DeviceAddressable | mqtt |
DeviceAddressable -> ClientId | 不用改 |
DeviceAddressable -> Host | broker主机地址,也就是eclipse-mosquitto镜像运行的主机地址 |
DeviceAddressable -> Port | 1883 |
DeviceAddressable -> User | 参考Python脚本,两者一致 |
DeviceAddressable -> Password | 参考Python脚本,两者一致 |
DeviceAddressable -> Topic | 参考Python脚本,两者一致 |
DeviceAddressable -> Schema | tcp |
6. 测试
点击新添加的设备test,点击commands,点击send按钮发送消息测试。
如果返回Json数据说明部署成功!
参考资料:
更多推荐
所有评论(0)