ThingsBoard服务端使用RPC通过网关给设备发送消息

发布于:2024-04-24 ⋅ 阅读:(41) ⋅ 点赞:(0)

一、概述

1、发送服务器端网关RPC

二、案例:

1、建立设备与网关之间的通讯

2、查看设备和网关是否在线状态啊

3、通过 仪表盘,创建设备A的模拟RPC调用的窗口链接

4、在客户端的网关设备上订阅RPC网关的主题信息

5、通过服务端的窗口,发送设备的命令

6、查看客户端的MQTT端口是否已接受到对应的消息 

7、当客户端已接受到消息后,通过网关进行回复消息接受

8、服务端查看已接受到对应的消息

一、概述

1、发送服务器端网关RPC

服务器端 RPC 通常使用 REST API 或仪表板小部件发送。事实上,仪表板小部件使用相同的 REST API。一旦平台收到 RPC,它就会验证有效负载并运行权限检查。然后,服务器端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 方法名称。
 

v1/gateway/connect

二、案例:

 ThingsBoard服务端使用RPC通过网关给设备发送消息,首先本设备需要是和网关建立通讯的,才能进行RPC的调用

1、建立设备与网关之间的通讯

建立网关与设备的链接的Topic

v1/gateway/connect

 对应的设备信息

{"device":"Device A"}

2、查看设备和网关是否在线状态啊

3、通过 仪表盘,创建设备A的模拟RPC调用的窗口链接

4、在客户端的网关设备上订阅RPC网关的主题信息

v1/gateway/rpc

5、通过服务端的窗口,发送设备的命令

toggle_gpio {"pin":1}

6、查看客户端的MQTT端口是否已接受到对应的消息 

7、当客户端已接受到消息后,通过网关进行回复消息接受

注意:内部的ID,必须和repuest请求过来的相同

Topic

v1/gateway/rpc

回复的消息 

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

8、服务端查看已接受到对应的消息