SuperAPI AI 工具集

API Catalog

办公与效率

查看项目

更新于 10-16 02:11

技能介绍

用途

API Catalog 是一个参考技能(reference skill),用于把外部 API 和服务连接到 Home Assistant。它面向需要从第三方服务拉取数据并在 Home Assistant 中使用的场景,提供认证方式、端点和可运行代码示例。

主要能力

该技能覆盖三种接入方法:

  • Node-RED:HTTP 请求节点流程,是启动最快的方式。
  • HA YAML:rest sensor 和 rest_command,适合简单的轮询场景。
  • 自定义集成:完整的、可发布到 HACS 的 Python 组件(需配合 ha-integration 技能)。

技能按类别整理了参考文件:

  • 能源与电力:references/energy-apis.md,覆盖 Tibber、Nordpool、Energi Data Service。
  • 天气:references/weather-apis.md,覆盖 SMHI、OpenWeatherMap、yr.no、Tomorrow.io。
  • 交通:references/transport-apis.md,覆盖 SL、Trafikverket、Resrobot、Entur(挪威)。
  • 智能家居云:references/smarthome-apis.md,覆盖 Shelly Cloud、Tuya IoT、Philips Hue、IKEA Dirigera。
  • 全球/其他:references/global-apis.md,覆盖 OpenAI、Spotify、Google Calendar、Telegram、GitHub。

认证模式一览:

  • API key 放在请求头:Authorization: Bearer {key} 或 X-API-Key: {key},例如 Tibber、OpenAI。
  • API key 放在 URL:?appid={key} 追加到 URL,例如 OpenWeatherMap。
  • OAuth2:先获取 access token,再定期刷新,例如 Spotify、Google。
  • 本地 token:在设备上一次性按键认证,例如 Philips Hue。
  • 无认证:公开 API,无需凭据,例如 SMHI、yr.no、Nordpool。
  • Basic auth:用户名加密码的 Base64 编码,部分本地设备使用。

使用方式

技能给出的使用流程是:

  1. 用户按名称提到某个 API 或服务。
  2. 阅读对应的参考文件,了解认证设置和端点。
  3. 按用户选择的方法(Node-RED / YAML / 集成)生成可运行代码。
  4. 附带凭据设置说明。

输出方法:针对每个 API,按用户需要的方法生成代码——Node-RED 使用 http request 节点加 function 节点解析,再用 api-call-service 推送到 HA;HA YAML 在 configuration.yaml 下使用 rest sensor 平台或 rest_command;完整集成则使用 ha-integration 技能配合轮询集成模板。

文档给出的常见模式示例包括:

Node-RED 请求头携带 API key:

{ "type": "http request", "method": "GET", "url": "https://api.example.com/data", "headers": {"Authorization": "Bearer {{env.API_KEY}}"}, "ret": "obj" }

Node-RED 的 GraphQL(Tibber 风格):

{ "type": "http request", "method": "POST", "url": "https://api.tibber.com/v1-beta/gql", "headers": { "Authorization": "Bearer {{env.TIBBER_TOKEN}}", "Content-Type": "application/json" }, "payload": "{"query": "{ viewer { homes { currentSubscription { priceInfo { current { total } } } } } }"}", "ret": "obj" }

HA YAML 的 REST sensor:

rest:

  • scan_interval: 300 resource: https://api.example.com/current headers: Authorization: !secret example_api_key sensor:
    • name: "Example Value" value_template: "{{ value_json.data.value }}" unit_of_measurement: "°C"

适用场景

适用于需要把外部服务数据接入 Home Assistant 的用户,例如读取电价、天气、交通、智能家居云设备状态,或接入 OpenAI、Spotify、Google Calendar、Telegram、GitHub 等服务。用户可按自身技术偏好选择 Node-RED、YAML 或自定义集成。

限制与注意事项

文档强调一条“铁律”:凭据必须放在 secrets 中,绝不硬编码在流程或 YAML 里。API key 应放在 Node-RED credentials、ESPHome secrets.yaml 或 HA secrets.yaml 中,不要把真实 token 粘贴到聊天、会被导出的流程或提交到 git 的 YAML 中。

输出前检查清单包括:凭据使用 !secret(YAML)、Node-RED credentials 或环境变量,绝不硬编码;遵守速率限制(相应设置 scan_interval 或流程定时器);包含错误处理(Node-RED catch 节点或 YAML timeout);对 OAuth2 说明刷新 token 流程;注明使用的 API 端点及其返回的数据。

该技能可与 node-red 技能(用于流程 JSON 实现)、ha-yaml 技能(用于使用所取数据的 YAML 传感器和自动化)、ha-integration 技能(用于构建完整的可发布到 HACS 的 Python 集成)配合使用。

关于具体 API 的收费、价格、平台支持范围等信息,资料中暂未提供。