代码之家  ›  专栏  ›  技术社区  ›  StuartDTO

树莓皮中的CloudMQTT python

  •  0
  • StuartDTO  · 技术社区  · 6 年前

    我正在尝试用我的Raspberry pi创建一些东西,如果我执行一个操作,我会向CloudMQTT发送一个MQTT消息,这样监听它的人就知道该做什么了。

    用户1按下按钮RBP知道它,并向CloudMQTT发送一个MQTT消息,另一个RBP检测到用户1按下了一个按钮,以便用户2知道何时按下按钮。

    我所做的是:

    import paho.mqtt.client as mqtt
    
    def on_connect(client, userData, flags, rc):
        print("Connected with result code " + str(rc))
        client.subscribe("MyInstanceName/topic")
    
    def on_message(client,userdata,msg):
        print(msg.topic+ " "+ str(msg.payload))
        if(msg.payload == "button"):
            print("something")
        if(msg.payload == "button2"):
            print("something")
    
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.username_pw_set("user","password")
    client.connect("m21.cloudmqtt.com",port,60)
    client.loop_forever()
    

    Users and ACL 因为我只需要2个用户,所以我创建了一个带有主题的User1,还可以为User2读/写

    我不知道怎么出版,因为我有:

    import paho.mqtt.publish as publish
    
    publish.single("MyInstanceName/topic","button",hostname="m21.cloudmqtt.com")
    publish.single("MyInstanceName/topic","button2",hostname="m21.cloudmqtt.com")
    print("Done") 
    

    Traceback (most recent call last):
      File "mqtt_publisher.py", line 3, in <module>
        publish.single("MyInstanceName/topic","button",hostname="m21.cloudmqtt.com")
      File "/Library/Python/2.7/site-packages/paho/mqtt/publish.py", line 223, in single
        protocol, transport)
      File "/Library/Python/2.7/site-packages/paho/mqtt/publish.py", line 159, in multiple
        client.connect(hostname, port, keepalive)
      File "/Library/Python/2.7/site-packages/paho/mqtt/client.py", line 839, in connect
        return self.reconnect()
      File "/Library/Python/2.7/site-packages/paho/mqtt/client.py", line 962, in reconnect
        sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 575, in create_connection
        raise err
    socket.error: [Errno 61] Connection refused
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   hardillb    6 年前

    如果你看看 doc 对于 publish.single 函数,您将看到它可以接受一个名为 auth 其中包含连接到代理的用户名/密码

    认证

    auth={用户名:,密码:}

    用户名是必需的,密码是可选的,如果 未提供。