ThingsBoard使用筆記(3)模擬控制遠程溫度傳感器

書接上篇博文

ThingsBoard使用筆記(1) 安裝

 ThingsBoard使用筆記(2)模擬傳感器發送MQTT並顯示監控圖表

1.模擬硬件監控設備給定時給服務端發送數據

  • 使用mqtt-temperature.js,發送監控數據到服務器,並接受服務器控制,注意修改IP
var mqtt = require('mqtt');
const ACCESS_TOKEN = process.argv[2];

var client  = mqtt.connect('mqtt://localhost',{
    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));
		}
	}
}
  • 執行監控數據發送 
# CKbirnV1FPOebt0WfUNs 是設備令牌
node mqtt-temperature.js CKbirnV1FPOebt0WfUNs

 

2.查看監控圖表,能看到一條直線

3.創建溫度控制部件

  • 創建控制部件

  • 選擇目標設備

  • 保存後效果

  • 點擊控制溫度

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章