2017-03-13 20 views
0

マシンセンサーからデータを取得しています。スクリプトとして、私はそれをデータベースに送ることができるように、異なるKW番号が必要です。私は、新しい番号の値が最後の番号(同じ番号)と等しい場合は「同じ番号」を、それが変更されている場合は変数番号の値を出力します。 forever_loopならどうしたらいいですか?私はすでにこの質問について尋ねましたが、それはmqtt forever_loopなしでwhileループを使用していたときでしたが、このスクリプトでは使用できません。あなたがそれぞれの新しいメッセージでそれをテストできるようにPython、mqttで値が変更されたかどうかを確認する方法

import paho.mqtt.client as mqtt 
import json 
import pymysql.cursors 

def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    client.subscribe("QQ/QQ/QQQ/QQQ") #Just some random characters, I changed it 


def on_message(client, userdata, msg): 
    arv=int(float(msg.payload.split(' ')[0])) 
    print(msg.payload.split(' ')[0])  

    if (arv>arv+1 or arv>arv-1): 
     print("Same number {0}".format(arv)) 
    else: 
     print(" Number is {0} ".format(arv)) 


client = mqtt.Client() 
client.on_connect = on_connect 
client.on_message = on_message 
client.username_pw_set("blank", password="blank") 
client.connect("local", 0, 0) 
client.loop_forever() 



Output: 

6.12 
Same number 6 
6.91 
Same number 6 
6.38 
Same number 6 
5.44 
Same number 5 
6.75 
Same number 6 
6.50 
Same number 6 
6.15 
Same number 6 
5.67 
Same number 5 
5.80 
Same number 5 
6.21 
Same number 6 
5.21 
Same number 5 
6.25 
Same number 6 
6.66 
Same number 6 
5.14 
Same number 5 
+0

あなたが投稿したコードは 'on_message'関数定義 – hardillb

+0

誤植が欠落している、それを修正! – Somepub

答えて

1

ちょうどグローバル変数に最後の値を格納します。

import paho.mqtt.client as mqtt 
import json 
import pymysql.cursors 

lastValue = 0 

def on_connect(client, userdata, flags, rc): 
    print("Connected with result code "+str(rc)) 
    client.subscribe("QQ/QQ/QQQ/QQQ") #Just some random characters, I changed it 


def on_message(client, userdata, msg): 
    global lastValue 
    arv=int(float(msg.payload.split(' ')[0])) 
    print(msg.payload.split(' ')[0])  

    if arv == lastValue: 
     print("Same number {0}".format(arv)) 
    else: 
     print(" Number is {0} ".format(arv)) 

    lastValue = arv 

client = mqtt.Client() 
client.on_connect = on_connect 
client.on_message = on_message 
client.username_pw_set("blank", password="blank") 
client.connect("local", 0, 0) 
client.loop_forever() 
+0

"NameError:グローバル名 'lastValue'が定義されていません" – Somepub

+0

最後に 'lastValue = 0'行を追加するのを忘れましたか? – hardillb

+0

はい、私は時々sooの盲目的で愚かです。しかし、あなたのanwserのためにありがとう、あなたは私を助けた:) – Somepub

関連する問題