将 Mainflux 物联网代理连接到 EdgeX 网关

Connecting Mainflux IoT Agent to EdgeX Gateway

我目前正在尝试设置一个最小的 EdgeX - Mainflux 设置来监控我们公司的特定传感器数据。

为了制作原型,我设置了 2 个 Linux 服务器

网关从硬件设备接收读数,并将其传递给 mainflux 服务器进行进一步处理。

为此,我遵循了官方 mainflux 文档中的示例 https://mainflux.readthedocs.io/en/latest/agent/

  1. 创建了一个用户
  2. 创建了 'gateway-thing'
  3. 创建了 2 个频道(data_channel、control_channel)
  4. 将网关连接到两个通道
  5. 已创建 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 服务器

  1. 为代理创建了环境变量
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/'
  1. 开始代理

因为说明要求我安装 natsd,所以我通过 docker 启动了一个实例。 现在一切都按预期工作。我可以发布和订阅消息 EdgeX <-> Mainflux Server。 说明没有涵盖的是如何从那里开始。

据我了解,Agent需要安装在EdgeX服务器上,因为它充当Edge和Mainflux之间的桥梁。代理连接到 EdgeX 端的 mqtt 服务器,以便能够来回发布和接收 control/data 命令。

我不明白代理是如何连接到网关的以及 NATSD 实例在做什么。有人会知道如何将数据从 edgex 服务器获取到 mainflux 实例吗?

假定您是 运行 同时 edgexagent 在同一个 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 获取。