Ошибка аутентификации paho-mqtt на pythonanywher - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь опубликовать в теме mqtt на beebotte.com, используя простой publish.single на моей машине с Linux, он работает нормально, но на 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()

edit (я не уверен, что это правда): ключ в фактическом формате token:token_KxDxlcmXgQBDfWRNC (не настоящий) beebotte.com также принимает так называемый секретный ключ в формате 2A4Gfgv0puYFBEVbBQX24szALcyDvMRh. Если я использую секретный ключ, он работает из pythonanywhere ( иногда ).Это заставляет меня поверить, что это какая-то проблема форматирования с : в токене.

Так что теперь вопрос в том, как отформатировать его для правильной работы.

1 Ответ

0 голосов
/ 16 мая 2018

Я не думаю, что mqtt будет работать с бесплатного аккаунта в PythonAnywhere. Бесплатные аккаунты могут подключаться только через прокси, используя http (s) к определенному белому списку сайтов. Если где-то есть мост http-mqtt, вы можете использовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...