设备间的通信

两个设备分别为Test1和Test2:

Test1设备订阅topic:/a1WNTUfdaXu/Test1/get,发布topic:/a1WNTUfdaXu/Test2/update  
Test2设备订阅topic:/a1WNTUfdaXu/Test2/get,发布topic:/a1WNTUfdaXu/Test1/update

如果不用规则引擎和路由相关API,设备Test1与Test2无法通信,这是正常的吗 ?

常规的MQTT 是可以这么通信的,阿里IoT 平台目前不行,是出于什么考虑? 还是我们使用的不对(不使用规则引擎相关) ?

展开
收起
1640627132353176 2018-09-29 17:34:40 985 分享 版权
阿里云 AI 助理回答

根据阿里云物联网平台的MQTT通信机制,设备之间的直接通信设计并非基于点对点模式,而是通过设备与云端的交互来实现。在您描述的场景中:

  • Test1设备订阅了/a1WNTUfdaXu/Test1/get,意在接收针对自身的下行消息。
  • Test1设备发布到/a1WNTUfdaXu/Test2/update,尝试向Test2设备发送上行消息。
  • Test2设备订阅了/a1WNTUfdaXu/Test2/get,准备接收下行消息。
  • Test2设备发布到/a1WNTUfdaXu/Test1/update,尝试向Test1设备发送上行消息。

在标准MQTT协议中,虽然理论上可以配置设备互相订阅对方的Topic以实现直接通信,但阿里云物联网平台的架构设计侧重于设备与云端的双向通信模型。即设备主要通过发布自定义或物模型定义的Topic与云端交换数据,而设备间的消息传递通常需要借助平台的规则引擎或服务端逻辑来中转处理。

因此,如果不在阿里云物联网平台上配置规则引擎进行消息路由,或使用其他API服务来桥接设备间的通信,Test1和Test2之间直接通过上述Topic订阅发布的通信方式确实不会成功。这不是使用方法的问题,而是平台通信架构的设计原则,旨在提供更安全、可管理的设备间交互方案。

阿里云物联网平台这样设计主要是出于以下考虑: - 安全性:集中式的消息处理便于实施统一的安全策略和访问控制,减少设备间直接交互可能引入的安全风险。 - 可管理性:通过云端作为中介,可以更容易地监控、审计和控制设备间的通信内容和流量,支持复杂的业务逻辑处理。 - 扩展性和灵活性:规则引擎等高级功能允许灵活配置消息路由,无需修改设备端代码即可调整通信流程,适应不同的应用场景。

综上所述,如果您希望在不使用规则引擎的情况下实现Test1与Test2设备间的直接通信,这在当前阿里云物联网平台的标准配置下是不可行的,且符合平台设计的初衷和考量。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

物联网领域前沿技术分享与交流

收录在圈子:
+ 订阅
致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。
还有其他疑问?
咨询AI助理