2016-05-16 41 views
0

我正在嘗試關注Coursera上的IBM Bluemix課程。IBM Bluemix IotFoundation:Iotfclient處於脫機狀態。重試連接

  1. 我的steup:作爲註冊客戶端連接到Watson IoT Platform的設備(客戶端)的樹莓派。它每秒發射一串連續的隨機數。
  2. 我在IBM Bluemix上部署了我的自定義Nodejs應用程序(Coursera上提供的代碼)。

    var express = require('express'); 
    
    var app = express(); 
    var Client = require('ibmiotf'); 
    var appConfig; 
    
    var serverPort = process.env.VCAP_APP_PORT || 3000; 
    var serverHost = process.env.VCAP_APP_HOST || 'localhost'; 
    
    if (process.env.VCAP_SERVICES) { 
        var env = JSON.parse(process.env.VCAP_SERVICES); 
    appConfig = { 
           'org' : env["iotf-service"][0].credentials.org, 
           'id' : 'dna-nodeserver', 
           'auth-key' : env["iotf-service"][0].credentials.apiKey, 
           'auth-token' : env["iotf-service"][0].credentials.apiToken 
           } 
    } else { 
        appConfig = require('./application.json'); 
    } 
    
    var responseString = 'Hello Coursera'; 
    
    var appClient = new Client.IotfApplication(appConfig); 
    
    app.get('/', function(req, res) { 
        res.send(responseString); 
    }); 
    var server = app.listen(serverPort, serverHost, function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('Listening at http://%s:%s', host, port); 
    
    appClient.connect(); 
    
    appClient.on('connect', function() { 
        appClient.subscribeToDeviceEvents('raspberrypi'); 
    }); 
    
    appClient.on("error", function (err) { 
        console.log("Error : "+err); 
    }); 
    
    appClient.on('deviceEvent', function(deviceType, deviceId, eventType, format, payload) { 
    
        responseString = "Device Event from :: "+deviceType+" : "+deviceId+" of event "+eventType+" with payload : "+payload; 
    
        console.log("Device Event from :: "+deviceType+" : "+deviceId+" of event "+eventType+" with payload : "+payload); 
    }); 
    
    }); 
    

,我面對顯示的問題是下面的屏幕截圖:

Error

另外,由於我從覆盆子PI接收連續事件...的網頁(由res.send(responseString)服務)應該自動顯示更改...而不需要我手動刷新頁面。但是,不是似乎發生。

任何幫助,將不勝感激。謝謝!

回答

0

您可能有多個應用程序正在偵聽事件。在Bluemix上停止以前的節點紅色應用程序。相反,只需運行上面顯示的Nodejs應用程序。

0

舊線程,但感謝阿列克謝指引我在正確的方向。

在我的情況下,當生產版本仍在IBM Cloud中運行時,測試本地版本的事件代理的行爲相同。

可以有這樣多的聽衆,如果你產生一個額外的API密鑰,節省憑據組,檢查一個合適的環境變量,看哪一組提出申請。

在我的應用程序,我在節點的功能包裝這些:

function getEventBrokerCredentials(siteCode) { 

    var codeToCredentials = { 
     'REMOTE_BROKER': { 
      'orgId': 'abcde', 
      'id': 'ThisIsABroker', 
      'apikey': '111111111111111', 
      'authtoken': '2222222222222' 
     }, 
     'LOCAL_BROKER': { 
      'orgId': 'abcde', 
      'id': 'ThisIsALocalBroker', 
      'apikey': '3333333333333333', 
      'authtoken': '4444444444444' 
     } 
    }; 

    return codeToCredentials[siteCode]; 
} 


var brokerCredentials = getEventBrokerCredentials(process.env.BROKER_HOST || 'REMOTE_BROKER'); 


var appClient = new IOTClient.IotfApplication({ 
    'org': brokerCredentials.orgId, 
    'id': brokerCredentials.id, 
    'auth-key': brokerCredentials.apikey, 
    'auth-token': brokerCredentials.authtoken 
}); 

然後用

BROKER_HOST=LOCAL_BROKER nodemon 

本地測試和開發。

這個主題當然有很多變化。

相關問題