ThingsBoard使用笔记(2)模拟传感器发送MQTT并显示监控图表

书接上一篇博文

ThingsBoard使用笔记(1) 安装

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

好了开始吧

1.使用默认系统管理员登陆系统创建租户管理员

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

2.使用租户管理员创建监控设备

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

3.创建仪表盘

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

  •  添加仪表板部件->添加实体

  • 添加别名,类型选择设备类型->然后就会出现你刚刚创建的设备,选择上保存

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

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

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

5.模拟给监控设备发送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
  • 执行效果

 

 

6.查看最终效果

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值