ThingsBoard通过服务端获取客户端属性或者共享属性

news2025/6/2 5:45:05

MQTT基础

客户端

MQTT连接

通过服务端获取属性值

案例

1、首先需要创建整个设备的信息,并复制访问令牌

​2、通过工具MQTTX连接上对应的Topic

3、测试链接是否成功

4、通过服务端获取属性值

5、在客户端查看对应的客户端属性或者共享属性的key

6、查看整个设备的遥测数据 


MQTT基础

MQTT是一种轻量级的发布-订阅消息传递协议,它可能最适合各种物联网设备。

你可以在此处找到有关MQTT的更多信息,ThingsBoard服务器支持QoS级别0(最多一次)和QoS级别1(至少一次)以及一组预定义主题的MQTT代理。

客户端

你可以在网上找到大量的MQTT客户端库,本文中的示例将基于Mosquitto和MQTT.js您可以使用我们的Hello World指南中的说明。

MQTT连接

我们将在本文中使用令牌凭据对进行设备访问,这些凭证稍后将称为$ACCESS_TOKEN应用程序需要发送用户名包含$ACCESS_TOKENMQTT CONNECT消息。

连接状态码说明:

  • 0x00 连接成功 - 成功连接
  • 0x04 连接失败 - 用户名或密码错误。
  • 0x05 连接未授权 - -用户名包含无效的 $ACCESS_TOKEN

Key-value格式

ThingsBoard支持以JSON格式的key-value字符串值可以是string、bool、float、long或者二进制格式的序列化字符串;

{
 "stringKey":"value1", 
 "booleanKey":true, 
 "doubleKey":42.0, 
 "longKey":73, 
 "jsonKey": {
    "someNumber": 42,
    "someArray": [1,2,3],
    "someNestedObject": {"key": "value"}
 }
}
通过服务端获取属性值

通过ThingsBoard服务端获取客户端属性或共享属性必须PUBLISH消息到下面主题:

v1/devices/me/attributes/request/$request_id

其中$request_id表示整数的请求标识符。

在发送带有请求的PUBLISH消息之前客户端需要订阅。

v1/devices/me/attributes/response/+

以下示例是用javascript基于mqtt.js编写的代码。
命令行示例不可用因为订阅和发布需要在同一mqtt会话中进行。

通过设备的访问令牌替换$ACCESS_TOKEN并将”mqtt-js-attributes-request.js”文件中的主机名替换为”demo.thingsboard.io”。
在此示例中主机名参考演示服务器。

export TOKEN=$ACCESS_TOKEN
node mqtt-js-attributes-request.js
var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://demo.thingsboard.io',{
    username: process.env.TOKEN
})

client.on('connect', function () {
    console.log('connected')
    client.subscribe('v1/devices/me/attributes/response/+')
    client.publish('v1/devices/me/attributes/request/1', '{"clientKeys":"attribute1,attribute2", "sharedKeys":"shared1,shared2"}')
})

client.on('message', function (topic, message) {
    console.log('response.topic: ' + topic)
    console.log('response.body: ' + message.toString())
    client.end()
})
# Publish client-side attributes update. Replace $THINGSBOARD_HOST_NAME and $ACCESS_TOKEN with corresponding values.
mosquitto_pub -d -h "$THINGSBOARD_HOST_NAME" -t "v1/devices/me/attributes" -u "$ACCESS_TOKEN" -m "{"attribute1": "value1", "attribute2": true}"
# For example, $THINGSBOARD_HOST_NAME reference live demo server, $ACCESS_TOKEN is ABC123:
mosquitto_pub -d -h "demo.thingsboard.io" -t "v1/devices/me/attributes" -u "ABC123" -m "{"attribute1": "value1", "attribute2": true}"

# Publish client-side attributes update from file. Replace $THINGSBOARD_HOST_NAME and $ACCESS_TOKEN with corresponding values.
mosquitto_pub -d -h "$THINGSBOARD_HOST_NAME" -t "v1/devices/me/attributes" -u "$ACCESS_TOKEN" -f "new-attributes-values.json"
# For example, $THINGSBOARD_HOST_NAME reference live demo server, $ACCESS_TOKEN is ABC123:
mosquitto_pub -d -h "demo.thingsboard.io" -t "v1/devices/me/attributes" -u "ABC123" -f "new-attributes-values.json"


# Publish client-side attributes update from file. Replace $THINGSBOARD_HOST_NAME and $ACCESS_TOKEN with corresponding values.
mosquitto_pub -d -h "$THINGSBOARD_HOST_NAME" -t "v1/devices/me/attributes" -u "$ACCESS_TOKEN" -f "new-attributes-values.json"
# For example, $THINGSBOARD_HOST_NAME reference live demo server, $ACCESS_TOKEN is ABC123:
mosquitto_pub -d -h "demo.thingsboard.io" -t "v1/devices/me/attributes" -u "ABC123" -f "new-attributes-values.json"


