PRE-LAUNCH · WAITLIST OPEN

Your Home Assistant.
On the wall.

ESPHome-powered firmware plus a ready-made Home Assistant config package for ESP32 touch panels — flash it, map your entities once, done.

ESPHOME + LVGL·HA NATIVE API·100% LOCAL·OTA

01 — How it works

Three steps. Then it just hangs there, working.

No YAML archaeology, no display driver spelunking. The firmware and the Home Assistant package are built to meet in the middle.

[ 01 ]

Flash the firmware

Put the ESPHome-based firmware on your board over USB. From then on, updates arrive over the air.

[ 02 ]

Import the HA package

Drop the bundled config package into Home Assistant. It ships the template sensors, light groups, universal media player, and camera proxies the panel expects.

[ 03 ]

Map your entities onceNO REFLASH — EVER

The firmware never touches your real entity ids. It only knows stable panel_* aliases, and the HA package maps each alias to the real entity. Rename something in Home Assistant? Edit one line in the package and reload — the panel on the wall never notices. The rename treadmill ends here.

# panel_aliases.yaml — the firmware only sees panel_*
template:
  - sensor:
      - name: panel_temp_living
        unit_of_measurement: "°C"
        state: "{{ states('sensor.living_room_temp') }}"
#                        ↑ renamed in HA? edit this line. done.

02 — Features

Eight pages, one glance away.

A dark LVGL interface with a left icon rail — built to be read across a room and driven with a thumb.

Home

1/8

The glance page — the state of the house on one screen.

Climate

2/8

Room temperatures, side by side, at a glance.

Boiler

3/8

Heating status — flame, temperatures, target.

Cameras

4/8

Snapshots served through the HA camera proxy.

Lights

5/8

Toggle and dim — changes sync both ways with HA.

Audio

6/8

Playback control through a universal media player.

Servers

7/8

Your homelab's vitals, up on the wall.

Scenes

8/8

One tap fires a Home Assistant scene.

100% local

Talks to Home Assistant over the native API. No cloud, no accounts — nothing leaves your network.

Two-way control

Toggle lights, set brightness, fire scenes — straight from the wall, reflected back in HA.

Night mode

The screen blanks to black on a night schedule — no bright dashboard glowing in the hallway.

OTA updates

New firmware lands over the air — after the first USB flash, you shouldn’t need the cable again.

03 — Hardware

Runs on boards you can actually buy.

Off-the-shelf Waveshare ESP32-S3 touch panels — no custom PCBs, no soldering.

Waveshare 4.3″

ESP32-S3 Touch LCD

VERIFIED · DAILY-DRIVER
  • 800 × 480 RGB display
  • GT911 capacitive touch
  • ESP32-S3, wall-mount landscape

Waveshare 5″

ESP32-S3 Touch LCD

  • 1024 × 600 RGB display
  • Capacitive touch
  • ESP32-S3, larger-format variant

MORE BOARDS ON THE ROADMAP

04 — Waitlist

Be first on the wall.

ESP32Home is pre-launch. Leave your email and you'll hear the moment it's ready — the waitlist gets the date before anyone else.

You’re on the list — we’ll email you at launch.

That doesn’t look like a valid email address — please try again.

The waitlist isn’t reachable right now — email hello@esp32home.app and we’ll add you by hand.

Your email is stored solely to notify you about the launch — nothing else, shared with no one.

05 — FAQ

Fine print, out loud.

Does it need the cloud?

No. The panel talks to Home Assistant directly over the local native API. No cloud, no accounts — nothing leaves your network.

Do I need ESPHome skills?

No. You flash the firmware, import the HA package, and map your entities. ESPHome is under the hood — you don't write any of it.

What happens when I rename an entity in Home Assistant?

Nothing breaks. The firmware only references stable panel_* aliases; the mapping to your real entities lives in the HA package. Edit one line there and reload — no reflash.

Which Home Assistant version do I need?

A recent Home Assistant with the native API enabled. Exact version support will be published at launch.

When does it launch?

No date to announce yet — the waitlist hears first. Joining it is how you find out the moment there is one.