Install
openclaw skills install tesla-smart-chargeSchedules Tesla charging on specified dates with target battery % and times, managing charge limits during and after sessions for battery health.
openclaw skills install tesla-smart-chargeSchedule Tesla charging to reach target battery % by a specific time. Runs daily via cron to check a schedule file and only charges on configured dates.
Required:
TESLA_EMAIL (your Tesla account email)tesla skill must be installed and properly configured with Tesla API credentialsSecurity improvements (v1.1.0+):
Copy the example schedule file:
cp skills/tesla-smart-charge/references/tesla-charge-schedule-example.json \
memory/tesla-charge-schedule.json
Edit memory/tesla-charge-schedule.json with your planned charge dates:
{
"charges": [
{
"date": "2026-02-01",
"target_battery": 100,
"target_time": "08:00"
},
{
"date": "2026-02-03",
"target_battery": 80,
"target_time": "07:00"
}
]
}
clawdbot cron add \
--name "Tesla daily charge check" \
--schedule "0 0 * * *" \
--task "TESLA_EMAIL=your@email.com python3 /path/to/skills/tesla-smart-charge/scripts/tesla-smart-charge.py --check-schedule"
For better charge limit management, run both:
At midnight (initialize daily charge):
clawdbot cron add \
--name "Tesla daily charge check" \
--schedule "0 0 * * *" \
--task "TESLA_EMAIL=your@email.com python3 /path/to/skills/tesla-smart-charge/scripts/tesla-smart-charge.py --check-schedule"
Every 30 minutes during active hours (manage session limits):
clawdbot cron add \
--name "Tesla session management" \
--schedule "*/30 8-23 * * *" \
--task "TESLA_EMAIL=your@email.com python3 /path/to/skills/tesla-smart-charge/scripts/tesla-smart-charge.py --manage-session"
The second job ensures charge limits are properly updated throughout the day:
Each day at midnight (or whenever cron runs):
memory/tesla-charge-schedule.jsonSession Management:
charge_limit_percent (default 100%)post_charge_limit_percent (default 80%)Result: One cron job that handles both charging and limit management — no need to create new jobs for each date!
{
"charges": [
{
"date": "2026-02-01",
"target_battery": 100,
"target_time": "08:00",
"charge_limit_percent": 100,
"post_charge_limit_percent": 80
},
{
"date": "2026-02-03",
"target_battery": 80,
"target_time": "07:00",
"charge_limit_percent": 100,
"post_charge_limit_percent": 80
}
]
}
Fields:
date: YYYY-MM-DD format (when to charge)target_battery: Target battery % (default: 100)target_time: HH:MM when charging should complete (default: 08:00)charge_limit_percent: Charge limit during session (default: 100%, optional)post_charge_limit_percent: Charge limit after session ends (default: 80%, optional)export TESLA_EMAIL="your@email.com"
Default: 2.99 kW (home charger, ~13A @ 230V)
Adjust in cron task or when calling manually:
--charger-power 3.7 # 16A @ 230V
--charger-power 7.4 # 32A @ 230V (dual-phase)
TESLA_EMAIL="your@email.com" python3 scripts/tesla-smart-charge.py --check-schedule
Output:
TESLA_EMAIL="your@email.com" python3 scripts/tesla-smart-charge.py --manage-session
This command:
Tip: Run this hourly or every 30 minutes during active charging days for real-time limit management.
python3 scripts/tesla-smart-charge.py --show-schedule
python3 scripts/tesla-smart-charge.py --show-plan
{
"charges": [
{"date": "2026-02-02", "target_battery": 100, "target_time": "08:00"},
{"date": "2026-02-03", "target_battery": 100, "target_time": "08:00"},
{"date": "2026-02-04", "target_battery": 100, "target_time": "08:00"},
{"date": "2026-02-05", "target_battery": 100, "target_time": "08:00"},
{"date": "2026-02-06", "target_battery": 100, "target_time": "08:00"}
]
}
{
"charges": [
{"date": "2026-02-01", "target_battery": 80, "target_time": "07:00"},
{"date": "2026-02-04", "target_battery": 80, "target_time": "07:00"},
{"date": "2026-02-07", "target_battery": 80, "target_time": "07:00"}
]
}
{
"charges": [
{"date": "2026-02-01", "target_battery": 100, "target_time": "08:00"},
{"date": "2026-02-02", "target_battery": 80, "target_time": "07:00"},
{"date": "2026-02-03", "target_battery": 60, "target_time": "06:00"}
]
}
Charge time is calculated as:
energy_needed_kwh = (battery_capacity × (target - current) / 100) / charge_efficiency
charge_time_hours = energy_needed_kwh / charger_power_kw
start_time = target_time - charge_time_hours - margin_minutes
Where:
battery_capacity: Vehicle battery size (kWh, default: 75)charger_power_kw: Your charger's power (kW, default: 2.99)charge_efficiency: ~0.92 (typical AC charging)margin_minutes: Buffer before target (default: 5 min)Example: 75 kWh battery at 50%, charging to 100% by 08:00 with 2.99 kW:
Add new charges: Edit memory/tesla-charge-schedule.json — cron picks up changes on next run
Plan ahead: Add weeks of charges in advance, script handles date logic
One cron job: No need to create separate jobs — one daily check does it all
See what's next: Each run displays the next scheduled charge date
When calling manually with --target-time:
python3 scripts/tesla-smart-charge.py \
--target-time "HH:MM" \
--target-battery 100 \
--charger-power 2.99 \
--battery-capacity 75 \
--margin-minutes 5
For schedule-based operation, use --check-schedule (reads from JSON file).