ThingsBoard Edge 设备控制

文章目录

    • 一、RPC 功能
      • 1.服务端 RPC
      • 2.客户端 RPC
      • 3.MQTT RPC API
        • 3.1.服务端RPC
        • 3.2.客户端RPC
    • 二、设备控制
      • 1.环境准备
      • 2.创建设备
      • 3.服务端PRC
        • 3.1.RPC消息主题
        • 3.2.程序源码
        • 3.3.创建仪表板
        • 3.4.边缘分配仪表板
        • 3.5.测试
      • 4.客户端RPC
        • 4.1.RPC消息主题
        • 4.2.程序源码
        • 4.3.规则链
        • 4.4.测试

  • ThingsBoard
# ThingsBoardhttps://iothub.org.cn/docs/iot/
https://iothub.org.cn/docs/iot/tb-edge/edge-rpc/

一、RPC 功能

1.服务端 RPC

服务端 RPC 分:单向 RPC、双向 RPC。

服务端 RPC 调用可以分为单向和双向:

  • 单向 RPC 请求直接发送请求,并且不对设备响应做任何处理。

    在这里插入图片描述

  • 双向 RPC 请求会发送到设备,并且超时期间内接收到来自设备的响应。

    在这里插入图片描述

2.客户端 RPC

客户端 RPC 从设备端发送到平台
在这里插入图片描述

3.MQTT RPC API

3.1.服务端RPC

客户端订阅服务端RPC命令必须SUBSCRIBE消息发送下面主题:

v1/devices/me/rpc/request/+

订阅后客户端会收到一条命令作为对相应主题的PUBLISH命令:

v1/devices/me/rpc/request/$request_id

$request_id表示请求的整型标识符。

客户端PUBLISH下面主题进行响应:

v1/devices/me/rpc/response/$request_id
3.2.客户端RPC

将RPC命令发送到服务端必须PUBLISH消息发送到下面主题:

v1/devices/me/rpc/request/$request_id

$request_id表示请求的整型标识符服务端必须发布到下面主题:

v1/devices/me/rpc/response/$request_id

二、设备控制

1.环境准备

  1. 创建测试设备 edge-device
  2. 创建测试工程 tb-rpc

1.程序配置

mqtt:broker-url: tcp://192.168.202.166:1883client-id: emq-client-rpcusername: lMrdczEw1rJHhBejzumZpassword:

2.创建设备

在 ThingsBoard 服务端创建设备配置 test-edge

在 Edge 端创建设备 edge-device
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在服务端查看设备
在这里插入图片描述

# 访问令牌
lMrdczEw1rJHhBejzumZ

3.服务端PRC

3.1.RPC消息主题

客户端订阅服务端RPC命令必须SUBSCRIBE消息发送下面主题:

v1/devices/me/rpc/request/+

订阅后客户端会收到一条命令作为对相应主题的PUBLISH命令:

v1/devices/me/rpc/request/$request_id

$request_id表示请求的整型标识符。

客户端PUBLISH下面主题进行响应:

v1/devices/me/rpc/response/$request_id
3.2.程序源码

ServerRpc