# Publish client-side attributes update from file. Replace $THINGSBOARD_HOST_NAME and $ACCESS_TOKEN with corresponding values.
mosquitto_pub -d -h "$THINGSBOARD_HOST_NAME" -t "v1/devices/me/attributes" -u "$ACCESS_TOKEN" -f "new-attributes-values.json"
# For example, $THINGSBOARD_HOST_NAME reference live demo server, $ACCESS_TOKEN is ABC123:
mosquitto_pub -d -h "demo.thingsboard.io" -t "v1/devices/me/attributes" -u "ABC123" -f "new-attributes-values.json"
# Publish client-side attributes update. Replace $THINGSBOARD_HOST_NAME and $ACCESS_TOKEN with corresponding values.
cat new-attributes-values.json | mqtt pub -d -h "$THINGSBOARD_HOST_NAME" -t "v1/devices/me/attributes" -u '$ACCESS_TOKEN' -s -m ""
# For example, $THINGSBOARD_HOST_NAME reference live demo server, $ACCESS_TOKEN is ABC123:
cat new-attributes-values.json | mqtt pub -d -h "demo.thingsboard.io" -t "v1/devices/me/attributes" -u 'ABC123' -s -m ""
案例
1、首先需要创建整个设备的信息,并复制访问令牌
2、通过工具MQTTX连接上对应的Topic

MATTX工具下载地址:EMQX 企业版: 企业级 MQTT 物联网接入平台

名称:可以随便取

服务器地址:根据自己的服务器的地址进行填写

端口:默认是1883

用户名:就是复制的访问令牌(必填) 

3、测试链接是否成功

4、通过服务端获取属性值

通过ThingsBoard服务端获取客户端属性或共享属性必须PUBLISH消息到下面主题:

v1/devices/me/attributes/request/1

 MQTT订阅的地址为

v1/devices/me/attributes/response/+

5、在客户端查看对应的客户端属性或者共享属性的key

6、查看整个设备的遥测数据 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL之索引失效、覆盖、前缀索引及单列、联合索引详细总结

索引失效 最左前缀法则 如果索引了多列(联合索引),要遵守最左前缀法则,最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将部分失效(后面的字段索引失效)。 联合索…

Golang(一):基础、数组、map、struct

目录 hello world 变量 常量,iota 函数 init函数和导包过程 指针 defer 数组和动态数组 固定长度数组 遍历数组 动态数组 len 和 cap 截取 切片的追加 map 四种声明方式 遍历map 删除 查看键是否存在 结构体 声明 作为形参 方法 封装 继承…

【PG-1】PostgreSQL体系结构概述

