2017-10-10 4 views
0

Python 2.7 및 Paho MQTT 1.3.1을 사용하여 JSON 데이터를 IBM Watson IoT 플랫폼으로 푸시하려고합니다.Python Paho MQTT and 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 네트워크 루프를 실행하여 데이터를 공개 한 후와 연결을 끊기 전에 전송해야합니다. 이 작업에는 몇 가지 방법이 있습니다.

간단한 그냥 게시하고 분리 통화 사이의 client.loop() 호출을 추가하는 것입니다

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

다른 하나는 싱글 샷의 연결을 수행 전화를 게시 게시하고 한 번에 모든 연결을 해제 사용하는 것입니다. 하나의 샷 방법에 대한

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에 있습니다

관련 문제