Эй, ребята. Поэтому я относительно новичок в Python и новичок с MQTT. Итак, я пытаюсь сделать простую связь двух программ через MQTT. Одной из программ является издателем:Контрольная программа с MQTT и Python
import paho.mqtt.client as mqtt
import sys, tty, termios
## Publisher reads a keyboard input
def getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd,termios.TCSADRAIN, old_settings)
return ch
while True:
##Publisher connects to MQTT broker
mqttc= mqtt.Client("python_pub")
mqttc.connect("iot.eclipse.org", 1883)
char= getch()
mqttc.publish("Labbo/control", str(char))
mqtt.Client()
Таким образом, в основном издатель читает ввод ключа и отправляет его брокер. И клиентская программа должна прочитать ключевой инсульт и реагировать соответствующим образом:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("Labbo/control")
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
## v v PROBLEM LINE v v ##
char=str(msg.payload)
##^^ PROBLEM LINE^^ ##
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("iot.eclipse.org", 1883, 60)
##The program just needs to close itself upon entering "x" on the Publisher
while True:
if char=="x":
break
Это простая тестовая программа, но у меня были много неприятностей пытаются «прочитать» полезную нагрузку MQTT.
Издатель код должен также назвать mqttc. start_loop() перед входом в то время True: loop, чтобы обеспечить отправку сообщений keep-alive, и что большие публикации могут быть обработаны (на самом деле не требуются в этом случае, но в хорошем виде) – hardillb
Shazin, мой человек, где правильно. Спасибо чувак. Я люблю тебя. – GonzaloGo