2016-07-21 17 views
0

paho mqttクライアントを使用して、carriotsデータストリームを購読しようとしています。しかし、私はキャリーからのデータを読み取ることができません。 ここに私がキャリブレーションを購読するために使用しているソースコードがあります。そこにコードと間違って何かがあるか、私はcariotsストリームにサブスクライブするために必要とされるいくつかのステップが欠落していた場合Carriotsストリームを購読する

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
# Client paho-mqtt CarriotsMqttServer 
# sub_carriot.py 

import paho.mqtt.subscribe as mqtt 

class CarriotsMqttClient(): 
    host = 'mqtt.carriots.com' 
    port = '1883' 
    auth = {} 
    topic = '%s/streams' 
    tls = None 

    def __init__(self, auth, tls=None): 
     self.auth = auth 
     self.topic = '%s/streams' % auth['username'] 
     if tls: 
      self.tls = tls 
      self.port = '8883' 

    #Subscribe 
    def subscribe(self): 
     try: 
      mqtt.simple(topics=self.topic, msg_count=10, hostname=self.host, port=self.port, auth=self.auth, tls=self.tls) 
     except Exception, ex: 
      print ex 
if __name__ == '__main__': 
    auth = {'username': '72cdf4ec......bbeec9d9fb4483e', 'password': ''} 
    client_mqtt = CarriotsMqttClient(auth=auth) 
    client_mqtt.subscribe() 

は誰も教えてもらえます。

私は、paho mqttを使用して、キャボットウェブサイトに記載されている参照コードの助けを借りて、キャボットに正常に公開することができました。

答えて

0

mqtt.simple機能ブロックは、msg_countまでのメッセージを受信し、それらのメッセージを返します。

あなたが持っているコードは、10個のメッセージを受信するまで残っているだけで、関数によって返されたメッセージを収集するものがないので、出力なしで終了する可能性があります。

通常のサブスクリプション方法をコールバックとネットワークループを使用して調べることをお勧めします。このようなもの:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
# Client paho-mqtt CarriotsMqttServer 
# sub_carriot.py 

import paho.mqtt.client as mqtt 

class CarriotsMqttClient(): 
    host = 'mqtt.carriots.com' 
    port = '1883' 
    auth = {} 
    topic = '%s/streams' 
    tls = None 
    client = None 

    def __init__(self, auth, tls=None): 
     self.auth = auth 
     self.topic = '%s/streams' % auth['username'] 
     if tls: 
      self.tls = tls 
      self.port = '8883' 
     self.client = mqtt.Client() 
     self.client.on_message = self.onMessage 
     self.client.connect(self.host, self.port) 
     self.client.loop_start() 

    def onMessage(self, client, userdata, msg): 
     print(msg.topic+" "+str(msg.payload)) 

    #Subscribe 
    def subscribe(self): 
     try: 
      self.client.subscribe(self.topic) 
     except Exception, ex: 
      print ex 
if __name__ == '__main__': 
    auth = {'username': '72cdf4ec......bbeec9d9fb4483e', 'password': ''} 
    client_mqtt = CarriotsMqttClient(auth=auth) 
    client_mqtt.subscribe() 
関連する問題