2017-01-14 10 views
0

私はサブスクライブしたいくつかのチャネルを監視するためにMQTTをしばらく使用しています。今、状態への反応としてメッセージを送信するように実装したいと思います。私はon_messageコールバック(最後のコード1)で反応する、以下のコードを実行しています。しかし、このコードでは、ブロックしているメインコードにMQTT:loop_forever()を呼び出さないでメッセージを送信する方法

loop_forever() 

を使用しています。

私がしたいのは、ただ1つのメッセージをMQTTに送信することです。

import paho.mqtt.client as mqtt 

if __name__ == "__main__": 

    mqtt_client = mqtt.Client() 
    mqtt_client.connect("192.168.178.204", 1883, 60) 
    mqtt_client.username_pw_set(username="test", password="test") 

    mqtt_client.publish(topic='TEST', payload='CCCCCCCCC', retain=False) 
    mqtt_client.loop_write() 
    # mqtt_client.loop() 
    # mqtt_client.loop_start()  

    mqtt_client.disconnect() 

がどのようにプロセスをブロックしませんMQTTにメッセージを送ることができます:私は(すべての異なるループ機能付き)以下のことをしようとすると、何もMQTTサーバによって受信されませんか?


コード1:

import paho.mqtt.client as mqtt 

def on_connect(client, userdata, rc): 
    topic_list = [("TEST_MS", 1)] 
    if rc == 0: 
     print("Successful connected and subscribed to: {}".format(topic_list)) 
    client.subscribe(topic_list) 


def on_message(client, userdata, msg): 
    print(msg.payload) 
    client.publish(topic='TEST_MS2', payload=msg.payload, retain=False) 


def on_publish(client, userdata, mid): 
    print("message published") 


def on_subscribe(mosq, obj, mid, granted_qos): 
    print("Subscribed: " + str(mid) + " " + str(granted_qos)) 

if __name__ == "__main__": 

    mqtt_client = mqtt.Client() 

    mqtt_client.on_connect = on_connect 
    mqtt_client.on_message = on_message 
    mqtt_client.on_publish = on_publish 
    mqtt_client.on_subscribe = on_subscribe 

    mqtt_client.connect("192.168.178.204", 1883, 60) 
    mqtt_client.username_pw_set(username="test", password="test") 

    # mqtt_client.publish(topic='TEST_MS', payload='CCCCCCCCC', retain=False) 
    mqtt_client.loop_forever() 

    mqtt_client.disconnect() 

答えて

1

あなただけの単一のメッセージを送信したいとし、終了は、そのために特別にAPIを使用している場合。 Docs here

import paho.mqtt.publish as publish 

publish.single("paho/test/single", "payload", hostname="iot.eclipse.org") 
+0

非常にありがとう – mstuebner

関連する問題