我正在尝试通过node.js将传感器数据发送到artik云。 (使用Web套接字和串行端口)。但其发送为空。有人知道原因吗?我只是从教程中复制了代码,所以没有语法错误。

var webSocketUrl = "wss://api.artik.cloud/v1.1/websocket?ack=true";
var device_id = "####";
var device_token = "#####";

var isWebSocketReady = false;
var ws = null;
var serialport = require("serialport");


var portName = 'COM5';
var sp= new serialport.SerialPort(portName, {
    baudRate: 9600,
    parser: serialport.parsers.readline("\r\n")

});
var WebSocket = require('ws');

/**
 * Gets the current time in millis
 */
function getTimeMillis(){
    return parseInt(Date.now().toString());
}

/**
 * Create a /websocket bi-directional connection
 */
function start() {
    //Create the websocket connection
        isWebSocketReady = false;
    ws = new WebSocket(webSocketUrl);
    ws.on('open', function() {
                console.log("Websocket connection is open ....");
        register();
    });
    ws.on('message', function(data, flags) {
                console.log("Received message: " + data + '\n');
    });
    ws.on('close', function() {
                console.log("Websocket connection is closed ....");
    });
}

/**
 * Sends a register message to the websocket and starts the message flooder
 */
function register(){
        console.log("Registering device on the websocket connection");
    try{
        var registerMessage = '{"type":"register", "sdid":"'+device_id+'", "Authorization":"bearer '+device_token+'", "cid":"'+getTimeMillis()+'"}';
                console.log('Sending register message ' + registerMessage + '\n');
        ws.send(registerMessage, {mask: true});
                isWebSocketReady = true;
    }
    catch (e) {
        console.error('Failed to register messages. Error in registering message: ' + e.toString());
    }
}

/**
 * Send one message to ARTIK Cloud
 */
function sendData(temperature){
    try{
     //   ts = ', "ts": '+getTimeMillis();
            var data = {
                "temp": temperature

               };
        var payload = '{"sdid":"'+device_id+'", "data": '+JSON.stringify(data)+', "cid":"'+getTimeMillis()+'"}';
        console.log('Sending payload ' + payload);
        ws.send(payload, {mask: true});
    } catch (e) {
        console.error('Error in sending a message: ' + e.toString());
    }
}

/**
 * All start here
 */


start(); // create websocket connection

sp.on("open", function () {
    sp.on('data', function(data) {
            if (!isWebSocketReady){
                console.log("WebSocket is not ready. Skip sending data to ARTIK Cloud (data:" + data +")");
                return;
            }
            console.log("Serial port received data:" + data);
            //var parsedStrs = data.split(",");
            var temperature = parseInt(data);




            sendData(temperature);
    });
});

最佳答案

如果您参考我们的第一个物联网示例​​:
https://developer.artik.cloud/documentation/tutorials/your-first-iot-device.html

node.js样本从温度传感器发送值。作为依赖,它需要连接的Arduino,Raspberry Pi和位于右脚的DHT温度传感器。如果看到“将数据发送到ARTIK Cloud之前为空”,则说明您没有从传感器获取任何值。

特别是,在发生任何分析错误的情况下,输出并打印以下功能来控制“温度”值:
函数sendData(温度)// ...

如果您需要其他信息,请给我们发送电子邮件至[email protected]

谢谢!

关于json - 传感器数据未上传到artik云上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43044673/

10-10 01:25