Initial commit with translated description
This commit is contained in:
201
SKILL.md
Normal file
201
SKILL.md
Normal file
@@ -0,0 +1,201 @@
|
||||
---
|
||||
name: my-tesla
|
||||
description: "通过Tesla Owner API从macOS控制Tesla车辆。"
|
||||
---
|
||||
|
||||
# My Tesla
|
||||
|
||||
**Author:** Parth Maniar — [@officialpm](https://github.com/officialpm)
|
||||
|
||||
A practical Tesla control skill for Clawdbot built on `teslapy`.
|
||||
|
||||
## Setup
|
||||
|
||||
### Requirements
|
||||
|
||||
- `TESLA_EMAIL` env var set (your Tesla account email)
|
||||
- Python 3.10+
|
||||
|
||||
### First-time authentication
|
||||
|
||||
```bash
|
||||
TESLA_EMAIL="you@email.com" python3 {baseDir}/scripts/tesla.py auth
|
||||
```
|
||||
|
||||
This opens a Tesla login URL. Log in, then paste the callback URL back into the CLI.
|
||||
|
||||
- Token cache: `~/.tesla_cache.json` (local only; best-effort chmod `0600`)
|
||||
- Optional: set `MY_TESLA_DEFAULT_CAR` to a vehicle display name to pick a default car via env var
|
||||
- Or persist a local default with: `python3 {baseDir}/scripts/tesla.py default-car "Name"` (writes `~/.my_tesla.json`; best-effort chmod `0600`)
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# List vehicles
|
||||
python3 {baseDir}/scripts/tesla.py list
|
||||
python3 {baseDir}/scripts/tesla.py list --json # machine-readable, privacy-safe
|
||||
|
||||
# Version
|
||||
python3 {baseDir}/scripts/tesla.py version
|
||||
python3 {baseDir}/scripts/tesla.py --version
|
||||
|
||||
# Debugging
|
||||
# If something fails unexpectedly, add --debug for a full traceback
|
||||
# (or set MY_TESLA_DEBUG=1)
|
||||
python3 {baseDir}/scripts/tesla.py --debug status --no-wake
|
||||
|
||||
# Pick a car (optional)
|
||||
# --car accepts: exact name, partial name (substring match), or a 1-based index from `list`
|
||||
python3 {baseDir}/scripts/tesla.py --car "Model" status
|
||||
python3 {baseDir}/scripts/tesla.py --car 1 report
|
||||
|
||||
# Set a default car (used when --car is not passed)
|
||||
python3 {baseDir}/scripts/tesla.py default-car "My Model 3"
|
||||
|
||||
# One-line summary (best for chat)
|
||||
python3 {baseDir}/scripts/tesla.py summary
|
||||
python3 {baseDir}/scripts/tesla.py summary --no-wake # don't wake a sleeping car
|
||||
|
||||
# Summary as JSON (privacy-safe)
|
||||
# Unlike `status --json`, this emits a small sanitized object (no location).
|
||||
# Includes `usable_level_percent` when the vehicle reports it.
|
||||
python3 {baseDir}/scripts/tesla.py summary --json
|
||||
python3 {baseDir}/scripts/tesla.py summary --json --raw-json # raw vehicle_data (may include location)
|
||||
|
||||
# One-screen report (chat friendly, more detail)
|
||||
# Includes battery/charging/climate + (when available) TPMS tire pressures.
|
||||
# Includes "Usable battery" when the vehicle reports it (helpful for health/degradation).
|
||||
# Also includes a quick openings summary (doors/trunk/frunk/windows) when available.
|
||||
# When available, includes a compact seat heater summary line.
|
||||
# When the vehicle reports it, includes scheduled departure / preconditioning / off-peak charging status.
|
||||
python3 {baseDir}/scripts/tesla.py report
|
||||
python3 {baseDir}/scripts/tesla.py report --no-wake
|
||||
|
||||
# Detailed status
|
||||
python3 {baseDir}/scripts/tesla.py status
|
||||
python3 {baseDir}/scripts/tesla.py status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py status --summary # include one-line summary + detailed output
|
||||
python3 {baseDir}/scripts/tesla.py --car "My Model 3" status
|
||||
|
||||
# JSON output (prints ONLY JSON; good for piping/parsing)
|
||||
# NOTE: `status --json` outputs *raw* `vehicle_data`, which may include location/drive_state.
|
||||
# Prefer `summary --json` (sanitized) or `report --json` (sanitized) unless you explicitly need the raw payload.
|
||||
python3 {baseDir}/scripts/tesla.py summary --json # sanitized summary object (no location)
|
||||
python3 {baseDir}/scripts/tesla.py report --json # sanitized report object (no location; includes scheduled charging + charge port state)
|
||||
python3 {baseDir}/scripts/tesla.py status --json # raw vehicle_data (may include location)
|
||||
python3 {baseDir}/scripts/tesla.py report --json --raw-json # raw vehicle_data (may include location)
|
||||
python3 {baseDir}/scripts/tesla.py summary --json --raw-json # raw vehicle_data (may include location)
|
||||
python3 {baseDir}/scripts/tesla.py charge status --json # includes usable battery + (when charging) power details (kW/V/A)
|
||||
|
||||
# Lock / unlock
|
||||
python3 {baseDir}/scripts/tesla.py lock
|
||||
python3 {baseDir}/scripts/tesla.py unlock
|
||||
|
||||
# Climate (status is read-only)
|
||||
python3 {baseDir}/scripts/tesla.py climate status
|
||||
python3 {baseDir}/scripts/tesla.py climate status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py climate on
|
||||
python3 {baseDir}/scripts/tesla.py climate off
|
||||
python3 {baseDir}/scripts/tesla.py climate defrost on
|
||||
python3 {baseDir}/scripts/tesla.py climate defrost off
|
||||
python3 {baseDir}/scripts/tesla.py climate temp 72 # default: °F
|
||||
python3 {baseDir}/scripts/tesla.py climate temp 22 --celsius
|
||||
|
||||
# Charging
|
||||
python3 {baseDir}/scripts/tesla.py charge status
|
||||
python3 {baseDir}/scripts/tesla.py charge status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py charge start --yes
|
||||
python3 {baseDir}/scripts/tesla.py charge stop --yes
|
||||
python3 {baseDir}/scripts/tesla.py charge limit 80 --yes # 50–100
|
||||
python3 {baseDir}/scripts/tesla.py charge amps 16 --yes # 1–48 (conservative guardrail)
|
||||
|
||||
# Scheduled charging (set/off are safety gated)
|
||||
python3 {baseDir}/scripts/tesla.py scheduled-charging status
|
||||
python3 {baseDir}/scripts/tesla.py scheduled-charging status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py scheduled-charging set 23:30 --yes
|
||||
python3 {baseDir}/scripts/tesla.py scheduled-charging off --yes
|
||||
|
||||
# Scheduled departure (read-only)
|
||||
# Shows scheduled departure, preconditioning, and off-peak charging flags (when the vehicle reports them).
|
||||
python3 {baseDir}/scripts/tesla.py scheduled-departure status
|
||||
python3 {baseDir}/scripts/tesla.py scheduled-departure status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py --json scheduled-departure status
|
||||
|
||||
# Location (approx by default; use --yes for precise coordinates)
|
||||
python3 {baseDir}/scripts/tesla.py location
|
||||
python3 {baseDir}/scripts/tesla.py location --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py location --digits 1 # coarser rounding
|
||||
python3 {baseDir}/scripts/tesla.py location --digits 3 # a bit more precise (still approximate)
|
||||
python3 {baseDir}/scripts/tesla.py location --yes
|
||||
|
||||
# Tire pressures (TPMS)
|
||||
python3 {baseDir}/scripts/tesla.py tires
|
||||
python3 {baseDir}/scripts/tesla.py tires --no-wake
|
||||
|
||||
# Openings (doors/trunks/windows)
|
||||
python3 {baseDir}/scripts/tesla.py openings
|
||||
python3 {baseDir}/scripts/tesla.py openings --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py openings --json
|
||||
|
||||
# Trunk / frunk (safety gated)
|
||||
python3 {baseDir}/scripts/tesla.py trunk trunk --yes
|
||||
python3 {baseDir}/scripts/tesla.py trunk frunk --yes
|
||||
|
||||
# Windows
|
||||
python3 {baseDir}/scripts/tesla.py windows status
|
||||
python3 {baseDir}/scripts/tesla.py windows status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py windows status --json
|
||||
|
||||
# Windows (safety gated)
|
||||
python3 {baseDir}/scripts/tesla.py windows vent --yes
|
||||
python3 {baseDir}/scripts/tesla.py windows close --yes
|
||||
|
||||
# Seat heaters
|
||||
python3 {baseDir}/scripts/tesla.py seats status
|
||||
python3 {baseDir}/scripts/tesla.py seats status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py seats status --json
|
||||
|
||||
# Seat heaters (safety gated)
|
||||
# seat: driver|passenger|rear-left|rear-center|rear-right|3rd-left|3rd-right (or 0–6)
|
||||
# level: 0–3 (0=off)
|
||||
python3 {baseDir}/scripts/tesla.py seats set driver 3 --yes
|
||||
|
||||
# Sentry Mode (status is read-only; on/off safety gated)
|
||||
python3 {baseDir}/scripts/tesla.py sentry status
|
||||
python3 {baseDir}/scripts/tesla.py sentry status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py sentry on --yes
|
||||
python3 {baseDir}/scripts/tesla.py sentry off --yes
|
||||
|
||||
# Charge port door
|
||||
python3 {baseDir}/scripts/tesla.py charge-port status
|
||||
python3 {baseDir}/scripts/tesla.py charge-port status --no-wake
|
||||
python3 {baseDir}/scripts/tesla.py charge-port status --json
|
||||
|
||||
# Mileage tracking (odometer) — local SQLite
|
||||
python3 {baseDir}/scripts/tesla.py mileage init
|
||||
python3 {baseDir}/scripts/tesla.py mileage record --no-wake --auto-wake-after-hours 24
|
||||
python3 {baseDir}/scripts/tesla.py mileage status
|
||||
python3 {baseDir}/scripts/tesla.py mileage export --format csv
|
||||
python3 {baseDir}/scripts/tesla.py mileage export --format csv --since-days 7
|
||||
python3 {baseDir}/scripts/tesla.py mileage export --format json
|
||||
python3 {baseDir}/scripts/tesla.py mileage export --format json --since-ts 1738195200
|
||||
|
||||
# Charge port door open/close (safety gated)
|
||||
python3 {baseDir}/scripts/tesla.py charge-port open --yes
|
||||
python3 {baseDir}/scripts/tesla.py charge-port close --yes
|
||||
|
||||
# Fun / attention-grabbing
|
||||
python3 {baseDir}/scripts/tesla.py honk --yes
|
||||
python3 {baseDir}/scripts/tesla.py flash --yes
|
||||
```
|
||||
|
||||
## Safety defaults
|
||||
|
||||
Some actions require an explicit confirmation flag:
|
||||
- `unlock`, `charge start|stop|limit|amps`, `trunk`, `windows`, `seats set`, `sentry on|off`, `honk`, `flash`, `charge-port open|close`, and `scheduled-charging set|off` require `--yes`
|
||||
- `location` is *approximate* by default; add `--yes` for precise coordinates (or `--digits N` to control rounding)
|
||||
|
||||
## Privacy
|
||||
|
||||
- Credentials are cached locally only (`~/.tesla_cache.json`).
|
||||
- Do not commit tokens, logs, VINs, or location outputs.
|
||||
Reference in New Issue
Block a user