Work/Apps

Beach Butler

Beach Butler turns a Tesla's accessory power on or off on a schedule, by clock time, by sunset, and by where the car is parked. The phone app shows the car and lets you send a command now.

DemoiOS

The demo simulates the car and uses invented places and data. It sends nothing to Tesla.

Home. Where the car is, and On and Off for accessory power, with the next rule due.
  1. 01Home. Where the car is, and On and Off for accessory power, with the next rule due.
  2. 02On. The car is awake, and the log shows a command sent from the app.
  3. 03Off. The same screen with accessory power off.
  4. 04Rules. Clock, sunset, and arrival rules, each with its own switch.
  5. 05A rule paused with its switch. It shows Done for today after it fires.
  6. 06A rule. When it runs, on which days, and what it did last.
  7. 07Activity. What the butler did or skipped, and why.
  8. 08Car. Reading a sleeping car would wake it. The app waits for you to say so.
  9. 09Waking the car before a read.
  10. 10Car. Battery, charging, cabin, and tires, read on demand.
  11. 11Settings. The demo vehicle, the mode, and what is new.

Sample data

What it does

Each rule has a time, a place such as Home, and a setting. The time can be a clock time or a solar one, like two hours before sunset. When a rule comes due, the butler checks where the car is and acts only if it is parked at that place. Anywhere else, it skips the rule, and the log says why in plain words.

An arrival rule covers the car that gets home after the evening rule has already run. It watches one place during a window and fires when the car shows up. In the app, two buttons send a command now, and a sleeping car shows a Wake and read button instead of waking on its own. You choose.

Hard problem we solved

Proving to Tesla that it is really us

Every command has to get past Tesla twice. Newer cars accept a command only if it carries a signature from a key paired to that car. And the login behind it is a refresh token that works once and hands back a new one. Lose the new one, and the butler is locked out.

The server, a small Python service, signs every command with Tesla's own open-source command tool, which holds the paired key. On every token use it writes the fresh refresh token to a persistent volume, so a redeploy cannot lose it. The iPhone app never touches any of this. It talks to the server over HTTPS with a bearer token and reads cached state, which costs nothing at Tesla.

Beach ButlerSwiftUI iPhone appHTTPS APIbearer token, cachedreadsButler loop20 s tick, solar timesVolumetoken, state, rulesCommand toolsigns each commandTesla Fleet APIstate, location, wakeTeslachecks the signature

Where it stands

The demo on this page is the iPhone app alone, running on made-up data with a simulated car and sending nothing to Tesla. The real system is a private build for personal use.

Gallery

Sample data. Fictional names and figures.

Shul software

The whole synagogue office in one app, from membership and seats to pledges and the books.

Next in Platforms