thingsboard 演示地址:https://www.iotschool.com/topics/8
1.参考 进行安装
使用如下代码 emulator.js 换掉服务器地址,以及使用 dht11_demo_token,这样登陆后,演示的 dashboard 就可以看到效果了。
//requires node.js and mqtt library installed.
var mqtt = require('mqtt');
const thingsboardhost = "your host address";
// reads the access token from arguments
// const accesstoken = process.argv[2];
const accesstoken = "dht11_demo_token";
const mintemperature = 17.5, maxtemperature = 30, minhumidity = 12, maxhumidity = 90;
// initialization of temperature and humidity data with random values
var data = {
temperature: mintemperature (maxtemperature - mintemperature) * math.random() ,
humidity: minhumidity (maxhumidity - minhumidity) * math.random()
};
// initialization of mqtt client using thingsboard host and device access token
console.log('connecting to: %s using access token: %s', thingsboardhost, accesstoken);
var client = mqtt.connect('mqtt://' thingsboardhost, { username: accesstoken });
// triggers when client is successfully connected to the thingsboard server
client.on('connect', function () {
console.log('client connected!');
// uploads firmware version as device attribute using 'v1/devices/me/attributes' mqtt topic
client.publish('v1/devices/me/attributes', json.stringify({"firmware_version":"1.0.1"}));
// schedules telemetry data upload once per second
console.log('uploading temperature and humidity data once per second...');
setinterval(publishtelemetry, 1000);
});
// uploads telemetry data using 'v1/devices/me/telemetry' mqtt topic
function publishtelemetry() {
data.temperature = gennextvalue(data.temperature, mintemperature, maxtemperature);
data.humidity = gennextvalue(data.humidity, minhumidity, maxhumidity);
client.publish('v1/devices/me/telemetry', json.stringify(data));
}
// generates new random value that is within 3% range from previous value
function gennextvalue(prevvalue, min, max) {
var value = prevvalue ((max - min) * (math.random() - 0.5)) * 0.03;
value = math.max(min, math.min(max, value));
return math.round(value * 10) / 10;
}
//catches ctrl c event
process.on('sigint', function () {
console.log();
console.log('disconnecting...');
client.end();
console.log('exited!');
process.exit(2);
});
//catches uncaught exceptions
process.on('uncaughtexception', function(e) {
console.log('uncaught exception...');
console.log(e.stack);
process.exit(99);
});
执行 node emulator.js,可以看到在发送数据给 tb。 源码地址
感谢:寒碧 原文: