2016-12-19 4 views
0

Я пытаюсь контролировать брокер mqtt, поэтому я могу запустить уведомление, если есть прерывание соединения.on_disconnect mqtt клиентская сторона никогда не называется

Мой подход заключался в создании клиента облака, который ничего не делает, кроме наблюдения за брокером. «on_disconnect» похоже на соответствующий метод, но я не могу заставить его запускать. (Я загружаю и выгружаю брокерскую услугу в другом терминале).

Метод представляет собой каркас:

import random 
import time 


def RepresentsInt(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
def on_message(client, userdata, message): 
     print message 
def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    mqttc.subscribe('control/iterate',qos=0) 
def on_disconnect(client, userdata, rc): 
     print("Disconnected") 
mqttc = mqtt.Client() 
mqttc.on_connect = on_connect 
mqttc.on_message = on_message 
mqttc.connect('10.147.17.234', port=1883, keepalive=1) 



print("test") 
mqttc.loop_forever() 

Очевидно, что существуют простые способы сделать это, но я чувствую, что есть элегантное решение этой проблемы, что я просто не хватает.

+0

Пожалуйста, покажите полный пример кода, что другие люди могут работать и отладки. – nos

+1

Как долго вы ждали, когда 'on_disconnect' будет срабатывать и что сохранить значение, которое вы установили в соединении? – hardillb

+0

сохранить в живых было сначала 60, а затем 1. Код буквально скелет. – Sam

ответ

1

Вы на самом деле не добавил on_disconnect перезвонит в вашем коде:

import random 
import time 


def RepresentsInt(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
def on_message(client, userdata, message): 
     print message 
def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    mqttc.subscribe('control/iterate',qos=0) 
def on_disconnect(client, userdata, rc): 
     print("Disconnected") 
mqttc = mqtt.Client() 
mqttc.on_connect = on_connect 
mqttc.on_message = on_message 
#added the following line 
mqttc.on_disconnect = on_disconnect 
mqttc.connect('10.147.17.234', port=1883, keepalive=1) 



print("test") 
mqttc.loop_forever() 
+0

большое спасибо! это смущает ... – Sam