如何解决树莓派上 python 中的 paho 循环问题
我正在尝试编写一个 python 脚本(用于 Raspbian),它在按下按钮时发送 mqtt 消息,并在收到 mqtt 消息时更改 LED 的开/关。
我可以放心发送,我在 4 个 RPi 上的脚本结构是一样的;
import
set variables
while true:
do stuff endlessly
但是,我无法在此结构中为 paho 接收运行基本脚本。
我尝试遵循 paho 指南,但无法使其适应无限循环应用程序。
为什么我收不到 mqtt 消息?我与 2 个终端交叉检查;蚊子和酒吧,它们肯定是在网络上的其他地方发送/接收的。
编辑; 新的 on_connect 回调每 2 秒显示一次“已连接”,但脚本仍不接收/打印 mqtt 消息。当我按下按钮时它仍然会发送它们。
尝试在 Docker 中启动不同的 MQTT 代理,没有任何区别。
编辑3;作品! :D 最后我测试我一定没有醒着,并且在 on_connect 回调中注释掉了订阅行。 我还从我从教程中复制的 mqtt.Client 内容中删除了“P1”。
可以愉快地确认,它发送和接收mqtt消息。现在我可以集成到我更大的脚本中。感谢hardlib
新代码是这样的;
import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages/paho/mqtt')
import os
import time
import paho.mqtt.client as mqtt
from gpiozero import Button
from time import sleep
def on_message(client,userdata,message):
print("message received ",str(message.payload.decode("utf-8")))
print("message topic=",message.topic)
print("message qos=",message.qos)
print("message retain flag=",message.retain)
def on_connect(client,flags,rc):
print("Connected with result code "+str(rc))
client.subscribe("button")
button = Button(25)
broker_address="192.168.1.10"
client = mqtt.Client()
client.on_message=on_message
client.on_connect=on_connect
client.connect(broker_address,1883,60)
#client.subscribe("button")
client.loop_start()
while 1:
if button.is_pressed:
print("button pressed")
client.publish("button","ON",1)
sleep(0.1)
sleep(0.1)
print("*")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。