原文: https://docs.edgexfoundry.org/Ch-QuickStart.html#setup
有改编
安装环境: Ubuntu 18.04.1,理论上也适用于其他 Linux 平台,只是包管理软件的命令不一致,相关软件包的名字有可能不一致。
# apt install docker docker-compose
# wget -O docker-compose.yml https://github.com/edgexfoundry/developer-scripts/raw/master/compose-files/docker-compose-delhi-0.7.1.yml
# docker-compose pull (遇到 GFW 问题时,可以尝试多次运行)
# docker-compose up -d
# docker-compose ps

以上几步就把容器搭建并启动完毕了。
接下来连接设备
启动一个随机数发生器的演示设备
# vim docker-compose.yml 把 device-random 那一节的注释去掉
# docker-compose up -d device-random
设备服务会自动注册一个叫做 Random-Integer-Generator01 的设备,发送随机数到 EdgeX. 可以用下面的命令来验证读取发送的10个随机数:
# curl http://localhost:48080/api/v1/event/device/Random-Integer-Generator01/10
EdgeX 提供各种云服务和应用的导出,下面我们使用一个 HiveMQ 上公共的 MQTT 服务,检查 EdgeX 的读入并自动发布。

运行以下的命令来注册应用:

curl -X POST -d ‘{
“name”:”QuickStartExport”,
“addressable”:{
“name”:”HiveMQBroker”,
“protocol”:”tcp”,
“address”:”broker.hivemq.com”,
“port”:1883,
“publisher”:”EdgeXExportPublisher”,
“topic”:”EdgeXQuickStartGuide”
},
“format”:”JSON”,
“filter”:{
“deviceIdentifiers”:[“Random-Integer-Generator01”]
},
“enable”:true,
“destination”:”MQTT_TOPIC”
}’ http://localhost:48071/api/v1/registration

然后我们可以用任何的 MQTT 客户端来查看发送到 MQTT 服务器的数据,我喜欢用 Mosquitto 的命令行来查看。(如果还没有安装的话, 就运行 # apt install mosquitto 来安装)

# mosquitto_sub -h broker.hivemq.com -p 1883 -t EdgeXQuickStartGuide

下面我们尝试来控制设备,我们先看下设备提供了那些控制命令:

#curl -s http://localhost:48082/api/v1/device/name/Random-Integer-Generator01|jq
jq 是把 JSON 串格式化很好的工具,如果没有安装的话就用 # apt install jq 来安装。

# curl -s http://localhost:48082/api/v1/device/name/Random-Integer-Generator01|jq

我们现在知道了有 get 和 put 命令可以使用,现在根据命令的 UUID, 我们取出 Int8 对应的随机数:
# curl -s http://localhost:48082/api/v1/device/5c6f8bf19f8fc200017a36c2/command/5c6f8bf19f8fc200017a36bd|jq
默认随机数是 -128 到 127

# curl -s http://localhost:48082/api/v1/device/5c6f8bf19f8fc200017a36c2/command/5c6f8bf19f8fc200017a36bd|jq

我们现在修改这个随机数为 0 到 100 之间的数字:

curl -X PUT -d ‘[{“Min_Int8”: “0”, “Max_Int8”: “100”} ]’ http://localhost:48082/api/v1/device/5c6f8bf19f8fc200017a36c2/command/5c6f8bf19f8fc200017a36bd

多次运行以上的 GET 指令, 也就是:

# curl -s http://localhost:48082/api/v1/device/5c6f8bf19f8fc200017a36c2/command/5c6f8bf19f8fc200017a36bd|jq

你会看到返回的随机数都在 0到100之间。

好了, 基础的介绍就到这里了。
有时间, 我会继续翻译 EdgeX 上的文档,并且注解自己的想法。


# vim docker-compose.yml
# docker-compose up -d device-random

# docker-compose up -d
# docker-compose ps