2016-06-15 72 views
0

我是mqtt和python系统的新手,我试图在python中执行一些繁重的计算并将结果发送到node.js服务器。python和node.js之间的mqtt只发送一条消息

每次运行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

您对控制和输出都使用相同的主题。

所以接收消息Start后,你的代码发布1main/app话题,这个值立刻由Python代码on_message接收并设置message1

所以,下次一轮循环message1如此没有一条if语句匹配。

+0

谢谢!我为发送值创建了不同的主题,现在我可以控制程序的流程。 – macvg