ThingsBoard通过网关动态创建设备并发送属性

news2024/11/24 20:02:43

1、网关介绍 

2、创建网关设备

3、设备连接API

4、设备断开API

5、属性API

5.1、将属性更新发布到服务器

5.2、从服务器请求属性值

5.3、从服务器订阅属性更新

6、遥测上传API

7、远程过程调用API

  服务器端 RPC

8、声明设备 API


1、网关介绍 

网关是 ThingsBoard 中的一种特殊类型的设备,能够充当连接到不同系统的外部设备和 ThingsBoard 之间的桥梁。网关 API 提供了使用单个 MQTT 连接在多个设备和平台之间交换数据的能力。该网关还充当 ThingsBoard 设备,可以利用现有的MQTT 设备 API来报告统计数据、接收配置更新等通过服务端订阅属性

​ 

2、创建网关设备

创建设备的时候,选择设备为网关即可创建网关设备

3、设备连接API

为了通知 ThingsBoard 设备已连接到网关,需要发布以下消息:

Topic: v1/gateway/connect
Message: {"device":"Device A"}

​ 

​ 

其中设备 A是您的设备名称。

收到后,ThingsBoard 将查找或创建具有指定名称的设备。此外,ThingsBoard 还将向此网关发布有关特定设备的新属性更新和 RPC 命令的消息。

4、设备断开API

为了通知 ThingsBoard 设备已与网关断开连接,需要发布以下消息:

Topic: v1/gateway/disconnect
Message: {"device":"Device A"}

其中设备 A是您的设备名称。

一旦收到,ThingsBoard 将不再向此网关发布该特定设备的更新。

5、属性API

ThingsBoard 属性 API 允许设备

  • 将客户端设备属性上传到服务器。
  • 从服务器请求客户端和共享设备属性。
  • 从服务器订阅共享设备属性。
5.1、将属性更新发布到服务器

为了将客户端设备属性发布到 ThingsBoard 服务器节点,请将 PUBLISH 消息发送到以下主题:

Topic: v1/gateway/attributes
Message: {"Device A":{"attribute1":"value1", "attribute2": 42}, "Device B":{"attribute1":"value1", "attribute2": 42}}

​ 

其中,Device ADevice B是您的设备名称,attribute1attribute2是属性键。

5.2、从服务器请求属性值

为了向 ThingsBoard 服务器节点请求客户端或共享设备属性,请将 PUBLISH 消息发送到以下主题:

Topic: v1/gateway/attributes/request
Message: {"id": $request_id, "device": "Device A", "client": true, "key": "attribute1"}

​ 

其中$request_id是您的整数请求标识符,Device A是您的设备名称,client标识客户端或共享属性范围,key是属性键。

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

Topic: v1/gateway/attributes/response

​ 

并期望消息的结果采用以下格式:

Message: {"id": $request_id, "device": "Device A", "value": "value1"}
5.3、从服务器订阅属性更新

为了订阅共享设备属性更改,请将 SUBSCRIBE 消息发送到以下主题:

v1/gateway/attributes

并期望消息的结果采用以下格式:

Message: {"device": "Device A", "data": {"attribute1": "value1", "attribute2": 42}}

​ 

6、遥测上传API

为了将设备遥测发布到 ThingsBoard 服务器节点,请将 PUBLISH 消息发送到以下主题:

Topic: v1/gateway/telemetry

信息:

单设备:

{
  "Device A":[
    {
        "temperature": 43,
        "humidity": 81
      }
    ]
}

多设备: 

{
  "Device A": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    },
    {
      "ts": 1483228801000,
      "values": {
        "temperature": 43,
        "humidity": 82
      }
    }
  ],
  "Device B": [
    {
      "ts": 1483228800000,
      "values": {
        "temperature": 42,
        "humidity": 80
      }
    }
  ]
}

​其中,设备 A设备 B是您的设备名称,温度湿度是遥测密钥,ts是以毫秒为单位的 unix 时间戳。

7、远程过程调用API

  服务器端 RPC

为了从服务器订阅 RPC 命令,请将 SUBSCRIBE 消息发送到以下主题:

v1/gateway/rpc

并期望带有以下格式的单独命令的消息:

{"device": "Device A", "data": {"id": $request_id, "method": "toggle_gpio", "params": {"pin":1}}}

一旦设备处理了命令,网关就可以使用以下格式发回命令:

{"device": "Device A", "id": $request_id, "data": {"success": true}}

其中$request_id是您的整数请求标识符,Device A是您的设备名称,method是您的 RPC 方法名称。

8、声明设备 API

请参阅相应的文章以获取有关功能的更多信息。

为了启动声明设备,请将 PUBLISH 消息发送到以下主题:

Topic: v1/gateway/claim

信息:

{
  "Device A": {
    "secretKey": "value_A",
    "durationMs": 60000
  },
  "Device B": {
    "secretKey": "value_B",
    "durationMs": 60000
  }
}

其中Device ADevice B是您的设备名称,secretKeydurationMs是可选密钥。如果未指定SecretKey,则使用空字符串作为默认值。如果未指定periodMs,则使用系统参数device.claim.duration(在文件/etc/thingsboard/conf/thingsboard.yml中)。

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

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

相关文章

【七段码数码管的连通性检查】

题目分析 给定一组选用的数码管,要求判断这些数码管是否连通。连通的定义是:所有选用的数码管中的发光二极管必须构成一个连通的图,即从任意一个发光的二极管出发,可以到达其他所有发光的二极管。 思路与算法 构建数码管的邻接…

