EdgeX 树莓派实践部署
前言
初识EdgeX,想理清楚设备接入及微服务间关系,最好的办法还是亲自动手部署,把数据交互功能实现出来,才能更清晰的理解EdgeX框架的各种微服务。
实践过程中,有几个坑要提前说明一下:
- 因为我使用树莓派进行部署,树莓派是ARM架构,EdgeX部署时指定的Service镜像一定选用ARM架构,不然容器是无法正常运行的。
- EdgeX部署指定的镜像只找到arm64位,而我原来树莓派操作系统是32位,导致容器无法运行,需要重新安装64位linux操作系统,新版Raspbian有64位版本。
- EdgeX服务的compose配置文件中,服务访问IP地址有限制设置,导致仅本地可以访问,后面有详细描述。
安装docker-ce
$curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/raspbian/gpg | sudo apt-key add -
获取docker-ce安装包
https://download.docker.com/linux/
因为arm64位,debian目录下找
https://download.docker.com/linux/debian/dists/buster/pool/edge/arm64/
$sudo dpkg -i containerd.io_1.3.7-1_arm64.deb
$sudo dpkg -i docker-ce-cli_19.03.13_3-0_debian-buster_arm64.deb
$sudo dpkg -i docker-ce_19.03.13_3-0_debian-buster_arm64.deb
设置docker镜像:
$sudo cat /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
$sudo systemctl daemon-reload
$sudo systemctl restart docker
安装docker-compose
$sudo apt-get install libffi-dev
$sudo apt-get install openssl
$pip3 install --default-timeout=100000 docker-compose
docker-compose安装过程中出现错误尝试upgrade参数解决
$pip3 install --upgrade --default-timeout=100000 docker-compose -i http://pypi.douban.com/simple
EdgeX跑起来
https://docs.edgexfoundry.org/1.2/getting-started/quick-start/

github获取compose file
https://github.com/edgexfoundry/developer-scripts/tree/master/releases/geneva/compose-files
可选compose文件,跟据需求参考修改

获取arm64 docker-compose.yml
$curl https://raw.githubusercontent.com/edgexfoundry/developer-scripts/master/releases/geneva/compose-files/docker-compose-geneva-redis-no-secty-arm64.yml -o docker-compose.yml

获取服务列表
$docker-compose config --services
consul
redis
notifications
metadata
data
command
scheduler
system
app-service-rules
rulesengine
device-virtual
device-rest
device-random
device-mqtt
ui
启动EdgeX微服务
$docker-compose up -d

启动device-random服务
$sudo docker-compose up -d device-random
获取device-random数据
$curl http://localhost:48080/api/v1/event/device/Random-Integer-Generator01/1
[{"id":"de7af9df-38ed-4900-b387-e1629d4f1472","device":"Random-Integer-Generator01","created":1613828304134,"origin":1613828304126888670,"readings":[{"id":"2f88dea3-15a6-44d6-980a-a1dfab38a113","created":1613828304134,"origin":1613828304126291278,"device":"Random-Integer-Generator01","name":"RandomValue_Int16","value":"-21446","valueType":"Int16"}]}]
查看可用命令
$curl http://localhost:48082/api/v1/device/name/Random-Integer-Generator01
返回如下结果
{
"id": "edf4b3b2-9015-4ae6-afdb-f8b5e462d317",
"name": "Random-Integer-Generator01",
"adminState": "UNLOCKED",
"operatingState": "ENABLED",
"labels": ["device-random-example"],
"commands": [{
"created": 1613828283875,
"modified": 1613828283875,
"id": "025b1242-c66c-4d96-b470-70a93308eede",
"name": "GenerateRandomValue_Int32",
"get": {
"path": "/api/v1/device/{deviceId}/GenerateRandomValue_Int32",
"responses": [{
"code": "200",
"expectedValues": ["RandomValue_Int32"]
}, {
"code": "503",
"description": "service unavailable"
}],
"url": "http://edgex-core-command:48082/api/v1/device/edf4b3b2-9015-4ae6-afdb-f8b5e462d317/command/025b1242-c66c-4d96-b470-70a93308eede"
},
"put": {
"path": "/api/v1/device/{deviceId}/GenerateRandomValue_Int32",
"responses": [{
"code": "200"
}, {
"code": "503",
"description": "service unavailable"
}],
"url": "http://edgex-core-command:48082/api/v1/device/edf4b3b2-9015-4ae6-afdb-f8b5e462d317/command/025b1242-c66c-4d96-b470-70a93308eede",
"parameterNames": ["Min_Int32", "Max_Int32"]
}
}, {
"created": 1613828283874,
"modified": 1613828283874,
"id": "6943feba-f7eb-46f2-b120-d3c9890be1a1",
"name": "GenerateRandomValue_Int8",
"get": {
"path": "/api/v1/device/{deviceId}/GenerateRandomValue_Int8",
"responses": [{
"code": "200",
"expectedValues": ["RandomValue_Int8"]
}, {
"code": "503",
"description": "service unavailable"
}],
"url": "http://edgex-core-command:48082/api/v1/device/edf4b3b2-9015-4ae6-afdb-f8b5e462d317/command/6943feba-f7eb-46f2-b120-d3c9890be1a1"
},
"put": {
"path": "/api/v1/device/{deviceId}/GenerateRandomValue_Int8",
"respon

最低0.47元/天 解锁文章
584





