0

我正在开发一个 Web 应用程序来控制智能家居设备。我正在使用 Bluemix IoT Platform 对其进行设计,但是我遇到了一些我无法解决的问题。

我正在读取(currentRelay1)我的app.js文件中的一个变量,该变量是直接从 IoT 设备读取的。

var Client = require('ibmiotf');

var appClientConfig = {
    "org" : "rmpr4l",
    "id" : "dineriot",
    "domain": "internetofthings.ibmcloud.com",
    "auth-key" : "a-rmps4l-0uegqtl8mec",
    "auth-token" : "V8vB!?R3yES7dc@vtj"
};

var appClient = new Client.IotfApplication(appClientConfig);

appClient.connect();

appClient.on("connect", function () {

    appClient.subscribeToDeviceEvents();

});
appClient.on("deviceEvent", function (deviceType, deviceId, eventType, format, payload) {

    console.log("Device Event from :: "+deviceType+" : "+deviceId+" of event "+eventType+" with payload : "+payload);

    var json = JSON.parse(payload);
    currentRelay1 = json["C1"] * 1000;
    currentRelay2 = json["C2"] * 1000;

});

现在,我想共享此变量以在index.html文件中使用它来绘制图表。

我怎样才能做到这一点?

4

1 回答 1

0

由于这是您的服务器端代码,您需要将此数据发送到您的页面。或从服务器请求它的页面。不幸的是,这是一个非常大的话题:)

您可以设置一个服务器,它会像这样响应:

server.js //“数据”是你的变量

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write("data: " + data + '\n\n');
    res.end();
}).listen(8000);

client.js //包含在您的 .html 文件中

<script>
    function handler(e){
        if (e.target.readyState == 4 && e.target.status == 200) {
            //use "e.target.data" here
        }
    }

    var r = new XMLHttpRequest();
    r.open('GET', 'http://localhost:8000');
    r.addEventListener(readystatechange, handler);
    r.send();
</script>

进一步阅读: https ://nodejs.org/api/http.html https://www.w3schools.com/xml/xml_http.asp

于 2017-05-15T06:37:30.290 回答