我是mqtt和python系统的新手,我正在尝试在python中进行一些繁重的计算,并将结果发送到node.js服务器。
每次运行node.js脚本时,我只得到一个结果。这是我的简单 代码:
simple_mqtt.py
message = "Hello"
x=0
def add():
global x
x = x + 1
def on_publish(client, userdata, mid):
print("mid: "+str(mid))
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("main/app")
def on_message(client, userdata, msg):
global message
message = msg.payload
client = paho.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
client.connect("192.168.2.4", 1883)
client.loop_start()
while True:
if message=="Start":
print message
add()
client.publish("main/app",x)
elif message=="Stop":
print message
client.publish("main/app","Ended")
time.sleep(1)
和node.js:
var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://192.168.2.4:1883');
client.on('connect', function () {
client.subscribe('main/app');
client.publish('main/app', 'Start');
});
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString());
});
在发送消息“停止”之前,我必须修改以获得来自python的连续响应?
答案 0 :(得分:0)
您对控件和输出使用相同的主题。
因此,在收到带有Start
的消息后,您的代码会将1
发布到main/app
主题,并且on_message
中的python代码立即收到此消息并设置{{1转到message
因此,下一轮循环1
为message
,因此没有if语句匹配。