2017-10-10 3 views
0

Python 2.7およびPaho MQTT 1.3.1を使用してJSONデータをIBM Watson IoTプラットフォームにプッシュしようとしています。Python Paho MQTT og IBM Watson IoT

IBMのGithubのIoT Pythonクライアントで動作しますが、私のデバイス環境ではこの拡張は許可されていません。

テスト時に私のIBM Watson IoTでTLS暗号化を無効にしました。

これは私のコードです:

import json 
import paho.mqtt.client as mqtt 

client = mqtt.Client('d:ORG-ID:DEVICE-TYPE:DEVICE-ID') 

client.username_pw_set('use-token-auth', 'TOKEN') 
client.connect('ORG-ID.messaging.internetofthings.ibmcloud.com', 1883, 60) 

payload = { 'temperature': 20 } 
client.publish('iot-2/evt/test/fmt/json', json.dumps(payload)) 

client.disconnect() 

私はエラーを取得していないよ、と私のIBMワトソンのIoTダッシュボードが言うん:

Connected on Tuesday, October 10, 2017 at 12:42:26 PM from MY-IP with an insecure connection 

をしかし、データが...

が示されていません

答えて

0

MQTTネットワーク・ループを実行して、パブリッシュ後および切断する前にデータが送信されることを確認する必要があります。これを行うにはいくつかの方法があります。他は全て一度に発行し、接続を切断、接続を行うコールを発行するシングルショットを使用することです

import json 
import paho.mqtt.client as mqtt 

client = mqtt.Client('d:ORG-ID:DEVICE-TYPE:DEVICE-ID') 

client.username_pw_set('use-token-auth', 'TOKEN') 
client.connect('ORG-ID.messaging.internetofthings.ibmcloud.com', 1883, 60) 

payload = { 'temperature': 20 } 
client.publish('iot-2/evt/test/fmt/json', json.dumps(payload)) 

client.loop() 

client.disconnect() 

最も簡単なのは、単に公開と切り離し呼び出しの間client.loop()呼び出しを追加することです。シングルショット方法について

single(topic, payload=None, qos=0, retain=False, hostname="localhost", 
port=1883, client_id="", keepalive=60, will=None, auth=None, tls=None, 
protocol=mqtt.MQTTv311) 

完全な詳細は、ドキュメントhereにあります。

関連する問題