@Component
public class ServerRpc {@Autowiredprivate EmqClient emqClient;@Autowiredprivate MqttProperties properties;@PostConstructpublic void init(){//连接服务端emqClient.connect(properties.getUsername(),properties.getPassword());//订阅一个主题emqClient.subscribe("v1/devices/me/rpc/request/+", QosEnum.QoS1);}}

MessageCallback

@Component
public class MessageCallback implements MqttCallback {/*** 应用收到消息后触发的回调* @param topic* @param message* @throws Exception*/@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {log.info("订阅者订阅到了消息,topic={},messageid={},qos={},payload={}",topic,message.getId(),message.getQos(),new String(message.getPayload()));// 订阅者订阅到了消息,topic=v1/devices/me/rpc/request/7,messageid=6,qos=1,payload={"method":"setValue","params":false}// 订阅后客户端会收到一条命令作为对相应主题的PUBLISH命令:// v1/devices/me/rpc/request/$request_idString[] buff = topic.split("/");String request_id = buff[buff.length-1];// 客户端PUBLISH下面主题进行响应:// v1/devices/me/rpc/response/$request_idemqClient.publish("v1/devices/me/rpc/response/" + request_id, "{}", QosEnum.QoS1,false);}
3.3.创建仪表板
  • 在服务端创建仪表板
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
3.4.边缘分配仪表板
  • 在服务端给 Edge 分配仪表板
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 在 Edge 端查看仪表板
    在这里插入图片描述
    在这里插入图片描述

3.5.测试
  • 在 Edge 端发送 RPC 命令
    在这里插入图片描述
    在这里插入图片描述
2023-08-20 16:35:34.249  INFO 21332 --- [emq-client-2222] com.iiotos.mqtt.MessageCallback          : 订阅者订阅到了消息,topic=v1/devices/me/rpc/request/15,messageid=1,qos=1,payload={"method":"setValue","params":false}2023-08-20 16:35:34.252  INFO 21332 --- [emq-client-2222] com.iiotos.mqtt.MessageCallback          : 消息发布完成,messageid=2,topics=[v1/devices/me/rpc/response/15]

4.客户端RPC

4.1.RPC消息主题

将RPC命令发送到服务端必须PUBLISH消息发送到下面主题:

v1/devices/me/rpc/request/$request_id

$request_id表示请求的整型标识符服务端必须发布到下面主题:

v1/devices/me/rpc/response/$request_id

请求参数

{"method": "getServerValue", "params": ""}
4.2.程序源码

ClientRpc

package com.iiotos.rpc;import com.iiotos.mqtt.EmqClient;
import com.iiotos.mqtt.MqttProperties;
import com.iiotos.mqtt.QosEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;@Component
public class ClientRpc {@Autowiredprivate EmqClient emqClient;@Autowiredprivate MqttProperties properties;@PostConstructpublic void init(){//连接服务端emqClient.connect(properties.getUsername(),properties.getPassword());//订阅一个主题emqClient.subscribe("v1/devices/me/rpc/response/+", QosEnum.QoS1);}@Scheduled(fixedRate = 3000)public void publish(){String data = getData();emqClient.publish("v1/devices/me/rpc/request/1",data,QosEnum.QoS1,false);}private String getData(){String data = "{\n" +"\t\"method\": \"getServerValue\",\n" +"\t\"params\": \"\"\n" +"}";return data;}}
4.3.规则链
  • 在服务端创建规则链
    在这里插入图片描述
    在这里插入图片描述
msg.result='server receive rpc requuest!!!'
return { msg: msg, metadata: metadata, msgType: msgType };

在这里插入图片描述

