일부 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 문 중 하나를 사용하지 않는 이유를 알아 냈을 때 알아 차린 문제이다.
먼저 슬레이브 보드 코드의 while 루프에'client.loop()'를 추가해야한다. 또한 mosquitto_sub를 사용하여 게시되는 내용을 확인하면 어떻게됩니까? – hardillb
@ hardillb : 나는 ** 정확한 ** 같은 문제가 있기 때문에 그 질문에 대답 할 수 있습니다. 내 메시지 페이로드는 모두 'b'및 ''(예 :'b'msg ')로 묶입니다. 그러나 mosquitto_sub를 사용하여 게시되는 내용을 볼 때 이는 단지'msg'이므로 paho-mqtt와 관련이 있습니다. – user128216