树莓派作为MQTT代理、订阅者或发布者

3

场景:我有一个本地网络,连接了一些设备,因此我希望通过MQTT协议从Android应用程序发送命令到树莓派,以控制这些连接的设备,那么我能否将树莓派用作代理和客户端(发布者/订阅者)。

答案:是的,您可以在树莓派上安装MQTT代理软件,并将其配置为同时充当代理和客户端。例如,您可以使用Mosquitto代理软件。在树莓派上安装Mosquitto后,您可以设置它作为代理并使用它来传输命令。您还可以使用MQTT客户端库将树莓派配置为发布者和订阅者,以便接收和发送命令。

最初的回答:

您可以在树莓派上安装MQTT代理软件,并将其配置为同时充当代理和客户端。例如,您可以使用Mosquitto代理软件。在树莓派上安装Mosquitto后,您可以设置它作为代理并使用它来传输命令。您还可以使用MQTT客户端库将树莓派配置为发布者和订阅者,以便接收和发送命令。


1
这个问题的提问似乎没有任何尝试解决问题的迹象。StackOverflow希望你首先尝试解决自己的问题,因为你的尝试可以帮助我们更好地理解你的需求。请编辑问题以展示你已经尝试过的内容,以便说明你在一个最小、完整和可验证的示例中遇到了具体的障碍。有关更多信息,请参阅:https://stackoverflow.com/help/how-to-ask - undefined
1个回答

3

是的。您可以在同一台树莓派上运行代理和客户端。

import time
import paho.mqtt.client as paho
#broker="broker.hivemq.com"
broker="iot.eclipse.org"
#define callback
def on_message(client, userdata, message):
    time.sleep(1)
    print("received message =",str(message.payload.decode("utf-8")))

client= paho.Client("client-001") #create client object
#client1.on_publish = on_publish #assign function to callback
#client1.connect(broker,port) #establish connection
#client1.publish("house/bulb1","on")
######Bind function to callback
client.on_message=on_message
#####
print("connecting to broker ",broker)
client.connect(broker)#connect
client.loop_start() #start loop to process received messages
print("subscribing ")
client.subscribe("house/bulb1")#subscribe
time.sleep(2)
print("publishing ")
client.publish("house/bulb1","on")#publish
time.sleep(4)
client.disconnect() #disconnect
client.loop_stop() #stop loop

http://www.steves-internet-guide.com/into-mqtt-python-client/
http://www.steves-internet-guide.com/python-mqtt-publish-subscribe/

以上链接可以直接带您到解决方案。

1
这基本上是一个只有链接的答案,一旦链接失效就变得无用了。 - undefined
只是添加代码并不能真正改进答案,因为它没有解释为什么它有用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接