Skip to main content

Firmware Customization

Since the firmware for the Transit Tracker is based on ESPHome, it's possible to heavily customize it to display just about anything you'd like. It's recommended to already be familiar with ESPHome if you'd like to follow this guide. If you run into any issues or have questions, you can pop into the ESPHome Discord where many community members are happy to help out.

Since the scope of customization is so wide, this guide will simply provide a few examples to help you get started.

Prerequisites

You should have ESPHome set up through one of the methods in the "Getting started" section of the ESPHome website.

Create a configuration

Using ESPHome Device Builder

If you're using ESPHome Device Builder, then it should automatically detect and offer to import the configuration for your Transit Tracker.

Manually

If you prefer to create your own configuration, you can make a file somewhere named transit-tracker.yaml and include the stock firmware package:

packages:
transit_tracker: github://EastsideUrbanism/transit-tracker/firmware/transit-tracker.yaml@main

Extend the configuration

Once you have a configuration ready to go, you can use ESPHome's extend and remove features to modify it as you wish. Here is an example which removes the built-in IP address page, adds a clock page, and switches between it every five seconds:

display:
- id: !extend matrix
pages:
- id: !remove ip_address_page
- id: clock_page
lambda: |-
int x = it.get_width() / 2;
int y = it.get_height() / 2;
it.strftime(x, y / 2, id(pixolletta), COLOR_ON, TextAlign::CENTER, "%r", id(sntp_time).now());
it.strftime(x, y + (y / 2), id(pixolletta), COLOR_ON, TextAlign::CENTER, "%B %d, %Y", id(sntp_time).now());

interval:
- interval: 5s
then:
- display.page.show_next: matrix
- component.update: matrix