Main Content

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

ThingHTTP App

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

创建事物 HTTP 请求

  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 应用程序的数据。有关示例,请参阅使用 ThingHTTP 触发器传递数据

    Parse String

    输入要在响应数据中查找的标签。
    您可以使用唯一的 ID 或 XPATH 从 HTML 中解析特定数据。如果返回的数据是 JSON 对象,则可以使用 JSON 点表示法来解析响应数据中的特定值。查看 解析字符串 以了解更多信息。

  3. 保存请求。通过点击 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
URLhttps://api.thingspeak.com/apps/thinghttp/send_request
HTTP 方法POST
HTTP 标头Content-Type: application/x-www-form-urlencoded
X-THINGSPEAKAPIKEY = XXXXXXXXXXXXXXX

数据参数api_key=XXXXXXXXXXXXXXX
成功响应200 OK
and HTTP, JSON, or text, depending on the ThingHTTP
错误响应400 Invalid API key
0 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-cache

api_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%%。

当您在触发 ThingHTTP 的 POST 中包含一条消息时,HTTP POST 会触发您的 ThingHTTP,将 %%message%% 替换为 '1234' 并更新 ThingSpeak 上的通道。ThingHTTP 的正文参数与 HTTP 触发请求的正文参数不同。HTTP 触发器请求参数如下表所示。

标题HTTP POST 请求触发 ThingHTTP
URLhttps://api.thingspeak.com/apps/thinghttp/send_request
HTTP 方法POST
HTTP 标头Content-Type: application/x-www-form-urlencoded
X-THINGSPEAKAPIKEY=XXXXXXXXXXXXXXX

数据参数api_key=XXXXXXXXXXXXXXX
message=1234

成功响应200 OK
和 HTTP、JSON 或文本,具体取决于您的 ThingHTTP
错误响应400 Invalid API key
0 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-cache

api_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
RESULT: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
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 信息。例如,网页 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() 中提供了马萨诸塞州纳蒂克的月相。

JSON

JSON(JavaScript 对象表示法)通常用于格式化 Web 数据。如果您的请求返回 JSON 对象,您可以使用适当的点符号来检索感兴趣的值。ThingSpeak 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",
     ...    }  ]}

另请参阅

函数

外部网站