美文网首页web前端高级-vue
ThingsBoard模拟传感器发送MQTT并显示监控图表

ThingsBoard模拟传感器发送MQTT并显示监控图表

作者: 老鼠AI大米_Java全栈 | 来源:发表于2022-05-20 18:23 被阅读0次

本片主要是在ThingsBoard安装成功后,开始使用ThingsBoard,模拟一个物联网终端,每隔一秒通过MQTT发送数据到服务器;服务器接收到数据后动态显示在图表上。

创建租户管理员

  • 使用默认系统账户登陆:Systen Administrator: sysadmin@thingsboard.org / sysadmin
  • 租户->创建租户->创建租户管理员->使用租户管理员身份管理系统
image.png

创建监控设备

新增一个监控设备,复制访问令牌保存下来一会会用到


image.png

创建仪表盘

  • 仪表板库->创建仪表板


    image.png
  • 添加仪表板部件->添加实体
image.png
  • 添加别名,类型选择设备类型->然后就会出现你刚刚创建的设备,选择上保存


    image.png
  • 创建新部件->选择Charts类型


    image.png

绑定仪表盘和监控设备传递来的数据

image.png
  • 双击要使用的图表->点击添加数据源->选择之前创建的实体->选择具体数据字段(数据来源于下一步MQTT发送来的数据,可以先跳过)->添加

模拟给监控设备发送mqtt消息

在windows下使用node模拟发送mqtt数据

  • 首先安装mqtt

npm install mqtt

  • 编写emulator.js,模拟给服务器发送mqtt消息,注意修改ip
//Requires node.js and mqtt library installed.
var mqtt = require('mqtt');
 
const thingsboardHost = "127.0.0.1";
// Reads the access token from arguments
const accessToken = process.argv[2];
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);
});

指定 emulator.js

# CKbirnV1FPOebt0WfUNs 是访问令牌之前保存的
node emulator.js CKbirnV1FPOebt0WfUNs
  • 执行效果


    image.png

查看最终效果

image.png

相关文章

网友评论

    本文标题:ThingsBoard模拟传感器发送MQTT并显示监控图表

    本文链接:https://www.haomeiwen.com/subject/yzofprtx.html