2016-12-01 1 views
3

C.H.I.P.s(Think Raspberry Pi)を使ってプロジェクトに取り掛かりました。スレーブからマスターボードに情報を無線で送る必要があります。私はPahoを私のMqttクライアントとして使用しており、私のブローカーとしてMosquittoを使用しています。私の問題は、スレーブボードに接続されたボタンの1つを押してメッセージを送信するときですが、マスターボードが受信すると、 "b" 'という形式で表示されているようです。たとえば、メッセージを「オフ」に送信すると、msg.payloadを出力すると「b'off」という文字が印刷されます。これは問題を引き起こしています。なぜなら、マスターボードからのコマンドを実行するためにメッセージを比較することができないからです。ここでPython-私のPaho Mqttメッセージが送信時よりも何故違うのですか?

は私の奴隷ボードコード:

import paho.mqtt.client as paho 
import CHIP_IO.GPIO as GPIO 
import time 

GPIO.cleanup() 
GPIO.setup("XIO-P0", GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 
GPIO.setup("XIO-P2", GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 

client = paho.Client() 
client.connect("172.20.0.1", 1883) 

print ("CONNECTED") 

while True: 
    if (GPIO.input("XIO-P0") == False): 
    print ("Button P0 Pressed") 
    client.publish('tipup', 'flag') 
    time.sleep(1) 

    if (GPIO.input("XIO-P2") == False): 
    print ("Button P2 Pressed") 
    client.publish('tipup', 'off') 
    time.sleep(1) 

そしてここでは、私のマスターボードコード(ブローカー)

import paho.mqtt.client as paho 
import CHIP_IO.GPIO as GPIO 

GPIO.cleanup() 
GPIO.setup("XIO-P2", GPIO.OUT) 
GPIO.output("XIO-P2", GPIO.HIGH) 

def on_connect(client, userdata, flags, rc): 
    print("Connected with result code " + str(rc)) 
    client.subscribe("tipup") 
    print("Subscribed") 

def on_message(client, userdata, msg): 
    print ("Message Received") 
    print (str(msg.payload)) 

    if (msg.payload == 'flag'): 
    print("Went through 'flag' if statement") 
    print("Turning on LED") 
    GPIO.output("XIO-P2", GPIO.LOW) 

    if (msg.payload == 'off'): 
    print ("Turning off LED") 
    GPIO.output("XIO-P2", GPIO.HIGH) 

client = paho.Client() 

client.on_connect = on_connect 
client.on_message = on_message 

client.connect("172.20.0.1", 1883) 

client.loop_forever() 

GPIO.cleanup() 

である私は私のマスターでSTR(msg.payload)を印刷するときに問題が発生しましたボードコード。私は、これらの両方がうまくコンパイルされ、正常に実行されることを付け加えておきます。それは、なぜ私がon_message()にあるif文のいずれかを通過していない理由を見つけたときに気づいた問題です。

+0

まず、スレーブボードコードのwhileループに 'client.loop()'を追加する必要があります。また、mosquitto_subを使用して公開されているものを確認するとどうなりますか? – hardillb

+0

@hardillb:私は**正確**同じ問題があるので、私はその質問に答えることができます。メッセージのペイロードはすべて「b」と「 ''」(たとえば「b'msg」)で囲まれています。しかし、公開されているものを見るためにmosquitto_subを使用している場合、それは 'msg'だけなので、paho-mqttと関係があります。 – user128216

答えて

関連する問題