pythonanywher上的paho-mqtt身份验证错误

时间:2018-05-15 23:18:22

标签: paho pythonanywhere

我试图在我的linux机器上使用简单的publish.single发布到beebotte.com上的mqtt主题它工作正常但在python任何地方我都收到了身份验证错误。次要版本号存在细微差别,可能会有什么不同?

这是我放入python控制台的代码:

import paho.mqtt.publish as publish
mqtt_host = "beebotte.com"
mqtt_topic = "climate/set/livingroom"
auth = {'username':"token:MY_SECRET_TOKEN"}
publish.single(mqtt_topic, "python sent", hostname=mqtt_host, auth = auth)

这是错误:

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paho.mqtt.publish as publish
>>> mqtt_host = "beebotte.com"
>>> mqtt_topic = "climate/set/livingroom"
>>> auth = {'username':"MY_SECRET_TOKEN"}
>>> publish.single(mqtt_topic, "python sent", hostname=mqtt_host, auth = auth)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/<MYUSER>/python-email/local/lib/python2.7/site-packages/paho/mqtt/publish.py", line 216, in single
    protocol, transport)
  File "/home/<MYUSER>/python-email/local/lib/python2.7/site-packages/paho/mqtt/publish.py", line 152, in multiple
    client.connect(hostname, port, keepalive)
  File "/home/<MYUSER>/python-email/local/lib/python2.7/site-packages/paho/mqtt/client.py", line 768, in connect
    return self.reconnect()
  File "/home/<MYUSER>/python-email/local/lib/python2.7/site-packages/paho/mqtt/client.py", line 895, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused
>>> 
>>> exit()

在这里工作:

Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paho.mqtt.publish as publish
>>> mqtt_host = "beebotte.com"
>>> mqtt_topic = "climate/set/livingroom"
>>> auth = {'username':"MY_SECRET_TOKEN"}
>>> publish.single(mqtt_topic, "python sent", hostname=mqtt_host, auth = auth)
>>> 
>>> exit()

编辑(我不确定这是否属实): 关键是token:token_KxDxlcmXgQBDfWRNC的实际格式(不是真实的)beebotte.com也接受2A4Gfgv0puYFBEVbBQX24szALcyDvMRh格式的所谓密钥。如果我使用密钥,它可以从pythonanywhere(有时)。这让我感到相信它是令牌中:的某种格式问题。

所以现在的问题是如何将其格式化以便正常工作。

1 个答案:

答案 0 :(得分:1)

我认为mqtt不会在PythonAnywhere上的免费帐户中运行。免费帐户只能通过代理使用http连接到特定的网站白名单。如果在某个地方有一个http到mqtt桥接器,你可以使用它。