我试图在循环中不断运行以下代码。但是下面的代码只运行一次,并且只有一条消息条目。运行paho mqtt客户端loop_forever
我想在on_message函数内部执行的操作是使用python apscheduler运行一个cron任务。
def on_message(mqttc, obj, msg):
global val
val = str(msg.payload)
print val
dow = val[0:3]
print dow
hr = val[4:6]
print hr
min = val[7:9]
print min
status = val[10:11]
print status
def plugON():
publish.single("plug/status","0", hostname="localhost")
def plugOFF():
publish.single("plug/status","1", hostname="localhost")
def cronon():
print "cron on"
def cronoff():
print "cron off"
if status == '0':
sched.add_job(plugON, trigger='cron', year='*', month='*', day='*', week='*', day_of_week=dow, hour=hr, minute=min, id='plugon')
sched.add_job(cronon, trigger='cron', year='*', month='*', day='*', week='*', day_of_week=dow, hour=hr, minute=min)
if status == '1':
sched.add_job(plugOFF, trigger='cron', year='*', month='*', day='*', week='*', day_of_week=dow, hour=hr, minute=min, id='plugoff')
sched.add_job(cronoff, trigger='cron', year='*', month='*', day='*', week='*', day_of_week=dow, hour=hr, minute=min)
sched.start()
的MQTT连接脚本:在执行过程中
mqttc = mqtt.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
mqttc.connect("localhost", 1883, 60)
mqttc.subscribe("plug/#", 0)
#mqtt loop
mqttc.loop_forever()
,它连接到本地主机,需要一个单一的入口。在发送诸如星期四:05:47:0之后,等待5:47运行plugON/plugOFF。在5:47它运行该功能并与本地主机断开连接。
如何让我的代码接受另一个条目并继续循环?
请详细说明你的问题没有正确回答 – 2114L3