摘要
EdgeX Foundry试运转 EdgeX Foundry试运转介绍EdgeX Foundry是一个由Linux慈善基金会进行的,且生产商保持中立的开源系统IoT边缘计算新项目。它能够 收集来源于好几个源的数据信息,并将这种数据信息分享到一个中间系统软件。EdgeX Foundry适用多种多样IoT机器设备应用的协议书,如BACNET、OPC-UA、MQTT和REST。EdgeX Foundr…
正文
EdgeX Foundry试运转
EdgeX Foundry试运转
介绍
EdgeX Foundry是一个由Linux慈善基金会进行的,且生产商保持中立的开源系统IoT边缘计算新项目。它能够 收集来源于好几个源的数据信息,并将这种数据信息分享到一个中间系统软件。EdgeX Foundry适用多种多样IoT机器设备应用的协议书,如BACNET、OPC-UA、MQTT和REST。EdgeX Foundry由一系列运作在器皿中的微服务架构组成,微服务架构中间应用REST API插口开展互动。
能够 将EdgeX 做为一个顶层服务项目和机器设备中间的媒体,比如,某一机器设备应用了BACNET协议书,但顶层服务项目并不兼容该协议书,这时能够 应用EdgeX 将顶层服务项目的REST API变换为机器设备期待的协议书和文件格式。
能够 应用EdgeX 给予的标准作用,根据键入建立姿势开启逻辑性,如当值A超过X式,实行一个pre-set
指令。
一般会把EdgeX Foundry 安裝在离感应器或造成数据信息较近的部位,如一个边沿网关ip运用周边。因而很有可能会安裝上百个EdgeX,每一个EdgeX承担分别数据的采集、变换和分享工作中。
更详细的详细介绍,参照官方网文本文档
安裝
版本号公布
能够 在wiki上查询EdgeX的公布状况,当今最新版名叫Hanio,下一个版本号名叫Ireland。此次应用的版本号为Hanio。
最好是应用早已公布的版本号,官方网的master支系很有可能并不大平稳
布署
官方网给予了应用docker-compose的安裝方法。官方网git仓库给予了全部版本号的docker-compose文档,应用支系名区别:
EdgeX 给予了2个数据分析工具:portainer
和edgex-ui-go
。portainer
等同于一个简易的器皿管理系统,edgex-ui-go
等同于一个机器设备管理系统。
免费下载并运作docker-compose.yml就可以,結果以下,最终2个便是数据分析工具portainer
和edgex-ui-go
查询机器设备
实行以下指令查询现有的机器设备:
# curl http://127.0.0.1:48082/api/v1/device
大量参照EdgeX的官方网API文本文档。
建立机器设备
下边建立二种机器设备:
感应器群集
:转化成溫度和环境湿度数据信息一般机器设备
:应用REST插口,适用指令
事后应用二种方法建立机器设备:
- 手动式方法:应用独立的REST指令建立感应器群集
- 脚本制作方法:应用Python脚本制作建立一般机器设备
EdgeX应用机器设备环境变量做为加上新机器设备的简易方式。机器设备环境变量是一个叙述机器设备、数据类型及其适用的指令的模版,它是一个文本文档,以YAML的文件格式上传入EdgeX,并在事后建立新机器设备时引入。一种机器设备种类只有有一个环境变量。
感应器群集
应用EdgeX Foundry REST APIs手动式建立该机器设备,还可以应用脚本制作方法建立。下边应用Postman推送REST 要求,流程以下:
- 建立值叙述信息内容
- 提交机器设备环境变量
- 建立机器设备
每一步实际操作都是会用一个同样的服务器IP地址,及其一个端口。不一样的端口意味着不一样的微服务架构,比如:
- 48080:edgex-core-data
- 48081:edgex-core-metadata
- 48082:edgex-core-command
建立值叙述信息内容
值叙述信息内容会告知EdgeX分享的数据类型及其数据信息的标识。本例中,值叙述信息内容各自得出了溫度和环境湿度的值。
最先建立与环境湿度相关的值叙述,能够 见到最终回到了一个id
# curl -X POST http://127.0.0.1:48080/api/v1/valuedescriptor -d '{
"name": "humidity",
"description": "Ambient humidity in percent",
"min": "0",
"max": "100",
"type": "Int64",
"uomLabel": "humidity",
"defaultValue": "0",
"formatting": "%s",
"labels": [
"environment",
"humidity"
]
}'
83d9aa2c-d12e-4531-99e6-213c3c84a895
建立与溫度相关的值叙述:
# curl -X POST http://127.0.0.1:48080/api/v1/valuedescriptor -d '{
"name": "temperature",
"description": "Ambient temperature in Celsius",
"min": "-50",
"max": "100",
"type": "Int64",
"uomLabel": "temperature",
"defaultValue": "0",
"formatting": "%s",
"labels": [
"environment",
"temperature"
]
}'
0a8f5637-db7d-4108-8f48-03a116ad8726
能够 应用curl http://127.0.0.1:48080/api/v1/valuedescriptor|jq
查询已建立的值叙述。
提交机器设备环境变量
免费下载机器设备环境变量并提交,能够 见到也回到了一个Id’
# curl --location --request POST 'http://127.0.0.1:48081/api/v1/deviceprofile/uploadfile' --form 'file=@"/home/sensorClusterDeviceProfile.yaml"'
01373409-433d-4775-b7e1-4ede47daab80
能够 应用curl http://127.0.0.1:48081/api/v1/deviceprofile|jq
查询提交的机器设备环境变量:
建立机器设备
在建立机器设备以前必须留意下列二点:
- 机器设备(REST机器设备)依靠名叫”edgex-device-rest”的机器设备服务项目
- 建立机器设备时应用的
profile.name
字段名务必与提交的机器设备环境变量中的name
字段名”SensorCluster”同样
实行以下指令建立机器设备:
# curl -X POST http://127.0.0.1:48081/api/v1/device -d '{
"name": "Temp_and_Humidity_sensor_cluster_01",
"description": "Raspberry Pi sensor cluster",
"adminState": "unlocked",
"operatingState": "enabled",
"protocols": {
"example": {
"host": "dummy",
"port": "1234",
"unitID": "1"
}
},
"labels": [
"Humidity sensor",
"Temperature sensor",
"DHT11"
],
"location": "Tokyo",
"service": {
"name": "edgex-device-rest"
},
"profile": {
"name": "SensorCluster"
}
}'
a687ea40-13ca-4ed3-bb00-140ae84344a1
向EdgeX Foundry传送数据
向EdgeX Foundry推送溫度和环境湿度数据信息:
# curl --request POST 'http://127.0.0.1:49986/api/v1/resource/Temp_and_Humidity_sensor_cluster_01/temperature' --header 'Content-Type: text/plain' --data-raw '23'
# curl --request POST 'http://127.0.0.1:49986/api/v1/resource/Temp_and_Humidity_sensor_cluster_01/humidity' --header 'Content-Type: text/plain' --data-raw '33'
应用curl http://127.0.0.1:48080/api/v1/event/count/Temp_and_Humidity_sensor_cluster_01
查询该机器设备上的事情数:
载入传到的数据信息
# curl -X GET http://localhost:48080/api/v1/reading/device/Temp_and_Humidity_sensor_cluster_01/100|jq
[
{
"id": "b72e2fde-fe8c-41ed-baa4-dab0155bc53d",
"created": 1622629900723,
"origin": 1622629900721518000,
"device": "Temp_and_Humidity_sensor_cluster_01",
"name": "humidity",
"value": "33",
"valueType": "Int64"
},
{
"id": "07b597c3-248a-4800-b0f6-6d5cb58964b6",
"created": 1622629813141,
"origin": 1622629813139238100,
"device": "Temp_and_Humidity_sensor_cluster_01",
"name": "temperature",
"value": "23",
"valueType": "Int64"
},
...
]
到这里,数据信息早已传到到EdgeX Foundry,短期内里会储存在Redis DB中。因为数据信息不容易在边沿机器设备中储存很久,因而必须配备怎样导出数据。
导出数据
EdgeX 为多种多样云服务器和运用给予了exporters,为了更好地简单化,下边应用小区给予的配备将EdgeX的数据信息发送至公布的MQTT broker(根据Hive MQ)。
免费下载docker-compose.yml并运作,依照前边的方法加上机器设备(很有可能必须消除docker volume
)。操作流程能够 见exporting-data。那样在公布的MQTT broker上就可以见到自身推送的数据信息。
能够 在consul的Key/Value中设定
实行docker logs -f edgex-app-service-configurable-rules
就可以查询数据信息推送日志:
level=DEBUG ts=2021-06-02T14:54:39.641349729Z app=AppService-rules-engine source=runtime.go:59 msg="Processing message: 1 Transforms"
level=DEBUG ts=2021-06-02T14:54:39.642895079Z app=AppService-rules-engine source=outputdata.go:38 msg="Setting output data"
level=DEBUG ts=2021-06-02T14:54:42.359115397Z app=AppService-rules-engine source=runtime.go:59 msg="Processing message: 1 Transforms"
level=DEBUG ts=2021-06-02T14:54:42.359264279Z app=AppService-rules-engine source=outputdata.go:38 msg="Setting output data"
level=DEBUG ts=2021-06-02T14:55:36.565067194Z app=AppService-rules-engine source=runtime.go:59 msg="Processing message: 1 Transforms"
level=DEBUG ts=2021-06-02T14:55:36.565268032Z app=AppService-rules-engine source=outputdata.go:38 msg="Setting output data"
汇总
EdgeX事后的Roadmap以下,在其中下一个版本号Ireland
可能把API从v1升級为v2:
'Barcelona': October 2017
'California': July 2018
'Delhi': November 2018
'Edinburgh': July 2019
'Fuji': November 2019
'Geneva': ~ April 2020
'Hanoi': ~ October 2020
'Ireland': ~ June 2021
'Jakarta': ~ November 2021
'Kamakura': ~ April 2022
文中仅仅一个EdgeX的使用,并沒有深层次解读內部完成。整体上看EdgeX能够 当作是运作在边沿机器设备附近的电源适配器,承担协议书变换和数据信息的临时性储存等。事后假如还有机会涉及到此层面工作中再深入分析。
谢谢Linux慈善基金会及其此项目地推动者。
参照
- Edgex Foundry实例教程
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0