产品定价 立即试用
IoT网关
文档 > 物联网网关功能 > GET/SET RPC方法
入门
安装
目录

如何使用内置GET/SET RPC方法

内置GET/SET RPC方法可在无需额外配置的情况下读写遥测与属性参数值。以下连接器支持内置GET/SET RPC方法:

每个遥测和属性参数开箱即用 GETSET RPC 方法,无需手动配置。 例如,若有如下遥测参数:

1
2
3
4
5
6
"timeseries": [
  {
    "key": "temperature",
    "path": "${ns=3;i=1001}"
  }
]

要获取温度遥测的当前值,请运行以下查询:

1
get ns=3;i=1001;

响应:

1
{"result":  25.34}

要设置温度遥测值,请运行以下查询:

1
set ns=3;i=1001; 23

image


要为 “model” 属性设置新值(T3000),请运行以下查询:

1
set ns=3;i=1008; T3000;

响应:

1
{"success":"true","code": 200}

image

GET 方法

使用 GET 方法可读取 Modbus 从站寄存器的值。

1
get type=<type>;functionCode=<functionCode>;objectsCount=<objectsCount>;address=<address>;

其中:

  • <type> - 要读取的值类型;
  • <functionCode> - Modbus 功能码;
  • <objectsCount> - 要读取的对象数量;
  • <address> - 要读取的寄存器地址。

例如,本示例中可从地址为 1 的 Modbus 从站读取 16 位整数值(室外温度)。 要读取地址 1 的寄存器值,请运行以下查询:

1
get type=16int;functionCode=3;objectsCount=1;address=1;

响应:

1
{"result":{"value":13}}

image

SET 方法

使用 SET 方法可向 Modbus 从站寄存器写入值。

1
set type=<type>;functionCode=<functionCode>;objectsCount=<objectsCount>;address=<address>;value=<value>;

其中:

  • <type> - 要写入的值类型;
  • <functionCode> - Modbus 功能码;
  • <objectsCount> - 要写入的对象数量;
  • <address> - 要写入的寄存器地址;
  • <value> - 要写入的值。

例如,本示例中可向地址为 2 的 Modbus 从站(房间光照度)写入 16 位整数值。 要写入地址 2 的寄存器值,请运行以下查询:

1
set type=16int;functionCode=6;objectsCount=1;address=2;value=80;

响应:

1
{"result":{"value":"80"}}

image

检查结果。要读取地址 2 的寄存器值,请运行以下查询:

1
get type=16int;functionCode=3;objectsCount=1;address=2;

响应:

1
{"result":{"value":80}}

image

可见值已成功写入。

GET 方法

使用 GET 方法可订阅 MQTT topic 并接收消息。

1
get requestTopicExpression=<requestTopicExpression>;responseTopicExpression=<responseTopicExpression>;value=<value>;

其中:

  • <requestTopicExpression> - 发布请求的 topic;
  • <responseTopicExpression> - 订阅响应的 topic;
  • <value> - 要发送的值。

例如,本示例中可从 MQTT topic “data/light_level” 读取房间光照度值,并需订阅 “data/response” topic 接收响应。 要读取房间光照度值,请运行以下查询:

1
get requestTopicExpression=data/get_light_level;responseTopicExpression=data/response;value=${params};

下面查看从 MQTT topic “data/response” 接收到的数据:

image

SET 方法

使用 SET 方法可向 MQTT topic 发布消息。

1
set requestTopicExpression=data/set_light_level;value=${params};

其中:

  • <requestTopicExpression> - 发布请求的 topic;
  • <value> - 要发送的值。

例如,本示例中可将房间光照度值写入 MQTT topic “data/light_level”。 要设置房间光照度值,请运行以下查询:

1
set requestTopicExpression=data/set_light_level;value=80;

下方截图中可见已成功向 MQTT topic “data/set_light_level” 发送 SET 请求:

image

通过发送双向 GET RPC 请求,查看 SET 方法在 “data/light_level” MQTT topic 中的结果。 要读取房间光照度值以确认已更新,请运行以下查询:

1
get requestTopicExpression=data/get_light_level;responseTopicExpression=data/response;value=${params};

下方截图中可见 SET 请求后房间光照度值已更新为 80:

image

GET 方法

使用 GET 方法可从 BACnet 设备读取数据。

1
get objectType=<objectType>;objectId=<objectId>;propertyId=<propertyId>;

其中:

  • <objectType> - 要读取的对象类型;
  • <objectId> - 要读取的对象 ID;
  • <propertyId> - 要读取的属性 ID。

例如,本示例中可从 BACnet 设备读取房间光照度值。 要读取房间光照度值,请运行以下查询:

1
get objectType=analogValue;objectId=1;propertyId=presentValue;

Response:

1
{"result": "30.5"}

image

SET 方法

使用 SET 方法可向 BACnet 设备写入数据。

1
set objectType=<objectType>;objectId=<objectId>;propertyId=<propertyId>;priority=<priority>;value=<value>;

其中:

  • <objectType> - 要写入的对象类型;
  • <objectId> - 要写入的对象 ID;
  • <propertyId> - 要写入的属性 ID;
  • <priority> - 要写入值的优先级(可选);
  • <value> - 要写入的值(可选,1 到 16 的整数)。

