将Mainflux IoT代理连接到EdgeX网关

时间:2020-07-26 19:00:05

标签: linux iot gateway

我目前正在尝试设置最小的EdgeX-Mainflux设置以监视我们公司中的特定传感器数据。

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

  • EdgeX网关
  • Mainflux服务器

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

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

  1. 创建用户
  2. 创建了一个“网关事物”
  3. 创建了2个通道(data_channel,control_channel)
  4. 将网关连接到两个通道
  5. 创建的引导程序配置
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消息。 这些说明没有涵盖的是如何从那里继续。

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

我不知道代理如何连接到网关以及NATSD实例在做什么。谁会知道如何将Edgex服务器上的数据转移到mainflux实例上?

1 个答案:

答案 0 :(得分:1)

假定您在同一网关/ PC上同时运行edgexagent

要从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获取。