ThingHTTP App
ThingHTTP 支持设备、网站和 Web 服务之间的通信,而无需在设备级别实现协议。您可以在 ThingHTTP 中指定操作,然后使用其他 ThingSpeak™ App(例如 TweetControl、TimeControl 和 React)触发这些操作。
创建事物 HTTP 请求
创建一个新的 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 应用程序的数据。有关示例,请参阅使用 ThingHTTP 触发器传递数据。
Parse String 输入要在响应数据中查找的标签。
您可以使用唯一的 ID 或 XPATH 从 HTML 中解析特定数据。如果返回的数据是 JSON 对象,则可以使用 JSON 点表示法来解析响应数据中的特定值。查看 解析字符串 以了解更多信息。保存请求。通过点击 Apps 并选择 ThingHTTP,您的 ThingHTTP 即可供将来使用。
触发 ThingHTTP
使用 GET 或 POST HTTP 请求、TweetControl、TimeControl 或 React 触发您的 ThingHTTP。如果包含数据或使用自定义替换键,请使用 POST 请求。由 POST、TimeControl 或 React 触发的请求可以将某些变量传递给 ThingHTTP。有关详细信息,请参阅 使用 ThingHTTP 触发器传递数据。例如,如果您使用 TimeControl 来触发 ThingHTTP,则可以传递触发的时间。该表提供了使用 HTTP 请求触发 ThingHTTP 的输入和输出参数以及示例调用。
注意
每秒触发 ThingHTTP 多次会导致 HTTP 429 状态代码。状态代码会持续显示,直到您将速率降低到每秒一个请求以下。
使用 HTTP 请求触发 ThingHTTP
标题 | HTTP POST 请求触发 ThingHTTP |
---|---|
URL | https://api.thingspeak.com/apps/thinghttp/send_request |
HTTP 方法 | POST |
HTTP 标头 | Content-Type: application/x-www-form-urlencoded |
数据参数 | api_key=XXXXXXXXXXXXXXX |
成功响应 | 200 OK |
错误响应 | 400 Invalid API key |
示例 HTTP 调用 | POST /apps/thingtweet/1/statuses/update HTTP/1.1 |
注意 | 您的 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%%。
当您在触发 ThingHTTP 的 POST 中包含一条消息时,HTTP POST 会触发您的 ThingHTTP,将 %%message%% 替换为 '1234' 并更新 ThingSpeak 上的通道。ThingHTTP 的正文参数与 HTTP 触发请求的正文参数不同。HTTP 触发器请求参数如下表所示。
标题 | HTTP POST 请求触发 ThingHTTP |
---|---|
URL | https://api.thingspeak.com/apps/thinghttp/send_request |
HTTP 方法 | POST |
HTTP 标头 | Content-Type: application/x-www-form-urlencoded |
数据参数 | api_key=XXXXXXXXXXXXXXX |
成功响应 | 200 OK 和 HTTP、JSON 或文本,具体取决于您的 ThingHTTP |
错误响应 | 400 Invalid API key |
示例 HTTP 调用 | POST /apps/thingtweet/1/statuses/update HTTP/1.1 |
注意 | 您的 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 。RESULT: field1=1234 。 | 任何请求 |
%%channel_CHANNEL_ID_ | 指定通道和字段的最后一个值。对与 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。 | TimeControl 或 React |
%%day%% | TimeControl 运行时的星期几的名称。 | The day the event occurred is %%day%%。结果: The day the event occurred is Wednesday。 | 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 %%hour%%。结果: 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 。 | React |
%%channel_id%% | 触发 React 的通道 ID。 | The channel that triggers is %%channel_id%%。结果: The channel that triggers is 1256。 | React |
解析字符串
ThingHTTP 发送请求生成的完整 HTTP 响应,该响应可以是网页、文本或 JSON 对象。要从响应中提取单个数据元素,请在 ThingHTTP 请求中指定解析字符串。ThingHTTP 可以使用唯一标签 ID 或 XPATH 数据来解析数据。可以解析 JSON 对象来检索对象的组件。
XPath | |
您可以使用 XML 路径语言 (XPath) 来指定网页上的特定值。指定网页上某个项目的 XPath,以解析该特定项目。当您点击源视图中的数据时,某些浏览器会提供 XPATH 信息。例如,网页 |
|
JSON | |
JSON(JavaScript 对象表示法)通常用于格式化 Web 数据。如果您的请求返回 JSON 对象,您可以使用适当的点符号来检索感兴趣的值。ThingSpeak 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", ... } ]} |
|