2016-12-01 1 views
3

일부 C.H.I.P.s (Think Raspberry Pi) 프로젝트를 사용하여 슬레이브에서 마스터 보드로 무선으로 정보를 보내야합니다. Paho를 Mqtt 클라이언트로 사용하고 있으며 Mosquitto를 내 브로커로 사용하고 있습니다. 내 문제는 내가 슬레이브 보드에 연결된 버튼 중 하나를 누르면 메시지가 전송되지만 마스터 보드가 받으면 "b" '형식으로 표시되는 것 같습니다. 예를 들어 메시지를 "off"로 보내면 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) 

그리고 여기 내 마스터에서 STR (msg.payload)를 인쇄 할 때 내 마스터 보드 코드 (브로커)

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() 

문제가 발생한다 보드 코드. 나는이 두 가지 컴파일 벌금을 잘 실행해야한다고 덧붙여 야한다. 그것은 on_message()에있는 if 문 중 하나를 사용하지 않는 이유를 알아 냈을 때 알아 차린 문제이다.

+0

먼저 슬레이브 보드 코드의 while 루프에'client.loop()'를 추가해야한다. 또한 mosquitto_sub를 사용하여 게시되는 내용을 확인하면 어떻게됩니까? – hardillb

+0

@ hardillb : 나는 ** 정확한 ** 같은 문제가 있기 때문에 그 질문에 대답 할 수 있습니다. 내 메시지 페이로드는 모두 'b'및 ''(예 :'b'msg ')로 묶입니다. 그러나 mosquitto_sub를 사용하여 게시되는 내용을 볼 때 이는 단지'msg'이므로 paho-mqtt와 관련이 있습니다. – user128216

답변

관련 문제