将 Mainflux 物联网代理连接到 EdgeX 网关
Connecting Mainflux IoT Agent to EdgeX Gateway
我目前正在尝试设置一个最小的 EdgeX - Mainflux 设置来监控我们公司的特定传感器数据。
为了制作原型,我设置了 2 个 Linux 服务器
- EdgeX 网关
- Mainflux 服务器
网关从硬件设备接收读数,并将其传递给 mainflux 服务器进行进一步处理。
为此,我遵循了官方 mainflux 文档中的示例
https://mainflux.readthedocs.io/en/latest/agent/
- 创建了一个用户
- 创建了 'gateway-thing'
- 创建了 2 个频道(data_channel、control_channel)
- 将网关连接到两个通道
- 已创建 bootstrap 配置
gateway_thing_id="43259265-394c-4cc4-bf50-58aba33432ce"
control_channel_id="18599c67-2699-4654-8eac-016133875932"
data_channel_id="ba67f32e-1912-4038-9515-6d4dd6024413"
bootstrap_configuration='
{
"external_id": "44:e1:2d:e6:cf:03",
"thing_id": "43259265-394c-4cc4-bf50-58aba33432ce",
"external_key": "edged",
"name": "edged",
"channels": [
"ba67f32e-1912-4038-9515-6d4dd6024413",
"18599c67-2699-4654-8eac-016133875932"
],
"content":"{\"log_level\":\"debug\",\"http_port\":\"9000\",\"mqtt_url\":\"tcp://localhost:1883\",\"edgex_url\":\"http://localhost:48090/api/v1/\"}"
}'
切换到 EdgeX 服务器
- 为代理创建了环境变量
export MF_AGENT_LOG_LEVEL=debug
export MF_AGENT_BOOTSTRAP_KEY=edged
export MF_AGENT_BOOTSTRAP_ID=44:e1:2d:e6:cf:03
export MF_AGENT_BOOTSTRAP_URL='http://192.168.137.95:8202/things/bootstrap/'
- 开始代理
因为说明要求我安装 natsd,所以我通过 docker 启动了一个实例。
现在一切都按预期工作。我可以发布和订阅消息 EdgeX <-> Mainflux Server。
说明没有涵盖的是如何从那里开始。
据我了解,Agent需要安装在EdgeX服务器上,因为它充当Edge和Mainflux之间的桥梁。代理连接到 EdgeX 端的 mqtt 服务器,以便能够来回发布和接收 control/data 命令。
我不明白代理是如何连接到网关的以及 NATSD 实例在做什么。有人会知道如何将数据从 edgex 服务器获取到 mainflux 实例吗?
假定您是 运行 同时 edgex
和 agent
在同一个 gateway/PC.
要从 edgex 服务器 API 端点接收数据,请向代理发送 mqtt 消息
例如:
mosquitto_pub -u <thing_id> -P <thing_key> -t channels/<channel_id>/messages/req -h localhost -m '[{"bn":"1:", "n":"control", "vs":"edgex-config, edgex-support-notifications, edgex-core-data"}]'
这将使代理向 edgex 端点发送请求
http://localhost:48082/api/v1/config
并检索配置数据
edgex-support-notifications, edgex-core-data
要观察响应,您必须订阅 channels/<channel_id>/messages/res
edgex 上支持的端点是 /config
、/metrics
、/operation
和 /ping
至于NATS,它不用于与edgex通信
NATS 正用于其他服务,这些服务可能会订阅通过 agent
.
从 Mainflux 接收的命令
其他服务也可以通过发布到 NATS 上的 heartbeat
主题来报告其活跃度,该主题由代理选取并可通过 mqtt 获取。
我目前正在尝试设置一个最小的 EdgeX - Mainflux 设置来监控我们公司的特定传感器数据。
为了制作原型,我设置了 2 个 Linux 服务器
- EdgeX 网关
- Mainflux 服务器
网关从硬件设备接收读数,并将其传递给 mainflux 服务器进行进一步处理。
为此,我遵循了官方 mainflux 文档中的示例 https://mainflux.readthedocs.io/en/latest/agent/
- 创建了一个用户
- 创建了 'gateway-thing'
- 创建了 2 个频道(data_channel、control_channel)
- 将网关连接到两个通道
- 已创建 bootstrap 配置
gateway_thing_id="43259265-394c-4cc4-bf50-58aba33432ce"
control_channel_id="18599c67-2699-4654-8eac-016133875932"
data_channel_id="ba67f32e-1912-4038-9515-6d4dd6024413"
bootstrap_configuration='
{
"external_id": "44:e1:2d:e6:cf:03",
"thing_id": "43259265-394c-4cc4-bf50-58aba33432ce",
"external_key": "edged",
"name": "edged",
"channels": [
"ba67f32e-1912-4038-9515-6d4dd6024413",
"18599c67-2699-4654-8eac-016133875932"
],
"content":"{\"log_level\":\"debug\",\"http_port\":\"9000\",\"mqtt_url\":\"tcp://localhost:1883\",\"edgex_url\":\"http://localhost:48090/api/v1/\"}"
}'
切换到 EdgeX 服务器
- 为代理创建了环境变量
export MF_AGENT_LOG_LEVEL=debug
export MF_AGENT_BOOTSTRAP_KEY=edged
export MF_AGENT_BOOTSTRAP_ID=44:e1:2d:e6:cf:03
export MF_AGENT_BOOTSTRAP_URL='http://192.168.137.95:8202/things/bootstrap/'
- 开始代理
因为说明要求我安装 natsd,所以我通过 docker 启动了一个实例。 现在一切都按预期工作。我可以发布和订阅消息 EdgeX <-> Mainflux Server。 说明没有涵盖的是如何从那里开始。
据我了解,Agent需要安装在EdgeX服务器上,因为它充当Edge和Mainflux之间的桥梁。代理连接到 EdgeX 端的 mqtt 服务器,以便能够来回发布和接收 control/data 命令。
我不明白代理是如何连接到网关的以及 NATSD 实例在做什么。有人会知道如何将数据从 edgex 服务器获取到 mainflux 实例吗?
假定您是 运行 同时 edgex
和 agent
在同一个 gateway/PC.
要从 edgex 服务器 API 端点接收数据,请向代理发送 mqtt 消息
例如:
mosquitto_pub -u <thing_id> -P <thing_key> -t channels/<channel_id>/messages/req -h localhost -m '[{"bn":"1:", "n":"control", "vs":"edgex-config, edgex-support-notifications, edgex-core-data"}]'
这将使代理向 edgex 端点发送请求 http://localhost:48082/api/v1/config
并检索配置数据
edgex-support-notifications, edgex-core-data
要观察响应,您必须订阅 channels/<channel_id>/messages/res
edgex 上支持的端点是 /config
、/metrics
、/operation
和 /ping
至于NATS,它不用于与edgex通信
NATS 正用于其他服务,这些服务可能会订阅通过 agent
.
其他服务也可以通过发布到 NATS 上的 heartbeat
主题来报告其活跃度,该主题由代理选取并可通过 mqtt 获取。