一、概述
rpc-toc" style="margin-left:120px;">1、发送服务器端网关RPC
二、案例:
1、建立设备与网关之间的通讯
2、查看设备和网关是否在线状态啊
3、通过 仪表盘,创建设备A的模拟RPC调用的窗口链接
4、在客户端的网关设备上订阅RPC网关的主题信息
5、通过服务端的窗口,发送设备的命令
6、查看客户端的MQTT端口是否已接受到对应的消息
7、当客户端已接受到消息后,通过网关进行回复消息接受
8、服务端查看已接受到对应的消息
一、概述
rpc">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}}