物联网:ThingsBoard.io

物联网 MQTT ESP8266 阿杜伊诺
2021-06-28 12:45:47

我正在参与一个物联网项目。我必须设计仪表板。我在设置仪表板时遇到困难。我正在使用thingsboard.io我想知道如何使用esp8266和mqtt通过旋钮小部件(数字数据)将数据从thingsboard服务器发送到arduino并将该数据发送回thingsboard仪表小部件。就像我想发送和接收数据一样。我在 arduino 代码中有一些问题。如果有人可以帮忙。那将不胜感激。谢谢

我在 java 脚本中有代码用于执行相同的任务,但正在命令提示符下工作。有人可以将此代码转换为 C 以用于 arduino 和 esp8266。

var mqtt = require('mqtt');
const ACCESS_TOKEN = process.argv[2];

var client  = mqtt.connect('mqtt://demo.thingsboard.io',{
    username: ACCESS_TOKEN
});

var controlValue,
    realValue = 25;

client.on('connect', function () {
    console.log('connected');
    client.subscribe('v1/devices/me/rpc/request/+');
    console.log('Uploading temperature data once per second...');
    setInterval(publishTelemetry, 1000);
});

client.on('message', function (topic, message) {
    console.log('request.topic: ' + topic);
    console.log('request.body: ' + message.toString());
    var requestId = topic.slice('v1/devices/me/rpc/request/'.length),
    messageData = JSON.parse(message.toString());
    if (messageData.method === 'getValue') {
        if(controlValue === undefined) {
            client.publish('v1/devices/me/rpc/response/' + requestId, JSON.stringify(realValue));
        } else {
            client.publish('v1/devices/me/rpc/response/' + requestId, JSON.stringify(controlValue));
        }
    } else if (messageData.method === 'setValue') {
        controlValue = messageData.params;
        console.log('Going to set new control value: ' + controlValue);
    } else {    
        client.publish('v1/devices/me/rpc/response/' + requestId, message);
    }
});

function publishTelemetry() {
    emulateTemperatureChanging();
    client.publish('v1/devices/me/telemetry', JSON.stringify({temperature: realValue}));
}

function emulateTemperatureChanging() {
    if(controlValue !== undefined) {
        if(controlValue >= realValue) {
            realValue += (Math.random() + (Math.abs(controlValue - realValue)/30));
        } else {
            realValue -= (Math.random() + (Math.abs(controlValue - realValue)/30));
        }
    }
}
0个回答
没有发现任何回复~