基于51单片机智能家居空气质量监控—温湿度PM2.5

基于51单片机智能家居空气质量监控 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 1.检测温度、湿度、PM2.5浓度,并在LCD1602实时显示; 2.可以使用按键设置温湿度上下限、P…

【php开发工程师系统性教学】——laravel中自动验证的实现教程

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

下载好了annaconda,但是在创建一个新的Conda虚拟环境报错

文章目录 问题描述:解决方案1.生成一个配置文件 问题总结 问题描述: ProxyError(MaxRetryError(“HTTPSConnectionPool(host‘repo.anaconda.com’, port443): Max retries exceeded with url: /pkgs/pro/win-64/repodata.json.bz2 (Caused by ProxyErr…

高抗干扰/抗静电液晶屏驱动IC-VK2C24笔段液晶控制器

VK2C24是一个点阵式存储映射的LCD驱动器,可支持最大288点(72SEGx4COM)或者最大544点(68SEGx8COM)或者最大960点(60SEGx16COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据&#xff…

记录一下MySQL8版本更改密码规则

#查看当前密码策略 show variables like validate_password%;#修改密码等级为low set global validate_password.policy LOW; #注意MySQL8版本这是点,不是_#修改密码长度为6 set global validate_password.length 6;#查询我的数据库中user表host和user select host,…

(笔记)KEIL经常碰到的错误(持续整理)

KEIL常碰到的错误 一、ERROR报错1、Build时报错 Error: L6218E2、Build时报错 error 653、Default Compiler Version 54、core_cm3.h(1213): error: unknown type name inline 二、调试与仿真1、keil5软件仿真没有实时波形2、调试模式时,程序前没有灰块3、Periphera…

如何学习VBA_3.2.20:DTP与Datepicker实现日期的输入

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。 如果…

cesium 平滑显示billboard 透明度

描述:加载billboard的时候,要么是显示,要么是隐藏,不能平滑的显示,有个从不显示到显示的过程 解决方案:创建billboard的时候给一个color,颜色为(255,255,255),透明度从0-1 let opaci…

Proteus 8 的使用记录

创建仿真文件 新建文件:默认下一步,至完成创建。 功能选择如图: 放置器件 常用元器件名称 keywords 常用51单片机 AT89C52 晶振 CRYSTAL 电阻 RES 排阻 RESPACK-8 瓷片电容 CAP 电解电容 CAP-ELEC 单刀单掷开关 S…

基于SSM+Jsp+Mysql的大学生校园兼职系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

TQZC706开发板教程:在ZC706上运行ADRV9371(vivado2018.3)

首先需要在github上下载两个文件,本例程用到的文件以及最终文件,我都会放在网盘里面,地址在本文的末尾,需要自行提取 在github上搜索hdl选择第一个-->选择版本-->我所使用的vivado是2018.3版本,所以这里我下载的…

什么场景适合使用Traefik?

Traefik 作为一款现代的反向代理和负载均衡器,已经成为云原生环境中的热门选择。它提供的动态配置能力和强大的自动化功能使其在多种场景中非常有用。本文将详细探讨适合使用 Traefik 的几种关键场景,并解释为何在这些情况下它特别有用 🌍&am…

Spring Boot 统一功能处理(二)

本篇主要介绍Spring Boot统一功能处理中的统一数据返回格式。 目录 一、定义统一的返回类 二、配置统一数据格式 三、测试配置效果 四、统一格式返回的优点 五、源码角度解析String问题 一、定义统一的返回类 在我们的接口在处理请求时,返回的结果可以说是参…

UE C++ 学习

UBT(虚幻编译工具(UnrealBuildTool))和UHT虚幻头工具(UnrealHeaderTool) UE有一组用于自动执行编译虚幻引擎过程的工具,包括 UBT和UHT(以及其他工具)。实现这一套工具的目…

Aritest+python+Jenkins解放双手iOS/Android自动化

ARITest、Python 和 Jenkins 可以结合在一起创建一个自动化测试解决方案,实现持续集成和持续测试的目标。以下是三者如何协同工作的基本概念: 1. **ARITest**: ARITest 是一款功能全面的自动化测试工具,提供 UI 自动化、接口自…

CSS3 立体 3D 变换

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 ✍CSS3 立体 3D 变换💎1 坐标轴💎2 perspective 透视视…

Vue(二):报错调试,vue3响应式原理、computed和watch,ref,props,接口

一、准备工作调试 跟着张天禹老师看前几集的时候可能会遇到如下问题: 1.下载插件:Vue Language Features (Volar)或者直接下载vue-offical 2.npm run serve时运行时出现错误:Error: vitejs/plugin-vue requires vue (>3.2.13) …

Flutter仿Boss-7.首页列表

效果 考察使用 Flutter Model的创建TabBar及TabBarView 的使用标签Wrap控件的使用列表ListView的使用 具体实现 今天懒的写文字了,想看具体实现的可以直接去我的github上: github:github.com/yixiaolunhui/flutter_project

PostgreSQL入门到实战-第二十四弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(八)官网地址PostgreSQL概述PostgreSQL中CROSS JOIN命令理论PostgreSQL中CROSS JOIN命令实战更新计划 PostgreSQL中表连接操作(八) 使用PostgreSQL CROSS JOIN从连接的表中生成行的笛卡尔乘积。 官网地址 声明: 由于操作系统, 版…