1. PostgreSQL体系结构概述 代码结构 其中,backend是后端核心代码,包括右边的几个dir: access:处理数据访问方法和索引的代码。 bootstrap:数据库初始化相关的代码。 catalog:系统目录(如表和索引的元数据…

富文本回显 p 标签?去不掉怎么办?如何解决?

使用前端框架富文本控件上传的上传的数据&#xff0c;回显到文本框时显示<p></p>标签&#xff0c;并且数据库里面的数据也为带有p标签的数据&#xff0c;如何去掉 解决办法 使用正则表达式来讲HTML的内容进行替换更改&#xff0c;在vue中定义方法 //移除HTML标签…

Linux的学习之路:9、冯诺依曼与进程(1)

摘要 本章主要是说一下冯诺依曼体系结构和进程的一部分东西。 目录 摘要 一、冯诺依曼体系结构 二、操作系统的概念 三、设计OS的目的 四、管理 五、进程的基本概念 六、PCB 七、在Linux环境下查看进程 八、使用代码创建进程 九、思维导图 一、冯诺依曼体系结构 如…

pyside6自定义部件库和软件框架的建设记录

自定义的部件库原则上尽量做到前后端分离&#xff0c;接口方便&#xff0c;复制简单。 单选框部件 # encoding: utf-8 ################################################### # 自定义的单选框 #################################################### 对外接口&…

【MYSQL】MySQL整体结构之系统服务

一、系统服务层 学习了MySQL网络连接层后&#xff0c;接下来看看系统服务层&#xff0c;MySQL大多数核心功能都位于这一层&#xff0c;包括客户端SQL请求解析、语义分析、查询优化、缓存以及所有的内置函数&#xff08;例如&#xff1a;日期、时间、统计、加密函数...&#xff…

【Godot4.2】CanvasItem绘图函数全解析 - 9.绘制表格

概述 之前介绍TextLine和TextParagraph的时候&#xff0c;提到了用制表符和设定列宽形式来绘制简易表格&#xff0c;但是很明显&#xff0c;单纯使用此种方式很难获得对表格的精确控制。 所以对于表格绘制问题&#xff0c;我决定单独开坑&#xff0c;单独深入研究。 目前比较…

Steam平台游戏发行流程

Steam平台游戏发行流程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师也是游戏热爱者&#xff0c;经常在steam平台玩各种游戏享受快乐生活。去年幻兽帕鲁以及雾锁王国在年底横空出世&#xff0c;幻兽帕鲁更是在短短一星期取得了非常好的成绩&#xff0c;那么作为游戏…

Redis从入门到精通(十七)多级缓存(二)Lua语言入门、OpenResty集群的安装与使用

文章目录 前言6.4 Lua语法入门6.4.1 初识Lua6.4.2 Hello World6.4.3 变量6.4.3.1 Lua的数据类型6.4.3.2 声明变量 6.4.4 循环6.4.5 函数6.4.6 条件控制 6.5 实现多级缓存6.5.1 安装和启动OpenResty6.5.2 实现ajax请求反向代理至OpenResty集群6.5.2.1 反向代理配置6.5.2.2 OpenR…

古月·ROS2入门21讲——学习笔记(二)常用工具部分15-21讲

上篇&#xff1a;古月ROS2入门21讲——学习笔记&#xff08;一&#xff09;核心概念部分1-14讲-CSDN博客 第十五讲&#xff1a;Launch&#xff1a;多节点启动与配置脚本 到目前为止&#xff0c;每当我们运行一个ROS节点&#xff0c;都需要打开一个新的终端运行一个命令。机器人…

使用ioctl扫描wifi信号获取信号属性的实例(二)

使用工具软件扫描 wifi 信号是一件很平常的事情&#xff0c;在知晓 wifi 密码的前提下&#xff0c;通常我们会尽可能地连接信号质量比较好的 wifi 信号&#xff0c;但是如何通过编程来扫描 wifi 信号并获得这些信号的属性(比如信号强度等)&#xff0c;却鲜有文章提及&#xff0…

第16天:信息打点-CDN绕过业务部署漏洞回链接口探针全网扫描反向邮件

第十六天 本课意义 1.CDN服务对安全影响 2.CDN服务绕过识别手法 一、CDN服务-解释差异识别 1.前置知识&#xff1a; 传统访问&#xff1a;用户访问域名–>解析服务器IP–>访问目标主机普通CDN&#xff1a;用户访问域名–>CDN节点–>真实服务器IP–>访问目标…

C++项目 -- 负载均衡OJ(一)comm

C项目 – 负载均衡OJ&#xff08;一&#xff09;comm 文章目录 C项目 -- 负载均衡OJ&#xff08;一&#xff09;comm一、项目宏观结构1.项目功能2.项目结构 二、comm公共模块1.util.hpp2.log.hpp 一、项目宏观结构 1.项目功能 本项目的功能为一个在线的OJ&#xff0c;实现类似…

LLM生成模型在生物单细胞single cell的应用:scGPT

参考&#xff1a; https://github.com/bowang-lab/scGPT https://www.youtube.com/watch?vXhwYlgEeQAs 主要是把单细胞测序出来的基因表达量的拼接起来构建成的序列&#xff0c;这里不是用的基因的ATCG&#xff0c;是直接用的基因名称 训练数据&#xff1a;scGPT全人模型是在3…

ARMv8-A架构下的外部debug模型之外部调试事件(external debug events)概述

外部调试器与处理器之间的握手与external debug events 一&#xff0c;External Debug的使能二&#xff0c;外部调试器和CPU之间的握手三&#xff0c;外部调试事件 External debug events1. External debug request event2. Halt instruction debug event3. Halting step debug…

如何在宽松许可证下构建有竞争力的Milvus Cloud商业服务?

如何在宽松许可证下构建有竞争力的商业服务? 开源公司并不一定要修改许可证作为唯一的出路,不过其挑战在于找到开源与商业化之间的平衡。 以 Zilliz 为例,我们选择将开源向量数据库 Milvus 捐赠给 Linux 基金会。在过去四年的时间里,Milvus 已经在 GitHub 上获得了超过 …

一款廉价USB转485转换器原理

USB转485转换器实物 USB转485转换器外观 USB转485转换器内部 USB转485转换器电路板元件面TOP USB转485转换器电路板焊接面BOT 工作原理 SOP14芯片为USB-TTL转换器&#xff0c;虽然没有型号&#xff0c;应为南京沁恒的CH340C&#xff0c;无外部晶振。 SOP8为MAX485&#xff0c…

[Java、Android面试]_18_详解Handler机制 常见handler面试题(非常重要,非常高频!!)

本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&#xff0c;后续会陆续分享出来&#xff0c;感兴趣的朋友可关注收…

数字乡村发展新模式:科技创新引领农业现代化与乡村振兴协同发展

随着信息技术的飞速发展&#xff0c;数字乡村已成为新时代农业现代化与乡村振兴协同发展的新模式。科技创新作为推动这一模式的核心动力&#xff0c;正引领着乡村产业结构的优化升级&#xff0c;促进农村经济的全面振兴&#xff0c;让农民在现代化的进程中共享发展成果。 一、科…