ThingsBoard RPC control
http://www.embeddedadvice.com/t/thingsboard-io-sending-and-recieving-data/371
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));
}
}
}
转载于:https://www.cnblogs.com/dataclimber/p/9330599.html
ThingsBoard RPC control相关推荐
- thingsboard 学习路线之(六)服务器端RPC远程控制开关
每日一句: 生命就像一张白纸,没有任何的图案和印记,我们每个人都是自己绘制未来的画家. 简介 Thingsboard RPC(Remote Procedure Call)是一种在物联网设备和服务器之间 ...
- 浅浅认识之VBS脚本访问接口与COMODO拦截COM接口
这2天测试了一个使用了WMI提供ASEC后门,里面使用了JS脚本往外请求http获取执行命令.但我的分析系统却没抓到这个行为,可在真机中确实抓到有HTTP请求.相当奇怪. 最后无奈windbg出手,内 ...
- 有人公开了Avast、McAfee 等杀软中的 8 个 0day
聚焦源代码安全,网罗国内外最新资讯! 昵称为 halov 的安全研究员今天发布了 Avast.McAfee 等杀毒软件的8个0day,给出的理由是 "我能做到,而且我需要一份工作" ...
- 我的原创漏洞CVE-2020-1066
引用 这个漏洞属于Windows CardSpace服务未正确处理符号链接对象导致的任意文件替换的本地权限提升漏洞 申明 作者poc仅供研究目的,如果读者利用本poc从事其他行为,与本人无关 目录 文 ...
- 打磨Comodo,做有意义的事儿(1)
声明:本文属ubuntu原创,首发于卡饭Comodo版,转贴请保留作者和出处,严禁用于商业用途. 这是一篇关于Comodo从入门到精通的绝佳文章,转载过来与大家分享^_^ 目前U版一共写了六个部分,以 ...
- 【kali】28 提权——读取windows本地密码:pwddump、WCE、fgdump、mimikatz
这里写自定义目录标题 一. 抓包嗅探 二. 键盘记录本地密码 三. 查看本地缓存密码 1. 浏览器查看密码 2. 密码恢复工具 3. 使用 Pwdump 查看 windows 本地登录密码 4. 了解 ...
- Kali linux 学习笔记(二十三)提权——几个好工具(WCE、fgdump、mimikatz) 2020.3.4
前言 windows身份认证过程如图所示 上一届提到的pwdump是从SAM database里读取 如果能从内存里读取 面临的防卫会低很多 1.WCE(windows credential edit ...
- Windows 组策略(Group Policy Object)机制的漏洞分析
Windows 组策略(Group Policy Object)机制的漏洞类大约有60个,专门针对策略更新步骤,允许域环境中的标准用户执行文件系统攻击,进而使恶意用户可以逃避反恶意软件解决方案,绕过安 ...
- 基于 Thingsboard 平台自定义 RPC 控制类小部件示例
基于 Thingsboard 平台自定义 RPC 控制类小部件示例 1. 小部件介绍 2. 创建小部件 3. 部件编辑器 3.1 简介 3.2 资源 / HTML / CSS 3.3 JavaScri ...
最新文章
- Linux中V4L2使用
- 针对上上篇博文--仿优酷菜单---的bug修改
- 如何用javasript对Gridview的项目进行汇总统计?
- php和python和java-python和java,php,c,c#,c++的对比
- 使用ORM Profiler分析数据访问性能
- leetcode 994. Rotting Oranges | 994. 腐烂的橘子(BFS)
- php提前用户系统时间限制,php date()比服务器时间提前一小时(DST问题)
- fatal error: GL/glew.h: 没有那个文件或目录
- mysql read uncomit_mysql配置文件,帮看看
- 苏宁:我们开发百度小程序遇到的那些“坑”
- Java RMI原理与使用
- 用vscode创建一个c项目_vscode怎么创建C语言项目
- 西门子数控系统数据采集方案
- 笔记:图解网络(小林coding)
- 云服务器的1m带宽是多少kbps
- mybatis collection 关联查询多个参数
- linux磁盘坏块 cp报错,Linux磁盘坏道的检测及修复
- 十二小时制和二十四小时制之间的区别
- 【安装Linux系统】
- set_xscale 表示x轴缩放比例,一张图明明白白
热门文章
- STMCubeMX+Proteus仿真DHT11(LCD1602显示)
- matlab基础总结与图像处理应用(上)
- android airplay音乐播放器,您需要知道的关于使用AirPlay播放音乐的一切 | MOS86
- 计算机横向查找,Excel查找引用函数:HLOOKUP查找首行并显示指定的值-excel技巧-电脑技巧收藏家...
- win10蓝牙功能不见了_Win10 2004更新了什么?新功能新特性汇总
- 19张地图掀翻脑洞 还等什么快上车
- dbc批量插入、批量删除、批量更新
- 【本人秃顶程序员】美女程序员观点:程序员最重要的非编程技巧
- Spring中Autowired注解到底怎么实现的
- [CPNet]-理想亲和图的生成以及作用——Blank