ThingHTTP App
ThingHTTP 支持设备、网站和 Web 服务之间的通信,而无需在设备级别实现协议。您可以在 ThingHTTP 中指定操作,并使用其他 ThingSpeak™ App (例如 TweetControl、TimeControl 和 React)触发这些操作。
创建 ThingHTTP 请求
创建新的 ThingHTTP请求。点击Apps > ThingHTTP,然后点击 New ThingHTTP。
指定设置。并非每种类型的请求都需要所有设置。所有 ThingHTTP 请求都需要以下参数。
所需参数 描述 Name 为您的 ThingHTTP请求输入唯一的名称。 API Key 为 ThingHTTP请求自动生成 API 密钥。 URL 输入您要从中请求数据的网站或网络服务的地址,以 https://
开头。(请注意,支持http://
,但强烈建议不要这样做。)Method 选择访问 URL 所需的以下 HTTP 方法之一:获取、发布、放置或删除。
HTTP Version 除非服务器另有指示,否则指定 1.1。 根据您发出的请求的性质,您可以指定其他参数。示例,向需要身份验证的服务器发出 ThingHTTP请求需要用户名和密码。
可选参数 描述 HTTP Auth Username 如果您的URL需要验证,请输入用于验证访问私有通道或网站的用户名。 HTTP Auth Password 如果您的URL需要验证,请输入验证密码以访问私有通道或网站。 Content Type 输入请求内容的 MIME 或表单类型。示例, application/x-www-form-urlencoded
。Host 如果您的 ThingHTTP请求需要主机地址,请输入域名。示例, api.thingspeak.com
。Headers 如果您的 ThingHTTP请求需要自定义标头,请输入头文件名称和值。示例,使用 Range: bytes=500-999
指定字节范围。Body 输入您想要包含在请求中的消息。
您还可以使用替换密钥在主体部分包含要发送到 ThingHTTP App 的数据。有关示例,请参见 使用 ThingHTTP 触发器传递数据。
Parse String 输入要在响应数据中查找的标签。您可以使用唯一 ID 或 XPATH 来解析 HTML 中的特定数据。如果返回的数据是 JSON 对象,您可以使用 JSON圆点表示法来解析响应数据以获取特定值。请参阅 解析字符串 了解更多信息。
保存请求。您的 ThingHTTP 可供将来使用,只需点击Apps并选择 ThingHTTP。
触发 ThingHTTP
使用 GET 或 POST HTTP请求、TweetControl、TimeControl 或 React 触发 ThingHTTP。如果您包含数据或使用自定义替换密钥,请使用 POST请求。由 POST、TimeControl 或 React 触发的请求可以将某些变量传递给 ThingHTTP。有关详细信息,请参阅 使用 ThingHTTP 触发器传递数据。示例,如果您使用 TimeControl 触发 ThingHTTP,您可以传递触发的时间。此表提供输入和输出参数以及使用 HTTP请求触发 ThingHTTP 的示例调用。
注意
每秒多次触发 ThingHTTP 会导致 HTTP 429 状态代码。状态代码会持续显示,直到您将速率降低到每秒一个请求以下。
使用 HTTP 请求触发 ThingHTTP
标题 | 触发 ThingHTTP 的 HTTP POST 请求 |
---|---|
网址 | https://api.thingspeak.com/apps/thinghttp/send_request |
HTTP Method | POST |
HTTP Header | Content-Type: application/x-www-form-urlencodedX-THINGSPEAKAPIKEY = XXXXXXXXXXXXXXX |
数据参数 | api_key=XXXXXXXXXXXXXXX |
成功响应 | 200 OK and HTTP, JSON, or text, depending on the ThingHTTP |
错误响应 | 400 Invalid API key0 Minimum wait time not reached-1 Request failed |
示例 HTTP 调用 | POST /apps/thingtweet/1/statuses/update HTTP/1.1 Host: api.thingspeak.com Content-Type: application/x-www-form-urlencoded Cache-Control: no-cacheapi_key=XXXXXXXXXXXXXXX |
注释 | 您的 ThingHTTP API 密钥必须出现在 HTTP头文件或主体部分中,或者可以同时出现在两者中。如果您不将数据传递到 ThingHTTP,则可以使用 GET请求来触发 ThingHTTP:GET https://api.thingspeak.com/apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXX 。 |
ThingHTTP 返回 HTTP请求的结果。
使用 ThingHTTP 触发器传递数据
您可以使用替换密钥(包括两个百分号内的密钥)将数据发送到 ThingHTTP。您可以在 ThingHTTP 的任何可用部分中包含替换密钥。示例,您可以在 ThingHTTP 主体中包含一个标记,并使用触发 ThingHTTP请求的POST 传递数据。此示例演示如何使用 ThingHTTP请求将消息发布到 ThingSpeak 通道。创建您的 ThingHTTP,并在主体中使用自定义替换密钥%%message%%。
当您在 POST 中包含触发 ThingHTTP 的消息时,HTTP POST 会触发 ThingHTTP,将 %%message%% 替换为“1234”,并更新 ThingSpeak 上的通道。ThingHTTP 的主体参数与 HTTP 触发请求的主体参数不同。HTTP触发请求参数如下表所示。
标题 | 触发 ThingHTTP 的 HTTP POST 请求 |
---|---|
网址 | https://api.thingspeak.com/apps/thinghttp/send_request |
HTTP Method | POST |
HTTP Header | Content-Type: application/x-www-form-urlencodedX-THINGSPEAKAPIKEY=XXXXXXXXXXXXXXX |
数据参数 | api_key=XXXXXXXXXXXXXXXmessage=1234 |
成功响应 | 200 OK 和 HTTP、JSON 或文本,具体取决于您的 ThingHTTP |
错误响应 | 400 Invalid API key0 Minimum wait time not reached-1 Request failed |
示例 HTTP 调用 | POST /apps/thingtweet/1/statuses/update HTTP/1.1 Host: api.thingspeak.com Content-Type: application/x-www-form-urlencoded Cache-Control: no-cacheapi_key=XXXXXXXXXXXXXXX&message=1234 |
注释 | 您的 ThingHTTP API 密钥必须出现在 HTTP头文件或主体部分中,或者可以同时出现在两者中。 |
使用替换密钥的 POSTMAN 请求
您可以使用 POSTMAN 使用 ThingSpeak 的 RESTful API 来尝试 HTTP 请求。下面展示了如何使用 POSTMAN 使用替换密钥来测试 ThingHTTP。
选择 POST 并输入请求URL。
在授权部分选择Body。
选择 x-www-form-urlencoded。
输入
api_key
并将 ThingHTTP API 密钥复制到 value 部分。在 value 部分输入
message
和消息文本。
更换密钥
您可以使用替换密钥将数据传递到您的 App 。下表总结了您可以使用的标准和自定义替换密钥。某些键特定于特定类型的请求,如最后一列所示。
键 | 描述 | 例子 | 使用场合 |
---|---|---|---|
%%YOUR_CUSTOM_LABEL%% | ThingHTTP 将此自定义替换值替换为触发请求中具有标签“YOUR_CUSTOM_LABEL”的数据。 | field1=%%YOUR_CUSTOM_LABEL%% POST 数据:YOUR_CUSTOM_LABEL=1234 .结果:field1=1234 。 | 任何请求 |
%%channel_CHANNEL_ID_field_FIELD_NUMBER%% | 指定通道和字段的最后一个值。对与 ThingHTTP请求不属于同一用户的私有通道的替换请求会返回空白值。 | The latest value is %%channel_12_field_1%% .结果:The latest value is 2.5 . | 任何请求 |
%%datetime%% | TimeControl 或 React 运行时的完整日期和时间。 | The date and time the event occurred is %%日期时间%% .结果:The date and time the event occurred is 2014-09-24 5:32 pm . | 时间控制或反应 |
%%day%% | TimeControl 运行时的工作日名称。 | The day the event occurred is %%day%% .结果:The day the event occurred is 星期三。 | TimeControl |
%%day_index%% | 从星期日开始的工作日的从零开始的索引。 | The number of days used this week is %%day_index%% .结果:The number of days used this week is 3 . | TimeControl |
%%hour%% | TimeControl 运行的时间。 | The hour that the event occurred is %%小时%% .结果:The hour that the event occurred is 5 . | TimeControl |
%%minute%% | TimeControl 运行时的分钟。 | The minute the event occurred is %%分钟%% .结果:The minute the event occurred is 30 . | TimeControl |
%%trigger%% | 触发 React 的值。 | It is way too hot in here at %%trigger%% C .结果:It is way too hot in here at 40 C 。 | 反应 |
%%channel_id%% | 触发React的通道ID。 | The channel that tweets is %%channel_id%% .结果:The channel that tweets is 1256 。 | 反应 |
解析字符串
ThingHTTP 发送请求生成的完整 HTTP 响应,该响应可以是网页、文本或 JSON 对象。要从响应中提取单个数据元素,请在 ThingHTTP请求中指定“解析字符串”。ThingHTTP 可以使用唯一标签 ID 或 XPATH 数据解析数据。可以解析 JSON 对象以检索对象的组成部分。
XPath | |
您可以使用 XML 路径语言 (XPath) 在网页上指定特定值。指定网页上某个项目的 XPath 以解析该特定项目。当您点击源视图中的数据时,某些浏览器会提供 XPATH 信息。示例,网页 |
|
JSON | |
JSON(JavaScript 对象表示法)通常用于格式化 Web 数据。如果您的请求返回 JSON 对象,您可以使用适当的圆点表示法来检索感兴趣的值。ThingSpeak Channel 12397 提供内蒂克 MathWorks® 停车场的天气信息。使用请求URL 以下是从 MathWorks ThingSpeak 气象站通道返回的气象站 JSON 对象的示例。 { "channel": { "id": 12397, "name": "WeatherStation", "description": "MathWorks Weather Station, ...", ... "field1": "Wind Direction ... ", "field2": "Wind Speed (mph)", ... }, "feeds": [ { "created_at": "2017-03-13T14:33:21Z", "entry_id": 1272044, "field1": "21", "field2": "5.0", ... } ]} |
|