Public Access
- net/ha_api: the HTTP requests run in a FreeRTOS task on core 0; loop()
only hands over copies through queues. The web UI's test button polls.
No more 3-4 s loop() stalls once a minute; timeout raised to 5 s.
- Progress bar page element (page format 4, v3 pages are converted)
- Plex user setting (settings v6): {plex_user} in entity ids
- Plex page (examples): watchers, play/pause icon, title, progress
- Bitmaps cached in RAM: a LittleFS read took ~100 ms on every render
and web preview; long JSON lists sent in 2 KB pieces
- Backup includes the refresh settings and the Plex user
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
68 lines
3.5 KiB
Markdown
68 lines
3.5 KiB
Markdown
# Home Assistant
|
|
|
|
[← Back to the README](../README.md)
|
|
|
|
The ESP32 connects to Home Assistant in two ways:
|
|
|
|
- **MQTT** (with discovery): the display's own switches, dropdowns, sensors and buttons.
|
|
Broker, user and password are in the web UI, Home Assistant tab (an empty broker uses
|
|
`secrets.h`). Changing them restarts the ESP32.
|
|
- **REST API**: values of any entity for the dynamic pages and the trigger rules. Set the
|
|
URL (empty: `http://<broker>:8123`, plain http only, use the IP address) and a
|
|
long-lived access token (Home Assistant, your profile, Security tab) in the same tab.
|
|
|
|
## Entities
|
|
|
|
- `FlipDot Display Power` switch: off clears the display and cuts power through the relay.
|
|
- `FlipDot Display Mode` dropdown: what is shown during the day, a dynamic page ("Clock"
|
|
first) or one of the bitmaps (the same choice as in the web UI).
|
|
- `FlipDot Display Off image` dropdown: what is left on the dots when the display
|
|
switches off (at night or with the Power switch): blank or one of the bitmaps.
|
|
- `FlipDot Display IP` sensor: the ESP32's IP address.
|
|
- `FlipDot Display Stopwatch` switch and `FlipDot Display Stopwatch reset` button: the
|
|
stopwatch of the dynamic pages.
|
|
- `FlipDot Display Shown page` sensor: what the display shows now (schedule, rule or
|
|
chosen page). `FlipDot Display Back to schedule` button: ends a page chosen by hand.
|
|
- `FlipDot Display Firmware` sensor: version and health, e.g. `2.7.2, ok, 0 crashes, recovery ok`.
|
|
- `FlipDot Display Recovery` button: restarts into the [recovery app](recovery.md) for 10
|
|
minutes.
|
|
|
|
The unique ids of these entities never change, so automations and dashboards keep working
|
|
after firmware updates.
|
|
|
|
## Values on dynamic pages
|
|
|
|
A Home Assistant value element on a [page](pages.md) shows an entity's state or one of
|
|
its attributes, as a number (multiplier, decimals, auto unit, without minus sign), a
|
|
duration, a time from a timestamp, or with own texts per state (see the
|
|
[web UI](web-ui.md#pages)).
|
|
|
|
**Home Assistant values** on the shown page are read every minute, one entity at a time,
|
|
by a task of their own (on the ESP32's other core), so a slow or unreachable Home
|
|
Assistant never holds up the display or the web UI. An unknown or unreachable value shows
|
|
`--`. The display only changes
|
|
when the shown text changes, so round values with the decimals setting.
|
|
|
|
## Rules
|
|
|
|
The [schedule](web-ui.md#schedule) can bring a page to the front from a Home Assistant
|
|
state, e.g. the 3D printer page while `sensor.mainsailos_current_print_state` is
|
|
`printing`. Each rule is read at its own interval; when Home Assistant can't be reached it
|
|
is read once a minute at most, so the display keeps running.
|
|
|
|
## Plex and Tautulli
|
|
|
|
The **Plex** page (in [examples/home-pages.json](../examples/home-pages.json)) uses Home
|
|
Assistant's Plex and Tautulli integrations, no extra firmware:
|
|
|
|
- `sensor.mangavalkserver` (Plex): how many are watching.
|
|
- `sensor.{plex_user}_state` (Tautulli, per user): `playing`, `paused`, ... chooses the icon
|
|
(bitmaps `plex playing`, `plex paused`, `plex buffering`).
|
|
- `sensor.{plex_user}_full_title` and `sensor.{plex_user}_progress` (Tautulli, per user):
|
|
the title and the progress bar. Home Assistant creates these disabled: enable them on
|
|
the Tautulli user's device in Home Assistant.
|
|
|
|
`{plex_user}` is the Plex user set in the web UI (Home Assistant tab), written the way Home
|
|
Assistant puts it in entity ids (`MangaValk` -> `mangavalk`). A rule (Schedule tab) adds
|
|
the page to the rotation while `sensor.mangavalkserver` is above 0.
|