若 value 为空,BACnet connector 将发送带 Null 值的 relinquish 命令。 SET RPC 应包含 value 或 priority,或两者兼有。

例如,本示例中可将房间光照度值设置到 BACnet 设备。 要设置房间光照度值,请运行以下查询:

1
set objectType=analogValue;objectId=1;propertyId=presentValue;value=30.9;

Response:

1
{"result": "{\"status\":\"ok\"}"}

image

使用 GET 方法检查设置后的房间光照度值。只需运行上述 GET RPC 方法即可:

1
get objectType=analogValue;objectId=1;propertyId=presentValue;

Response:

1
{"result": "30.9"}

image

GET 方法

使用 GET 方法可向 REST API 发送 GET 请求。

1
get requestUrlExpression=<requestUrlExpression>;value=<value>;

其中:

  • <requestUrlExpression> - REST API 的 URL;
  • <value> - 要发送的值。

例如,本示例中可从 URL 为 “http://127.0.0.1:8000/light-level” 的 REST API 获取房间光照度。 要获取房间光照度值,请运行以下查询:

1
get requestUrlExpression=http://127.0.0.1:8000/light-level;value=${params};

Response:

1
{"result":  {"light-level":30}}

image

SET 方法

使用 SET 方法可向 REST API 发送 POST 请求。

1
set requestUrlExpression=<requestUrlExpression>;value=<value>;HTTPMethod=<HTTPMethod>;

其中:

  • <requestUrlExpression> - REST API 的 URL;
  • <value> - 要发送的值;
  • <HTTPMethod> - 要使用的 HTTP 方法。

例如,本示例中可将房间光照度设置到 URL 为 “http://127.0.0.1:8000/light-level” 的 REST API。 要设置房间光照度值,请运行以下查询:

1
set requestUrlExpression=http://127.0.0.1:8000/light-level;value=80;HTTPMethod=POST;

Response:

1
{"result":  {"status":"ok"}}

image

使用 GET 方法查看设置后的光照度。只需运行上述 GET RPC 方法即可:

1
get requestUrlExpression=http://127.0.0.1:8000/light-level;value=${params};

Response:

1
{"result":  {"light-level":80}}

image

GET 方法

使用 GET 方法可向外部 API 发送 GET 请求。

1
get requestUrlExpression=<requestUrlExpression>;

其中:

  • <requestUrlExpression> - 外部 API 的 URL。

例如,本示例中可从 URL 为 “http://127.0.0.1:8000/light-level” 的外部 API 获取房间光照度。 要获取房间光照度值,请运行以下查询:

1
get requestUrlExpression=light-level;

响应:

1
{"result":"{\"light-level\":30}"}

image

SET 方法

使用 SET 方法可向外部 API 发送 POST 请求。

1
get requestUrlExpression=<requestUrlExpression>;value=<value>;HTTPMethod=<HTTPMethod>;

其中:

  • <requestUrlExpression> - 外部 API 的 URL;
  • <value> - 要发送的值;
  • <HTTPMethod> - 要使用的 HTTP 方法。

例如,本示例中可将房间光照度设置到 URL 为 “http://127.0.0.1:8000/light-level” 的外部 API。 要设置房间光照度值,请运行以下查询:

1
set requestUrlExpression=light-level;value=80;httpMethod=POST;

响应:

1
{"result":"{\"status\":\"ok\"}"}

image

使用 GET 方法查看设置后的光照度。只需运行上述 GET RPC 方法即可:

1
get requestUrlExpression=light-level;

响应:

1
{"result":  {"light-level":80}}

image

GET 方法

使用 GET 方法可从 FTP 服务器读取数据。

1
get filePath=<filePath>;

其中:

  • <filePath> - FTP 服务器上的文件路径。

例如,本示例中 light_level.txt 文件在 FTP 服务器上存储房间光照度。 要读取房间光照度值,请运行以下查询:

1
get filePath=./light_level.txt;

响应:

1
{"result":  30}

image

SET 方法

使用 SET 方法可向 FTP 服务器写入数据。

1
set filePath=<filePath>;value=<value>;

其中:

  • <filePath> - FTP 服务器上的文件路径;
  • <value> - 要写入的值。

例如,本示例中 light_level.txt 文件在 FTP 服务器上存储房间光照度。 要写入房间光照度值,请运行以下查询:

1
set filePath=./light_level.txt;value=80;

响应:

1
{"result":  "{\"success\": true}"}

image

使用 GET 方法检查设置后的房间光照度值。只需运行上述 GET RPC 方法即可:

1
get filePath=./light_level.txt;

响应:

1
{"result":  80}

image

SET 方法

使用 SET 方法可向 socket 发送数据。

1
set address=<address>;port=<port>;value=<value>;

其中:

  • <address> - socket 地址;
  • <port> - socket 端口;
  • <value> - 要发送的值。

例如,本示例中可向使用 TCP 连接并在 50003 端口监听的传感器发送房间光照度。 要向传感器发送房间光照度值,请运行以下查询:

1
set address=192.168.0.200;port=50003;value=80;

响应:

1
{"result":  "ok"}

image

下面查看传感器端的结果:

image

下一步

探索ThingsBoard主要功能相关指南: