2016-07-21 6 views
0

Я пытаюсь подписаться на поток данных carriots, используя клиент paho mqtt. Но я не умею читать данные с карриотов. Вот исходный код, который я использую, чтобы подписаться на карриот.Подпишитесь на Carriots Stream

#!/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() 

Может кто-нибудь сказать мне, если есть что-то не так с кодом или я не хватает какой-то шаг, который необходим, чтобы подписаться на cariots поток.

Я был в состоянии успешно опубликовать на carriots используя paho mqtt, с помощью ссылочного кода, приведенного на веб-сайте carriots.

ответ

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() 

 Смежные вопросы

  • Нет связанных вопросов^_^