有没有办法检查客户端是否仍连接到MQTT代理?
就像是
if client.isConnected(): # for example
# if True then do stuff
Run Code Online (Sandbox Code Playgroud)
编辑:有一个实例,尽管我的Raspberry Pi仍在运行(从它的外观,代码仍在显示更新的结果),但它停止从客户端接收消息。
这是代码,因为我可能做错了什么:
client = mqtt.Client()
client.connect(address, 1883, 60)
while True:
data = getdata()
client.publish("$ahmed/",data,0)
time.sleep(0.2)
Run Code Online (Sandbox Code Playgroud)
事实是我不在,所以我什至不确定为什么停下来!只有重新启动代理后,代理才会重新开始接收。
这是我的第一个问题,实际上是我第一次尝试这个问题但是我读了问题的规则,我希望我的问题符合所有问题.
我有一个针对我的算法主题的项目,它是为dijkstra最短路径algorthim设计一个gui.我之所以选择使用python是因为它是一种我想掌握的语言.我实际上已经尝试了一个多星期,而且我一直面临着麻烦.但无论如何这很好玩:)!
我选择以这种方式将我的有向图表示为字典:
g= {'A': {"B": 20, 'D': 80, 'G' :90}, # A can direct to B, D and G
'B': {'F' : 10},
'F':{'C':10,'D':40},
'C':{'D':10,'H':20,'F':50},
'D':{'G':20},
'G':{'A':20},
'E':{'G':30,'B':50},
'H':None} # H is not directed to anything, but can accessed through C
Run Code Online (Sandbox Code Playgroud)
所以关键是顶点,值是链接的vetrices和权重.这是一个图形的例子,但我打算要求用户输入他们自己的图形细节并检查每个节点之间的最短路径[开始 - >结束]然而问题是我甚至不知道如何访问内部字典,所以我可以在内部参数上工作,我尝试了很多这样的方法:
for i in g:
counter = 0
print g[i[counter]] # One
print g.get(i[counter]) # Two
Run Code Online (Sandbox Code Playgroud)
但是两者都给了我相同的输出:(注意我无法真正访问并使用内部参数)
{"B": 20, 'D': 80, 'G' :90}
{'F' : 10}
{'C':10,'D':40}
{'D':10,'H':20,'F':50}
{'G':20}
{'A':20}
{'G':30,'B':50}
None
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,你能帮助我如何访问内部词典,以便我可以开始研究算法本身.非常感谢,并感谢阅读.
我计划创建一个非常简单的家庭\办公室监控系统,我将能够在 Raspberry Pi 上使用 Mosquitto 代理连接传感器。传感器将向经纪人发布数据,我将能够作为订阅者查看这些数据。
我有一个发布者,它定期向同一 LAN 网络中家里的 Raspberry Pi(Mosquitto 代理)发布消息。但我想将位于我办公室的传感器连接到同一个经纪人,因此只能在线连接。
我目前面临的问题是我想将传感器连接到 Raspberry Pi,但由于硬件的限制,我需要通过互联网来完成。如何连接传感器以从 LAN 网络外部发布到驻留在 Raspberry Pi 中的代理?我刚刚检查了一下,我的公共 IP 地址下面可能有数千个地址,我如何知道哪一个是我并连接到它?!
我正在尝试使用 与直接连接到我的 PC 的 z1 mote 进行通信pyserial。我想要做的是写入节点,并在收到命令后,节点应回复当前的温度读数,例如。
Python端可以是这样的(iinm)
import serial
ser = serial.Serial(0)
ser.write("hello") # the mote will receive the message and do something
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在使用 C 的 z1 mote 端接收消息。是否有特殊的方法来接收命令,还是我必须创建自己的方法?
任何提示和提示都将不胜感激。