Python Paho MQTT og IBM Watson IoT
我正在尝试使用Python 2.7和Paho MQTT 1.3.1将JSON数据推送到IBM Watson IoT平台 它确实可以与IBM Github的IoT Python客户端一起工作,但我的设备环境不允许此扩展 测试时,我已在IBM Watson IoT中禁用TLS加密 这是我的代码:Python Paho MQTT og IBM Watson IoT,python,ibm-cloud,mqtt,paho,Python,Ibm Cloud,Mqtt,Paho,我正在尝试使用Python 2.7和Paho MQTT 1.3.1将JSON数据推送到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') cl
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 Watson IoT仪表板上确实显示:
Connected on Tuesday, October 10, 2017 at 12:42:26 PM from MY-IP with an insecure connection
但是数据没有显示…您需要运行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)
有关单次激发方法的完整详细信息,请参见文档:您需要运行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)
有关单次激发方法的完整详细信息,请参阅文档:您需要按如下所示更改有效负载格式
payload = {'d':{'temperature':20}}
您需要更改有效负载格式,如下所示
payload = {'d':{'temperature':20}}