主要内容

Bulk-Write JSON数据

用单个HTTP POST将多个条目以JSON格式写入通道

描述

为了节省设备功率或组通道更新,可以使用批量更新API。当使用批量更新API时,随着时间的推移收集数据,然后将数据上传到ThingSpeak™。CSV格式写入请参见Bulk-Write CSV数据.要写单个条目,请参见写入数据

请注意

如果你设置反应的应用测试频率设置为数据插入,则每个大容量写请求只触发一次React条件类型匹配条件,即使条件匹配不止一次。

请求

HTTP方法

帖子

URL

https://api.thingspeak.com/channels/< channel_id >/ bulk_update.json

URL参数

的名字 描述

< channel_id >

(必选)感兴趣的通道的通道ID。

URL的例子:https://api.thingspeak.com/channels/999990/bulk_update.json

体参数和对象成员

批量JSON写操作的主体是一个JSON对象,其中包含这些表中列出的成员和数组。

的名字 描述 值类型
write_api_key

(私有通道必需)指定这个特定通道的写API密钥。您可以在API密钥选项卡的通道视图。

字符串

更新

(必选)指定通道的更新数组。

JSON对象数组的成员显示在更新

更新

一个更新是一个JSON对象的JSON数组,每个JSON对象都有以下键值对。

的名字 描述 值类型
created_at

(要求,除非delta_t包含)事件的绝对时间,以ISO 8601, EPOCH,或MYSQL格式。时间戳在通道内必须是唯一的。

字符串
delta_t

(要求,除非created_at(包含)指定从最后一个条目经过的时间delta_t.值delta_t除数组中的第一个值外,不能为零。

字符串
< X >

(可选)字段X数据,其中X为字段ID

任何

纬度

(可选)以度为单位的纬度,指定为介于两者之间的值-9090

数量

经度

(可选)经度,以度为单位指定-180年180

数量

海拔高度

(可选)海拔高度(米)

字符串

状态 (可选)状态字段输入消息 <字符串>

内容类型

application / json

正文格式

{"write_api_key": "write_api_key", "updates": [{"created_at": "DATETIME_STAMP", "field1": FIELD1_VALUE, "field2": FIELD2_VALUE, "field3": FIELD3_VALUE, "field4": FIELD4_VALUE, "field5": FIELD5_VALUE, "field6": FIELD6_VALUE, "field7": FIELD7_VALUE, "field8": FIELD8_VALUE, "Latitude": LATITUDE_VALUE, "Longitude": Longitude": Longitude", "Elevation":ELEVATION_VALUE, "Status": "STATUS_STRING"}, {"created_at": "DATETIME_STAMP", "field1": "FIELD1_VALUE",等等…}]}
指定时间格式created_at
{“write_api_key”:“write_api_key”,“更新”:[{“created_at”:“-0500 10:26:2 2018-01-30”,“field1”:“1.0”,“field2”:“2.0”},{“created_at”:“-0500 11:27:27 2018-02-02”,“field1”:“1.1”,“field2”:“2.2”,“状态”:“做得好”}]}
指定时间格式delta_t
{“write_api_key”:“write_api_key”,“更新”:[{“delta_t”:4,“field1”:1.0,“field2”:“2.0”},{“delta_t”:2,“field1”:1.1,“field2”:2.2,“海拔”:6,“状态”:“好”}]}

响应

成功

HTTP状态代码

200好了

身体

响应是一个表示成功的JSON对象:

{"success": true}

错误

有关完整列表,请参见错误代码

限制

  • 在一次批量更新中,免费账户的用户只能收到960条消息,付费账户的用户只能收到14400条消息。连续的大容量更新调用之间的时间间隔应该是15秒或更长。

  • MQTT订阅不会报告大容量写操作对通道的更新。

  • updates数组中的所有对象必须使用相同的time格式。

  • 所有时间戳必须是唯一的。如果提交了重复的时间戳,那么所有更新都将被拒绝,否则只有已经在通道中包含时间戳的更新才会被拒绝。

例子

全部展开

您可以配置邮递员尝试RESTful API调用。要使用JSON对象发送一个HTTP POST请求来批量更新一个通道提要,配置POSTMAN如下所示:

  1. 选项卡,设置内容类型作为application / json

  2. 设置身体作为请求的一部分JSON对象,并在POSTMAN中输入JSON对象。

    完整的POST格式如下所示。

    POST /渠道/ 999900 / bulk_update。json HTTP/1.1 Host: api.thingspeak.com Content-Type: application/json {"write_api_key": "JNWIVP3CD54ZGI9X", "updates": [{"created_at": "2018-01-30 10:26:2 -0500", "field1": "2017-01-30 10:26:23 -0500", "field1": "red", "field2": "blue", "field3": "green", "field4": "fish", "field5": "alimony", "field6": 100, "field7":100, "field8": 100, "status": "good"}, {"created_at": "2018-01-30 10:26:26 -0500", "field1": 1500, "field2": 150, "field3": 100, "field4": 100, "field5": 100, "field6": 100, "field7": 100, "field8": 100, "latitude": 123, "longitude": 23, "elevation": 34}]}
  3. 响应是一个表示成功的JSON对象。

对于没有内置实时时钟的设备,可以为每个条目提供相对时间戳。每个条目都以delta_t开头,并列出前一次测量的时间(以秒为单位)。

输入邮政编码。具体的程序和格式取决于你的客户。

POST /渠道/ 999900 / bulk_update。json HTTP / 1.1主持人:api.thingspeak.com - type: application / json{“write_api_key”:“XXXXXXXXXXXXXXXX”,“更新”:[{“delta_t”:“0”,“field1”:100},{“delta_t”:“2”,“field1”:" 200 "},{" delta_t”:“1”,“field1”:103},{“delta_t”:“2”,“field1”:“23”},{“delta_t”:“1”,“field1”:86},{“delta_t”:“5”,“field1”:" 201 "})}

最后一个条目是提交请求时的时间戳。具有相对时间戳的请求中的每次更新都从最后一个条目的时间向后递减。对请求的响应是一个表示成功的JSON对象。

{"success": true}
图中显示了18:05:37对该频道的一次呼叫中显示的6个值。