【问题标题】:Using mqtt paho for Python in a raspberry pi在树莓派中为 Python 使用 mqtt paho
【发布时间】:2014-12-24 05:12:04
【问题描述】:

我正在尝试使用 raspbian 中的 python 2.7 连接到消息代理,如下所示:

import paho.mqtt.client as paho


host="messagesight.demos.ibm.com"
port=1883

def on_connect(pahoClient, obj, rc):
# Once connected, publish message
        print "Connected Code = %d"%(rc)
        client.publish("prueba/123", "Hello World", 0)


def on_log(pahoClient, obj, level, string):
        print string

def on_publish(pahoClient, packet, mid):
# Once published, disconnect
        print "Published"
        pahoClient.disconnect()

def on_disconnect(pahoClient, obj, rc):
        print "Disconnected"

# Create a client instance
client=paho.Client()

# Register callbacks
client.on_connect = on_connect
client.on_log = on_log
client.on_publish = on_publish
client.on_disconnnect = on_disconnect

#Set userid and password
client.username_pw_set(userID, password)

#connect
x = client.connect(host, port, 60)

client.loop_forever()

当我运行脚本时,我收到以下错误:

Traceback(最近一次调用最后一次):文件“ejemlo.py”,第 27 行,在 client=paho.Client() 文件“/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py”,行 410,在 初始化 self._sockpairR,self._sockpairW = _socketpair_compat() 文件“/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py”,行 255,在 _socketpair_compat listensock.bind(("localhost", 0)) 文件“/usr/lib/python2.7/socket.py”,第 224 行,在 meth return getattr(self._sock,name)(*args) socket.error: [Errno 99] 无法分配请求的地址

我该如何解决?

【问题讨论】:

  • 写这个感觉有点奇怪,但是你的 Pi 上支持 IPv4 吗?
  • 或者您的“lo”接口可能已关闭。试试ifconfig lo down; ifconfig lo up

标签: python-2.7 mqtt paho


【解决方案1】:

我很快就厌倦了你的代码,它正在发布到messagesight.demos.ibm.com 很好。

我唯一做的就是注释掉用户 ID、密码。

#client.username_pw_set(userID, password)

您是否正确安装了 Paho Python 客户端,这也是一个很好的例子。 http://www.eclipse.org/paho/clients/python/

【讨论】:

  • 是的,Paho Python 客户端已正确安装...它仍然无法正常工作。我们仍然遇到同样的问题“无法分配请求的地址”。您的 client.py 文件的内容是什么?你能找到第 260 行 "listensock.bind(("127.0.0.1", 0))" 吗?谢谢!
  • 能否提供ifconfig -a的输出
  • @maria 听起来像其他人所说的那样,chi network config。
  • 谢谢,你是对的!问题是 /etc/network/interfaces 文件,它没有正确配置...
  • 对于其他人来说,@MariaBorbones 和@Matt 指的是对问题的评论。问题是lo 或环回接口已关闭。您可以使用sudo ifconfig lo up 启用它
猜你喜欢
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
相关资源
最近更新 更多