远程过程调用RPC介绍

Thingsboard允许双向的RPC调用,也就是你可以

  1. 从服务器发rpc到设备,向设备发送命令并接收命令执行的结果
  2. 从设备发rpc到服务器,执行来自设备的请求,在后端应用一些计算或其他服务器端逻辑并将响应发送回设备

    RPC调用类型

    也就是上边说到的双向调用
    一种是从客户端(设备)发起调用,我们叫做 client-side RPC 。另一种是服务器端发起调用,叫做server-side RPC。

    下图是Client-side RPC的请求流程图: **如果我们忽略cluster的话,就可以简单理解为设备端发起RPC request,服务端相应RPC Response
    四.RPC(先看这里) - 图1

服务器端RPC(server-side rpc)也分为两种:单向(one-way)和双向(two-way)

下图是服务器端单向RPC(One-way server-side rpc)
单向 RPC 请求在不确认的情况下发送到设备,并且没有设备的任何响应。只有在可配置的超时期限内没有与目标设备的活动连接时,RPC 才会失败。也就是服务器端只发请求(server rpc request),客户端不响应。如果在超时时间内没有活动连接,则为失败。
四.RPC(先看这里) - 图2
下图是服务器端双向RPC(two-way server-side rpc)
如下图很容易理解:双向 RPC 请求发送到设备,并期望在特定超时内收到设备的响应。服务器端请求被阻塞,直到目标设备回复请求。也就是需要在超时时间内设备需要回复请求。
**
四.RPC(先看这里) - 图3

假设你现在在一个物联网边缘计算的网关盒子(主流情况下这个盒子很大可能是arm架构,跑的OS是linux,支持C环境和Python环境,有以太网接口和RS232和RS485以支持modbus TCP/RTU等主流工业协议),你需要将modbus的寄存器值发布到服务器端做展示分析。那么你一定会用到下边三个协议中的一个:

ThingsBoard 提供了方便的 API 来从设备上运行的应用程序发送和接收 RPC 命令。
下面测试和讲解这些API