2016-08-17 74 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); 
    } 
});