【问题标题】:XMPP for Machine to Machine (M2M) communicationXMPP 用于机器对机器 (M2M) 通信
【发布时间】:2012-02-10 22:57:58
【问题描述】:

我正在从事基于位置的服务项目,我有几个传感器需要将异步读数发送到服务器,这将关联读数并生成结果。传感器之间也会有某种程度的通信,我对使用 XMPP 作为传输方式很感兴趣,因为它具有高效的消息传递、实时特性和 NAT 穿越功能。

我希望找到(python 或任何其他语言)XMPP 机器对机器 (M2M) 服务的示例,希望使用 PubSub 模型进行异步通信,而不是基于轮询的 RPC。我无法在网上或我看过的 XMPP 书籍中找到任何示例,因为它们似乎主要关注 XMPP 用于人类交互,例如聊天、视频等。

我必须满足的一般要求是:


1.多个传感器通过 XMPP 相互共享数据


2.异步(PubSub)通信,订阅感兴趣的消息


3。希望用 Python 编写,但任何语言都是一个很好的起点


4.服务器将来自所有传感器的数据关联起来并生成结果,供订阅者使用


5.通过发现轻松配置/设置

任何关于在哪里寻找的想法或一个好的起点将不胜感激。

谢谢!

【问题讨论】:

    标签: python xmpp publish-subscribe


    【解决方案1】:

    我不知道所有这些必要条件,但您可以使用 SleekXMPP 来构建自己的。它是纯 python 和有据可查的 XMPP 库。 XMPP 已用于进行计算机到计算机的通信,这非常好,因为您可以从自己的聊天客户端对其进行测试。例如,http://www.python.org/about/success/projectpipe/

    祝你好运

    【讨论】:

      【解决方案2】:

      这非常适合 XMPP 的 pubsub 模型。

      • 您的所有机器都将是发布者和订阅者。
      • 在这种情况下,您的处理服务器也将是另一个订阅者,它将在接收已发布的项目时进行数据处理。

      您发现处理 pubsub 的任何示例都很容易适用。在 XMPP 中,JID(Jabber ID)是否代表机器的用户是无关紧要的,而 pubsub 实际上并不面向人类交互,不像多用户聊天。

      有许多支持 pubsub 的 XMPP 服务器。我自己也将SmackOpenFire 用于类似目的。服务器对您来说不太重要,因为任何支持 PubSub 的现成产品都可以完成这项工作。更重要的是具有 pubsub 支持的客户端库。我知道 Smack 有这个,但它是一个 Java 库而不是 python。

      【讨论】:

      • Robin,我正在尝试使用 OpenFire 和 Smack 进行 M2M,但我只能使用 JID 和密码创建连接,在我的情况下,我不想为每个实体生成不必要的密码,还有其他方法可以绕过身份验证吗?
      【解决方案3】:

      用于 M2M 的 XMPP 听起来是个好主意。

      关于客户端和服务器,见http://xmpp.org/about-xmpp/technology-overview/pubsub/

      在 pubsub 服务器中基本上完成了所有艰苦的工作,而您必须为客户端实现很少的智能。但这取决于您要如何处理已发布的信息。我还没有测试过任何实际使用发布的信息做某事的客户。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 2020-03-09
        • 2011-05-19
        • 2011-08-22
        相关资源
        最近更新 更多