远程过程调用RPC介绍
Thingsboard允许双向的RPC调用,也就是你可以
- 从服务器发rpc到设备,向设备发送命令并接收命令执行的结果
- 从设备发rpc到服务器,执行来自设备的请求,在后端应用一些计算或其他服务器端逻辑并将响应发送回设备
RPC调用类型
也就是上边说到的双向调用
一种是从客户端(设备)发起调用,我们叫做 client-side RPC 。另一种是服务器端发起调用,叫做server-side RPC。
下图是Client-side RPC的请求流程图: **如果我们忽略cluster的话,就可以简单理解为设备端发起RPC request,服务端相应RPC Response
服务器端RPC(server-side rpc)也分为两种:单向(one-way)和双向(two-way)。
下图是服务器端单向RPC(One-way server-side rpc)
单向 RPC 请求在不确认的情况下发送到设备,并且没有设备的任何响应。只有在可配置的超时期限内没有与目标设备的活动连接时,RPC 才会失败。也就是服务器端只发请求(server rpc request),客户端不响应。如果在超时时间内没有活动连接,则为失败。
下图是服务器端双向RPC(two-way server-side rpc)
如下图很容易理解:双向 RPC 请求发送到设备,并期望在特定超时内收到设备的响应。服务器端请求被阻塞,直到目标设备回复请求。也就是需要在超时时间内设备需要回复请求。
**
假设你现在在一个物联网边缘计算的网关盒子(主流情况下这个盒子很大可能是arm架构,跑的OS是linux,支持C环境和Python环境,有以太网接口和RS232和RS485以支持modbus TCP/RTU等主流工业协议),你需要将modbus的寄存器值发布到服务器端做展示分析。那么你一定会用到下边三个协议中的一个:
ThingsBoard 提供了方便的 API 来从设备上运行的应用程序发送和接收 RPC 命令。
下面测试和讲解这些API