Python Raspberry Pi上的Paho MQTT客户端从未发布

Python Raspberry Pi上的Paho MQTT客户端从未发布,python,mqtt,paho,Python,Mqtt,Paho,与此类似,Raspberry Pi和Paho MQTT以及Python的发布根本无法通过。另一方面,mosquitto命令工作得很好 这个不行 import paho.mqtt.publish as publish publish.single(topic='temp/temp',payload='random',hostname='192.168.1.105') 这个有效 mosquito_pub -h 192.168.1.105 -t temp/temp -l random 请告诉我缺少

与此类似,Raspberry Pi和Paho MQTT以及Python的发布根本无法通过。另一方面,
mosquitto
命令工作得很好

这个不行

import paho.mqtt.publish as publish
publish.single(topic='temp/temp',payload='random',hostname='192.168.1.105')
这个有效

mosquito_pub -h 192.168.1.105 -t temp/temp -l
random

请告诉我缺少什么?

解决了其他几个问题后,我猜您有一个只支持MQTT v3.1而不支持v3.1.1的旧版本mosquitto

这应该可以解决问题

import paho.mqtt.publish as publish
publish.single(topic='temp/temp',payload='random',hostname='192.168.1.105', protocol=mqtt.MQTTv31)

在解决了其他几个问题之后,我猜您有一个旧版本的mosquitto,它只支持MQTT v3.1,而不支持v3.1.1

这应该可以解决问题

import paho.mqtt.publish as publish
publish.single(topic='temp/temp',payload='random',hostname='192.168.1.105', protocol=mqtt.MQTTv31)

您发布的python代码(主机名已更改)针对我的本地代理运行。运行控制台时是否有任何输出?泛美卫生组织图书馆的哪个版本?什么版本的python?没有;什么都没有。这是令人失望的部分。我确实安装了paho mqtt,python是2.7.9,直到有人发现问题所在,下面是我的工作,
os.system(“mosquitto_pub-h 192.168.1.105-t temp/temp-f msg”)
在Pi3/python 2.7.9/Jessie和Windows上都适用,使用公共代理messagesight.demos.ibm.com。您可以先浏览到,单击连接,然后订阅temp/temp,以检查发布是否成功-因此,问题似乎是特定于您/您的环境的。描述你如何知道一个有效,另一个无效。顺便说一句,Python脚本不会输出到控制台,它会发布然后退出,所以没有控制台输出并不表示失败。您是否执行了sudo pip安装paho mqtt?如果问题特定于我的环境,那么
mosquito_pub
是如何工作的?事实上,
mosquitto\u pub
在命令行和通过
os.system()
工作。通过在命令行上没有输出,我的意思是,命令永远不会完成以在控制台上看到输出,等等。您发布的python代码(主机名已更改)针对我的本地代理工作。运行控制台时是否有任何输出?泛美卫生组织图书馆的哪个版本?什么版本的python?没有;什么都没有。这是令人失望的部分。我确实安装了paho mqtt,python是2.7.9,直到有人发现问题所在,下面是我的工作,
os.system(“mosquitto_pub-h 192.168.1.105-t temp/temp-f msg”)
在Pi3/python 2.7.9/Jessie和Windows上都适用,使用公共代理messagesight.demos.ibm.com。您可以先浏览到,单击连接,然后订阅temp/temp,以检查发布是否成功-因此,问题似乎是特定于您/您的环境的。描述你如何知道一个有效,另一个无效。顺便说一句,Python脚本不会输出到控制台,它会发布然后退出,所以没有控制台输出并不表示失败。您是否执行了sudo pip安装paho mqtt?如果问题特定于我的环境,那么
mosquito_pub
是如何工作的?事实上,
mosquitto\u pub
在命令行和通过
os.system()
工作。通过在命令行上没有输出,我的意思是,命令永远不会完成以在控制台上看到输出,等等。