ESPHome lets you easily create LCD menus

Disclosure: This post contains affiliate links. If you click through and make a purchase, I will earn a commission, at no additional cost to you. Read my full disclosure here.

Opening up the world of DIY electronics to those that have never touched a line of code in their life is arguably one of the best things ESPHome has done. The ability to easily create LCD menus, which ESPHome added in version 2022.11, will add a new dimension to those looking to interact with their nodes visually.

A communality among 3D printers

You will know the type of LCD and menu this component uses if you have ever interactive with a Prusa i3, or any other Mendel-style 3D-printer. These character-based LCDs are very basic and offer something in the range of 8×5 pixels per character. To navigate these types of LCD menus, a rotary encoder with a button or a five-button joystick controller is used.

A Prusa i3 3D-printer's menu, which is displayed in white text on a blue background. The display shows the current speed, nozzle, bed, and fan speed settings.
The screen on a Prusa MK3S+ (source: Prusa)

Why ESPHome's LCD Menu component matters

You could look at this new component as something of a gimmick or niche feature that only a handful of nerds will make use of. In its current state, that might indeed be so. After all, who wants to control their smart home using a character-based display? There definitely are better options available. However, the LCD Menu component is only one part of the Display Menu component.

The Display Menu documentation says that currently the character-based LCDs are supported using the LCD Menu integration. Considering that, it is fair to assume that the component is far from finished. If you, for example, want to create an information screen with one of Waveshare's E-Paper displays, you are currently forced to use the Display Rendering Engine. If this process could be made easier using the newer component, I'm sure we would be seeing many more projects.

A character-based LCD with a rotary encoder and speaker.
A character-based LCD with rotary encoder

Which character-based LCDs does ESPHome support?

ESPHome allows you to use HD44780-compatible character-based LCDs. These come in various sizes, though most of them will have around twenty columns and four rows, or sixteen columns and two rows. There are multiple versions of the display, and depending on your project, it could be relevant:

If you are desperate to start a project but can't find the HD44780-compatible LCD version you need, there is also the possibility of adding custom characters. Eight custom characters, to be precise. You can easily generate these using, for example, lcdchargen's Custom Character Generater for HD44780 LCD Modules. You can then simply paste the output into your ESPHome YAML.

A portrait photo oif Liam Alexander Colman, the author, creator, and owner of Home Assistant Guide wearing a suit.

About Liam Alexander Colman

is an experienced Home Assistant user who has been utilizing the platform for a variety of projects over an extended period. His journey began with a Raspberry Pi, which quickly grew to three Raspberry Pis and eventually a full-fledged server. Liam's current operating system of choice is Unraid, with Home Assistant comfortably running in a Docker container.
With a deep understanding of the intricacies of Home Assistant, Liam has an impressive setup, consisting of various Zigbee devices, and seamless integrations with existing products such as his Android TV box. For those interested in learning more about Liam's experience with Home Assistant, he shares his insights on how he first started using the platform and his subsequent journey.

Leave a comment

Share to...