Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Paho MQTT og IBM Watson IoT_Python_Ibm Cloud_Mqtt_Paho - Fatal编程技术网

Python Paho MQTT og IBM Watson IoT

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

我正在尝试使用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')

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}}