我正在开发基于位置的服务项目,我有几个传感器需要向服务器发送异步读数,这将关联读数并生成结果。传感器通信也会有一定程度的传感器,我有兴趣使用XMPP作为传输,因为它具有高效的消息传递,实时特性和NAT遍历。
我希望找到(python或任何其他语言)XMPP机器到机器(M2M)服务的示例,希望使用PubSub模型进行异步通信而不是基于轮询的RPC。我无法在网上或在我看过的XMPP书籍中找到任何示例,因为它们似乎主要关注XMPP以进行人际交互,例如聊天,视频等。
我必须使用的一般要求是:
1
。多个传感器通过XMPP相互共享数据
2。异步(PubSub)通信,订阅感兴趣的消息
3。希望用Python编写,但任何语言都是一个很好的起点
4。服务器关联来自所有传感器的数据并生成结果,这些结果可供订户使用
5。通过发现轻松配置/设置
任何关于在哪里寻找的想法,或者一个好的起点都会非常感激。
谢谢!
答案 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。我自己使用了Smack和OpenFire来达到类似目的。服务器对您来说不那么重要,因为任何支持PubSub的现成产品都能完成这项工作。更重要的是具有pubsub支持的客户端库。我知道Smack有这个,但它是一个Java库而不是python。
答案 2 :(得分:1)
我对所有这些必需品都不了解,但您可以使用SleekXMPP来构建自己的。它是纯python和有据可查的XMPP库。 XMPP已被用于进行计算机到计算机的通信,这非常好,因为您可以从自己的聊天客户端进行测试。例如,http://www.python.org/about/success/projectpipe/
祝你好运