2016-08-17 73 views
0

您好,我正尝试使用MQTT将Raspberry Pi中的mosquitto服务器从r-pi发送到窗口。如何连接覆盆子pi和windows7之间的mosquitto服务器?

在我使用mosquitto服务器之前,我使用了“test.mosquitto.org”它运行良好。

我的意思是它发送一些json数据到窗口。

然而,当我转身mosquitto服务器上,把一些错误信息是

opts.protocol = opts.protocol.replace, cannot read property 'replace' of null. 

你介意告诉我这是什么回事,并解决它的窗口R-PI?

这是Windows代码的JavaScript(I使用Python在覆盆子PI)

console.log("start"); 
    var mqtt = require('mqtt'); 
    var client = mqtt.connect('mqtt://test.mosquitto.org'); 
    var client = mqtt.connect('192.168.1.2'); // IP of main-broker 

    client.on('connect', function() { 
     client.subscribe('sensor_A'); 
    }); 

    client.on('message', function (topic, message) { 
     console.log("Topic: " + topic); 
     var parsedData = JSON.parse(message); 
     var dataLen = parsedData.length 
     console.log('dataLen: ' + dataLen); 

     for (var i = 0; i < dataLen; i++) { 
      var data = JSON.parse(parsedData[i]); 
      console.log('data ' + i + ': ' + data.time + ' ' + data.tem + ' ' + data.hum + ' ' + data.gas); 
} 
    }); 

我使用两个R-PI,其是子borker和主代理。

sub-broker只是发送一些传感器数据为json和main-broker控制json数据并再次发送为json到windows。

我觉得我的写作很难理解。

总之,我不想在r-pi中使用“test.mosquitto.org”,所以我把r-pi上的mosquitto服务器打开,把数据发送到窗口,但是窗口有错误。

回答

0

首先,您需要删除连接到test.mosquitto.org的行,因为这只会混淆事物。

其次,您错过了本地mosquitto实例的URL mqtt://。该错误指出它无法从url中找到协议。

console.log("start"); 
var mqtt = require('mqtt'); 
var client = mqtt.connect('mqtt://192.168.1.2'); // IP of main-broker 

client.on('connect', function() { 
    client.subscribe('sensor_A'); 
}); 

client.on('message', function (topic, message) { 
    console.log("Topic: " + topic); 
    var parsedData = JSON.parse(message); 
    var dataLen = parsedData.length 
    console.log('dataLen: ' + dataLen); 

    for (var i = 0; i < dataLen; i++) { 
     var data = JSON.parse(parsedData[i]); 
     console.log('data ' + i + ': ' + data.time + ' ' + data.tem + ' ' + data.hum + ' ' + data.gas); 
    } 
});