次のコードをループで連続して実行しようとしています。しかし、次のコードは1回だけ実行され、1つのメッセージエントリしか使用しません。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()
を、それは、localhostに接続して単一のエントリを取ります。 thu:05:47:0のようなものを送って、5:47までplugins/plugOFFを実行するのを待ちます。 5:47で、関数を実行し、ローカルホストとの接続を切断します。
コードを取得して別のエントリを取得し、ループを続けることはできますか?
してください詳細にスケジューラを起動しているモード