Your stop,
on your shelf.

Live BKK departures for the stops you actually use, on a little screen by the door. One glance tells you when to leave. About €19 in parts. Open firmware, open API.

Connecting to BKK…

Shaped like the thing you're waiting for

The case is a BKK vehicle squashed into a desk toy: one of the blue electric buses or a yellow Ganz tram. The screen slides in between the doors, so departures show up where the windows would be.

The ESP32 and wiring hide inside the body, and the USB cable leaves through the back. The STL files aren't published yet.

How it works

  1. $ cargo install espflash$ espflash write-bin 0x0 homestop.bin

    1Flash the firmware

    One image, one espflash command. The firmware is native Rust on ESP-IDF. Use a data cable: charge-only USB cables can't flash.

  2. 12

    2Pick your stops

    Add a display in the app, copy its token, then pick its stops on the map. It loops through them in order.

  3. 3Plug it in

    Any 5 V phone charger with 1 A or more, and any cable now that it's flashed. Then connect it to Wi-Fi from your phone, as below.

First boot

No serial console needed.

  1. On first boot the display starts its own Wi-Fi network called HomeStop, with no password.
  2. Join it from your phone. The setup page opens.
  3. Pick your home Wi-Fi, enter its password and paste the display token from Add display.
  4. It saves, restarts, then shows departures. To run setup again, hold BOOT for 3 seconds.

Parts

PartWhereRoughly
ESP32 boardA classic ESP32 dev board with 4 MB flash. The reference is an ESP32-D0WDQ6 board with a CP2102 USB chip.Typical listingTypical listing€6
LCD panel2.4" or 2.8" ILI9341 SPI TFT, 240×320, mounted uprightTypical listingTypical listing€8
CablesA USB data cable for flashing and nine jumper wiresTypical listingTypical listing€3
PowerA 5 V phone charger, 1 A or more. Laptop ports and thin cables can brown it out when Wi-Fi starts.A spare–
Capacitor (optional)470 to 1000 µF across 5V and GND, if the board still resets when Wi-Fi startsIf needed–
Case (optional)3D-printed. The STL is not published yet.Print it€2
TotalPrices are rough and change often.≈ €19

Wiring

PanelESP32 GPIO
SCK18
MOSI (SDI)23
MISO (SDO)19
CS14
DC27
RST33
Backlight (LED)32

Plus power and ground. Same pins as an M5Stack.

Prices are rough and change often.

Bring your own hardware

The display token works with anything that speaks HTTPS: an e-ink panel, a Home Assistant sensor, your shell prompt. One call returns every stop on the display with its next four departures, already in BKK's route colours.

It's the same call the reference firmware makes. Every 30 seconds it fetches the board with nothing but its token, checks the certificate against the ESP-IDF CA bundle and sets its clock from serverTime, so it needs no NTP. Each stop stays on screen for 8 seconds.

Read the API reference →
$ curl -H "Authorization: Bearer $TOKEN" \
    "$HOMESTOP_URL/api/v1/display/board"

{
  "serverTime": 1792948235,
  "stops": [
    {
      "id": "F01019",
      "name": "Astoria",
      "departures": [
        {
          "route": "M2",
          "headsign": "Örs vezér tere",
          "departureTime": 1792948295,
          "live": false,
          "canceled": false,
          "color": "E41F18",
          "textColor": "FFFFFF"
        },
        {
          "route": "M2",
          "headsign": "Örs vezér tere",
          "departureTime": 1792948595,
          "live": false,
          "canceled": false,
          "color": "E41F18",
          "textColor": "FFFFFF"
        }
      ]
    }
  ],
  "attribution": "Data: BKK"
}