用于机器对机器(M2M)通信的XMPP

时间:2012-01-15 19:23:46

标签: python xmpp publish-subscribe

我正在开发基于位置的服务项目,我有几个传感器需要向服务器发送异步读数,这将关联读数并生成结果。传感器通信也会有一定程度的传感器,我有兴趣使用XMPP作为传输,因为它具有高效的消息传递,实时特性和NAT遍历。

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

我必须使用的一般要求是:

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


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


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


4。服务器关联来自所有传感器的数据并生成结果,这些结果可供订户使用


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

任何关于在哪里寻找的想法,或者一个好的起点都会非常感激。

谢谢!

3 个答案:

答案 0 :(得分:3)

M2M的XMPP听起来不错。

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

在pubsub服务器中基本上完成了所有艰苦的工作,并且您必须为客户端实现非常少的智能。但这取决于您要对发布的信息做什么。我没有测试任何实际上对已发布信息做某事的客户。

答案 1 :(得分:2)

这非常符合XMPP的pubsub模型。

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

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

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

答案 2 :(得分:1)

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

祝你好运