我目前正在尝试设置最小的EdgeX-Mainflux设置以监视我们公司中的特定传感器数据。
为制作原型,我设置了2个Linux服务器
网关接收来自硬件设备的读数,并将其传递给mainflux服务器以进行进一步处理。
为此,我遵循官方mainflux文档中的示例 https://mainflux.readthedocs.io/en/latest/agent/
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消息。 这些说明没有涵盖的是如何从那里继续。
据我了解,该代理需要安装在EdgeX服务器上,因为它充当Edge和Mainflux之间的桥梁。该代理连接到EdgeX端的mqtt服务器,以便能够来回发布和接收控制/数据命令。
我不知道代理如何连接到网关以及NATSD实例在做什么。谁会知道如何将Edgex服务器上的数据转移到mainflux实例上?
答案 0 :(得分:1)
假定您在同一网关/ PC上同时运行edgex
和agent
。
要从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获取。