  • 在 Edge 端 查看规则链
    在这里插入图片描述
4.4.测试

在这里插入图片描述

2023-08-20 17:46:46.216  INFO 20548 --- [emq-client-2222] com.iiotos.mqtt.MessageCallback          : 消息发布完成,messageid=7,topics=[v1/devices/me/rpc/request/1]2023-08-20 17:46:46.269  INFO 20548 --- [emq-client-2222] com.iiotos.mqtt.MessageCallback          : 订阅者订阅到了消息,topic=v1/devices/me/rpc/response/1,messageid=6,qos=1,payload={"method":"getServerValue","params":"","result":"server receive rpc requuest!!!"}
  • ThingsBoard
# ThingsBoardhttps://iothub.org.cn/docs/iot/
https://iothub.org.cn/docs/iot/tb-edge/edge-rpc/

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

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

相关文章

【Git】error: bad signature 0xb86f1e1 和 bfatal: index file corrupt

一、问题 之前都好好的,今天执行 git add .的时候突然报错 报错原因翻译成中文:索引文件损坏 二、解决方法 方法1: 删除.git隐藏文件夹中的index文件 然后执行 git reset 重新生成index文件 git reset 方法2: 重新从远程克隆…

xinference - 大模型分布式推理框架

文章目录 关于 xinference使用1、启动 xinference设置其他参数 2、加载模型3、模型交互 其它报错处理 - transformer.wte.weight 关于 xinference Xorbits Inference(Xinference)是一个性能强大且功能全面的分布式推理框架。 可用于大语言模型&#xff…

TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

本文整理至https://zhuanlan.zhihu.com/p/606575441这里是清华大学软件学院机器学习组官方公众号(THUML-LAB),欢迎关注我们,获取最新资讯! 本文介绍本组ICLR2023时间序列分析方向的最新工作:TimesNet: Temporal 2D-Variation Mode…

Linux/Ubuntu/Debian从控制台启动程序隐藏终端窗口

如果你想从终端运行应用程序但隐藏终端窗口. 你可以这样做: 在后台运行: 你只需在命令末尾添加一个与号 (&) 即可在后台运行它。 例如: your_command &将 your_command 替换为你要运行的命令。 这将在后台启动该命令&#xff0c…

NSGA-III算法:如何在多目标优化问题中找到最合适的解

当我们面临多个目标函数时,单目标的遗传算法可能无法满足需求。这时,我们可以引入多目标遗传算法。在这种情况下,目标函数可能存在冲突,例如,一个目标函数需要最小化,而另一个目标函数需要最大化。某个目标…

联发科MT8797迅鲲1300T规格参数_MTK5G安卓核心板方案定制

联发科MT8797(迅鲲1300T)平台采用Arm Cortex-A78和Cortex-A55组成的八核架构CPU,以及Arm Mali-G77MC9九核GPU,集成了AI处理器MediaTek APU,支持5G Sub-6GHz全频段和5G双载波聚合,支持1.08亿像素拍照和多镜头组合,以及1…

3.5 RK3399项目开发实录-板载RTLinux系统的使用(wulianjishu666)

STM32F103单片机从零到项目开发程序实例 链接:https://pan.baidu.com/s/1dWNskNinrMk4bxaE-jgHhQ?pwdymn3 1. 介绍 为了满足用户对系统实时性的需求,官方在 SDK 源码的内核基础上支持升级 Linux 到 RTLinux。 我们RTlinux支持有preempt和xenomai两个版…

032—pandas 时间窗口中最多的风向和频数

前言 时间窗口指的是在一段时间内对数据进行分析的时间段,通常是一个连续的时间段,如一小时、一天、一周或一个月等。在分析时间序列数据时,时间窗口的选择通常会影响分析结果和预测精度。 需求: 风向是指风的方向,…

如何与Polytec建立EDI连接?

Polytec Holding AG是一家总部位于奥地利的汽车供应商和塑料加工公司。该公司的业务分为四个部门:塑料,为乘用车和非汽车行业的发动机和内饰提供塑料部件;复合材料,为商用车和乘用车提供外饰和发动机零部件;汽车造型&a…

106 基于消息队列来做 mysql 大数据表数据的遍历处理

前言 最近有这样的一个需求, 我们存在一张 很大的 mysql 数据表, 数据量大概是在 六百万左右 然后 需要获取所有的记录, 将数据传输到 es 中 然后 当时 我就写了一个脚本来读取 这张大表, 然后 分页获取数据, 然后 按页进行数据处理 转换到 es 但是存在的问题是, 前面 还…

前后端项目笔记

前端项目创建 准备工作 nodejs安装 vue cli安装 vue create frontend 最后一个y的话 它会保存 方便下次创建项目 我这是手快敲错了 随自己 前端项目组件及作用 Element-UI引入 安装 npm i element-ui -S main.js中引入 清空路口App.vue 清空Home页面 随便写个按钮 原因…

HCIE考证心得 | 在云校的学习收获颇多

我是来自深圳信息职业技术学院22级现代移动通信3-3班的冯同学,我在2023年12月12日通过了华为认证Cloud Service HCIE。在此,我将分享考证中的心得体会给大家。 备考的六点建议 一是要细心严谨,做实验时要全神贯注,明确实验要求…

Python-GEE绘制DEM精美图片

目录 上传矢量和DEM获取添加颜色条参考文章 先连接上GEE的自己的项目 import ee import geemap geemap.set_proxy(port33210) ee.Authenticate() ee.Initialize(projecta-flyllf0313)上传矢量和DEM获取 使用Google Earth Engine(GEE)和Google Earth Eng…

基于单片机的模糊PID炉温控制系统设计

摘 要 电热炉是在工业热处理的生产中广泛使用的一种设备,电热炉的温度控制系统存在时变性,非线性,滞后性等特征,难以用常规PID的控制器对系统达到很好的控制效果。当控温精度的要求高时,使用传统的控制理论方法难以达…

亮相AWE 2024,日立中央空调打造定制空气新体验

日立中央空调于3月14日携旗下空气定制全新成果,亮相2024中国家电及消费电子博览会(简称AWE 2024)现场,围绕“科创先行 智引未来”这一主题,通过技术与产品向行业与消费者,展现自身对于家居空气的理解。 展会…

kanzi颜色工作流程

线性和非线性伽玛色彩空间 RGB 颜色空间的目的是表示在计算机显示器上显示的颜色。目前,sRGB是非线性伽玛色彩空间的标准。之所以需要它,是因为人类对光的感知是非线性的,而且计算机显示器对光强度具有非线性响应。 人眼比浅色更能区分深色…

Android 13 源码编译及报错修复

下载AOSP指定分支 repo init -u git://aosp../platform/manifest -b android-13.0.0_r83 同步代码到本地 repo sync -c 初始化编译环境, 选择构建目标 source build/envsetup.sh lunch 选择需要构建的目标,此处以aosp_arm64-eng为例 进行固件编译 make -j12 期间编译…

力扣热门算法题 49. 字母异位词分组,50. Pow(x, n),51. N 皇后

49. 字母异位词分组,50. Pow(x, n),51. N 皇后,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.19 可通过leetcode所有测试用例。 目录 49. 字母异位词分组 解题思路 完整代码 python Java 50. Pow(x…

STM32F411 Micropython使用日记

1、开发板购买:推荐淘宝“无名科技Nologo” 19.8包邮到手;买开发板还需要买SPI NorFlash,推荐8MB的flash,不懂的可以问卖家,买回来需要焊接好,也可以找店家试试看能不能帮忙焊接,不然micropytho…