
tobiasehlert/teslamateapi]([] 的 TeslaMate Traefik 配置,可以将以下部分添加到 docker-compose.yml 文件的 services: 部分:
yamlservices: teslamateapi: image: tobiasehlert/teslamateapi:latest restart: always depends_on: - database environment: - ENCRYPTION_KEY=${TM_ENCRYPTION_KEY} - DATABASE_USER=${TM_DB_USER} - DATABASE_PASS=${TM_DB_PASS} - DATABASE_NAME=${TM_DB_NAME} - DATABASE_HOST=database - MQTT_HOST=mosquitto - TZ=${TM_TZ} labels: - "traefik.enable=true" - "traefik.port=8080" - "traefik.http.middlewares.redirect.redirectscheme.scheme=https" - "traefik.http.middlewares.teslamateapi-auth.basicauth.realm=teslamateapi" - "traefik.http.middlewares.teslamateapi-auth.basicauth.usersfile=/auth/.htpasswd" - "traefik.http.routers.teslamateapi-insecure.rule=Host(`${FQDN_TM}`)" - "traefik.http.routers.teslamateapi-insecure.middlewares=redirect" - "traefik.http.routers.teslamateapi.rule=Host(`${FQDN_TM}`) && (Path(`/api`) || PathPrefix(`/api/`))" - "traefik.http.routers.teslamateapi.entrypoints=websecure" - "traefik.http.routers.teslamateapi.middlewares=teslamateapi-auth" - "traefik.http.routers.teslamateapi.tls.certresolver=tmhttpchallenge"
在这种情况下,TeslaMateApi 可通过 teslamate.example.com/api/ 访问。
基本上,TeslaMateApi 需要与 TeslaMate 相同的数据库、MQTT 和时区环境变量。
必填环境变量(即使某些有默认值)
| 变量 | 类型 | 默认值 |
|---|---|---|
| DATABASE_USER | 字符串 | teslamate |
| DATABASE_PASS | 字符串 | secret |
| DATABASE_NAME | 字符串 | teslamate |
| DATABASE_HOST | 字符串 | database |
| ENCRYPTION_KEY | 字符串 | |
| MQTT_HOST | 字符串 | mosquitto |
| TZ | 字符串 | Europe/Berlin |
可选环境变量
| 变量 | 类型 | 默认值 |
|---|---|---|
| TESLAMATE_SSL | 布尔值 | false |
| TESLAMATE_HOST | 字符串 | teslamate |
| TESLAMATE_PORT | 字符串 | 4000 |
| API_TOKEN | 字符串 | |
| API_TOKEN_DISABLE | 字符串 | false |
| DATABASE_PORT | 整数 | 5432 |
| DATABASE_TIMEOUT | 整数 | 60000 |
| DATABASE_SSL | 字符串 | disable |
| DATABASE_SSL_CA_CERT_FILE | 字符串 | |
| DEBUG_MODE | 布尔值 | false |
| DISABLE_MQTT | 布尔值 | false |
| MQTT_TLS | 布尔值 | false |
| MQTT_PORT | 整数 | 1883(如果TLS为true则为8883) |
| MQTT_USERNAME | 字符串 | |
| MQTT_PASSWORD | 字符串 | |
| MQTT_NAMESPACE | 字符串 | |
| MQTT_CLIENTID | 字符串 | 4字符随机字符串 |
| TESLA_API_HOST | 字符串 | 通过访问令牌获取 |
命令环境变量
| 变量 | 类型 | 默认值 |
|---|---|---|
| ENABLE_COMMANDS | 布尔值 | false |
| COMMANDS_ALL | 布尔值 | false |
| COMMANDS_ALLOWLIST | 字符串 | allow_list.json |
| COMMANDS_LOGGING | 布尔值 | false |
| COMMANDS_WAKE | 布尔值 | false |
| COMMANDS_ALERT | 布尔值 | false |
| COMMANDS_REMOTESTART | 布尔值 | false |
| COMMANDS_HOMELINK | 布尔值 | false |
| COMMANDS_SPEEDLIMIT | 布尔值 | false |
| COMMANDS_VALET | 布尔值 | false |
| COMMANDS_SENTRYMODE | 布尔值 | false |
| COMMANDS_DOORS | 布尔值 | false |
| COMMANDS_TRUNK | 布尔值 | false |
| COMMANDS_WINDOWS | 布尔值 | false |
| COMMANDS_SUNROOF | 布尔值 | false |
| COMMANDS_CHARGING | 布尔值 | false |
| COMMANDS_CLIMATE | 布尔值 | false |
| COMMANDS_MEDIA | 布尔值 | false |
| COMMANDS_SHARING | 布尔值 | false |
| COMMANDS_SOFTWAREUPDATE | 布尔值 | false |
| COMMANDS_UNKNOWN | 布尔值 | false |
更详细的每个端点文档即将推出...
/api/api/v1/api/v1/cars/api/v1/cars/:CarID/api/v1/cars/:CarID/charges
startDate(可选,使用RFC3339规范的UTC格式)endDate(可选,使用RFC3339规范的UTC格式)/api/v1/cars/:CarID/charges/:ChargeID/api/v1/cars/:CarID/command/api/v1/cars/:CarID/command/:Command/api/v1/cars/:CarID/drives
startDate(可选,使用RFC3339规范的UTC格式)endDate(可选,使用RFC3339规范的UTC格式)/api/v1/cars/:CarID/drives/:DriveID/api/v1/cars/:CarID/logging/:Command/api/v1/cars/:CarID/logging/api/v1/cars/:CarID/status/api/v1/cars/:CarID/updates/api/v1/cars/:CarID/wake_up/api/v1/globalsettings/api/healthz/api/ping/api/readyz[!TIP] RFC3339规范的UTC格式示例:
2006-01-02T15:04:05Z或2006-01-02T15:04:05+07:00
如果您想使用命令或日志端点,例如 /api/v1/cars/:CarID/command/:Command、/api/v1/cars/:CarID/wake_up 或 /api/v1/cars/:CarID/logging/:Command,需要在请求中添加认证。
您需要在环境变量文件中自行指定一个令牌(称为 API_TOKEN)。该令牌要求至少32个字符长。
有两种可用的认证方式:
将额外的请求头 Authorization: Bearer <token> 添加到请求中。(推荐选项)
在要访问的端点添加 URI 参数 ?token=<token>。(不推荐选项)
命令默认未启用。
您需要在环境变量中启用它们(设置 ENABLE_COMMANDS=true),并指定要使用的命令。
有3种使用命令的方式:
可以启用特定命令组,例如 COMMANDS_ALERT=true 将启用 警报 命令组。
如果需要启用精细的命令集,可以使用 COMMANDS_ALLOWLIST=/path/to/allow_list.json 指定一个 JSON格式的命令列表 来启用。
最粗略的选项 COMMANDS_ALL=true 将启用所有命令(特定组和允许列表将被忽略)。
COMMANDS_ALL 或任何特定命令组,COMMANDS_ALLOWLIST 将被忽略。可能的命令列表可在 环境变量 下找到。
关于命令中需要提供的字段,请参考 timdorr/tesla-api 文档。
此 API 无法 访问您的 Tesla 账户令牌,我们将保持这一原则!
可访问的数据包括车辆、充电记录、行驶记录、当前状态、更新和全局设置等。
此外,请在容器前的 Web 服务器上应用一些认证措施,以确保您的数据不会未受保护而过度暴露。在上面的示例中,我们使用与 TeslaMate 相同的 .htpasswd 文件。
如果您在容器前应用了一定级别的认证,API_TOKEN_DISABLE=true 将允许无需请求头或 URI 令牌值即可执行命令。但即使如此,始终建议使用 API 密钥。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务