2012-01-15 56 views
2

我正在開發基於位置的服務項目,其中有幾個傳感器需要將異步讀數發送到服務器,這會將讀數關聯起來並生成結果。傳感器與傳感器之間也會有一定程度的溝通,並且由於其高效的消息傳遞,實時性和NAT穿越,我有興趣將XMPP用作傳輸。我希望找到一個(Python或任何其他語言)XMPP機器到機器(M2M)服務的例子,希望使用PubSub模型進行異步通信而不是基於輪詢的RPC。我一直無法在網上或在我看到的XMPP書籍中找到任何示例,因爲它們似乎主要集中在XMPP上進行人機交互,例如聊天,錄像等。用於機器對機器(M2M)通信的XMPP

我必須具備的一般要求一起工作是:


1.多個傳感器彼此之間通過XMPP


2.異步(PubSub的)通信共享數據,訂閱感興趣


3.希望用Python編寫的消息,但任何語言都是ag OOD起點


4.服務器從所有傳感器相關數據,並生成結果,其可以提供給用戶通過發現


5.易於配置/設置

任何想法在哪裏看,還是一個很好的起點將不勝感激。

謝謝!

回答

1

我不知道所有這些必要條件,但你可以使用SleekXMPP來建立你自己的。它是純Python和有據可查的XMPP庫。 XMPP已被用於計算機與計算機之間的通信,這很好,因爲您可以從您自己的聊天客戶端進行測試。瞧例如,​​

好運

2

這符合XMPP的發佈 - 訂閱模式非常好。

  • 所有的機器都是發佈者和訂閱者。
  • 在這種情況下,您的處理服務器也將是另一個訂戶,它將在收到已發佈項目時完成其數據處理。

您發現處理pubsub的任何示例都很容易適用。在XMPP中,JID(Jabber ID)是否代表機器的用戶是無關緊要的,並且pubsub實際上不是面向人類交互的,與多用戶聊天不同。

有很多支持pubsub的XMPP服務器。我自己也使用了SmackOpenFire來達到類似的目的。服務器對您來說不太重要,因爲任何支持PubSub的現成產品都可以完成這項工作。更重要的是有pubsub支持的客戶端庫。我知道Smack有這個,但它是一個不是Python的Java庫。

+0

羅賓,我想用OpenFire和Smack來做M2M,但我只能創建一個JID和密碼的連接,而在我的情況下,我不想爲每個實體生成不必要的密碼,是否有其他方法我可以繞過認證? – ThiyagaB 2015-05-21 06:48:04

3

M2M的XMPP聽起來像個不錯的主意。

關於客戶端和服務器,請參閱http://xmpp.org/about-xmpp/technology-overview/pubsub/

在發佈訂閱服務器基本上沒有所有的辛勤工作,你必須實現非常小的智能客戶端。但這取決於您想要對發佈的信息做什麼。我沒有測試任何實際上對發佈的信息做了些什麼的客戶。

相關問題