Main Content

本页采用了机器翻译。点击此处可查看英文原文。

ThingHTTP App

ThingHTTP 支持设备、网站和 Web 服务之间的通信,而无需在设备级别实现协议。您可以在 ThingHTTP 中指定操作,并使用其他 ThingSpeak™ App (例如 TweetControl、TimeControl 和 React)触发这些操作。

创建 ThingHTTP 请求

  1. 创建新的 ThingHTTP请求。点击Apps > ThingHTTP,然后点击 New ThingHTTP

  2. 指定设置。并非每种类型的请求都需要所有设置。所有 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圆点表示法来解析响应数据以获取特定值。请参阅 解析字符串 了解更多信息。

  3. 保存请求。您的 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。

  1. 选择 POST 并输入请求URL。

  2. 在授权部分选择Body

  3. 选择 x-www-form-urlencoded

  4. 输入 api_key 并将 ThingHTTP API 密钥复制到 value 部分。

  5. 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 信息。示例,网页 www.localconditions.com/massachusetts/01750 在 XPATH //*[@id="wrapper"]/div[3]/div/div[2]/div[1]/div[1]/div/div[2]/div[2]/p[5]/text() 中提供马萨诸塞州 Natick 的月相。

JSON

JSON(JavaScript 对象表示法)通常用于格式化 Web 数据。如果您的请求返回 JSON 对象,您可以使用适当的圆点表示法来检索感兴趣的值。ThingSpeak Channel 12397 提供内蒂克 MathWorks® 停车场的天气信息。使用请求URL https://api.thingspeak.com/channels/12397/feeds.json?results=1 返回一个 JSON 对象,类似于此处显示的对象。使用解析字符串 feeds[0].field2 检索 Wind Speed 的最新值,在本例中返回的值为 5.0。

以下是从 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",
     ...    }  ]}

另请参阅

函数

外部网站