关于 API Catalog
面向 Home Assistant 开发者的 API 参考技能,提供常见服务的认证说明与代码示例,涵盖 Node-RED、HA YAML 和自定义集成。
主要功能
- 01常见 API 认证模式参考
- 02Node-RED 流程代码示例
- 03HA YAML REST 配置示例
- 04自定义集成开发指引
- 05凭据安全与限流检查
适用场景
- 01将天气或能源 API 接入 Home Assistant
- 02用 Node-RED 获取外部服务数据
- 03配置带凭据的 REST 传感器
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tonylofgren/ aurora-smart-home --skill api-catalog安装后在 Claude Code 中输入/api-catalog确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/energy-apis.mdglobal-apis.mdsmarthome-apis.mdtransport-apis.mdweather-apis.md详细介绍
Home Assistant API 目录
用于将外部 API 和服务连接到 Home Assistant 的参考技能。
概述
此技能介绍了身份验证模式,以及将常用 API 连接到 Home Assistant 的可运行代码示例。支持三种方法:
- Node-RED - HTTP 请求节点流程(最快上手)
- HA YAML -
rest传感器和rest_command(适合简单轮询) - 自定义集成 - 可发布到 HACS 的完整 Python 组件(使用
ha-integration技能)
铁律
CREDENTIALS IN SECRETS - NEVER HARDCODED IN FLOWS OR YAML
API 密钥应存储在 Node-RED 凭据、ESPHome secrets.yaml 或 HA secrets.yaml 中。
切勿将真实令牌粘贴到聊天中、导出的流程中,或提交到 git 的 YAML 文件中。
如何使用此技能
- 用户提及某个 API 或服务的名称
- 阅读相关参考文件,了解身份验证设置和端点
- 根据用户选择的方法(Node-RED / YAML / 集成)生成可运行的代码
- 提供凭据设置说明
参考文件
| 类别 | 文件 | 涵盖的 API |
|---|---|---|
| 能源和电力 | 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 (NO) |
| 智能家居云服务 | references/smarthome-apis.md | Shelly Cloud、Tuya IoT、Philips Hue、IKEA Dirigera |
| 全球 / 其他 | references/global-apis.md | OpenAI、Spotify、Google Calendar、Telegram、GitHub |
身份验证模式一览
| 模式 | 工作方式 | 示例 |
|---|---|---|
| 请求头中的 API 密钥 | Authorization: Bearer {key} 或 X-API-Key: {key} | Tibber、OpenAI |
| URL 中的 API 密钥 | 将 ?appid={key} 附加到 URL | OpenWeatherMap |
| OAuth2 | 先获取访问令牌,然后定期刷新 | Spotify、Google |
| 本地令牌 | 在设备上按一次按钮进行身份验证 | Philips Hue |
| 无需身份验证 | 公共 API,无需凭据 | SMHI、yr.no、Nordpool |
| 基本身份验证 | Base64 编码的用户名 + 密码 | 某些本地设备 |
输出方法
对于每个 API,根据用户的需求生成相应方法的代码:
Node-RED: http request 节点 + 用于解析的 function 节点 + 用于推送到 HA 的 api-call-service
HA YAML: configuration.yaml 中的 rest 传感器平台或 rest_command
完整集成: 使用 ha-integration 技能和 polling-integration 模板
常见模式
Node-RED:请求头中的 API 密钥
{
"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 传感器
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"
输出前检查清单
- 凭据使用
!secret(YAML)、Node-RED 凭据或环境变量,绝不硬编码 - 遵守速率限制(相应设置
scan_interval或流程计时器) - 包含错误处理(Node-RED catch 节点或 YAML 超时)
- 对于 OAuth2:说明刷新令牌流程
- 注明 API 端点及其返回的数据
集成
搭配使用:
node-red技能 - 用于实现流程 JSONha-yaml技能 - 用于使用获取的数据配置 YAML 传感器和自动化ha-integration技能 - 用于构建可发布到 HACS 的完整 Python 集成
评论
支持 Markdown