ESPHome based Lilygo T5 Plus Informer for Home Assistant

Hello everybody!

Introduction and motivation

I have been using Home Assistant and ESPHome for almost 2 years now and automated a lot of trivial stuff around my house.

I love these projects and rely on them day by day. There are many custom projects that I have made until now for my personal use and in all of them I used the information shared by this community, so I decided to give something back and share this project, hoping that it will be interesting and helpful for somebody else.

Project Description

As mentioned in the title, this project is a Lilygo T5 Plus based informer, designed to display some useful information from Home Assistant using the power of ESPHome.

It contains all the relevant information that I needed to make it work, and by “work” I mean to get it compiled, uploaded and displaying the right information for me.

It was tricky sometimes because of the esp32-s3 chip. Due to this, there were some difficulties at compilation in ESPHome, but I managed to do it in the end.

Below is a photo of the end result that I have obtained.

All the relevant configuration files, assembly steps and case 3D files can be found in the github repository here.

5 Likes

Hi,
Is this still working for you with the latest ESPHome version for HA?
I get the error: Configuration does not match the platform of the connected device. Expected an ESP32 device.

Hello @MDot,

I have the latest 2024.11.2 ESPHome Device Compiler installed as Add on in my system and I have just tested compiling the software for this project.
The program was compiled without any issue.

I don’t have a .esphome folder within my esphome main folder, so I created all the directories manually, Config/esphome/.esphome/build//boards/ and placed the lilygo-t5-47-plus.json file there. Trying to compile with the Esphome dev compiler (v2024.12.0-dev), and getting ‘UnknownBoard: Unknown board ID ‘lilygo-t5-47-plus’’

Can you help? Esphome is installed as an addon within my HA.

So the .esphome folder inside the esphome main folder exists when you are running ESPHome as a standalone container. If you run it as HASS Add On, it is a little bit different.

For this scenario you will need access to the OS, via ssh.
When you are logged in to the machine running your Home assistant, you should go to the directory /mnt/data/supervisor/addons/data/<add on container name (ending with _esphome)>/build/<your device name>/boards and place the .json file here.

For example, the “boards” path for me looks like this /mnt/data/supervisor/addons/data/5c53de3b_esphome/build/esphome-web-9e3bd4/boards.

After this it should find the board when you try to compile it.

Let me know if this helps.

PS: Sorry for my delayed answer. :sweat_smile:

@MDot Could you solve it? Does it work this way?

Finally. Getting root access to HAOS was not, that easy. :wink:

After successfully coping lilygo-t5-47-plus.json to “boards”, I received another compiling error:

from .piolibdeps/esp32-paper/SensorLib/src/bosch/BoschParse.cpp:30:
.piolibdeps/esp32-paper/SensorLib/src/SensorLib.h:34:10: fatal error: SPI.h: No such file or directory

*************************************************************
* Looking for SPI.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:SPI.h"
* Web  > https://registry.platformio.org/search?q=header:SPI.h
*
*************************************************************

 #include <SPI.h>
          ^~~~~~~
compilation terminated.
*** [.pioenvs/esp32-paper/lib049/SensorLib/bosch/BoschParse.cpp.o] Error 1
========================== [FAILED] Took 6.76 seconds ==========================

I solved it with “root” access again and renamed the affected files:
(they can be found in one of the subfolders of /mnt/data/supervisor/addons/data/5c53de3b_esphome/build/esp32-paper/.piolibdeps/

  • bosch/common:
  • bosch/common/bosch_interfaces.cpp → bosch/common/bosch_interfaces.cpp.disabled
  • bosch/common/common.cpp → bosch/common/common.cpp.disabled
  • bosch:
  • bosch/BoschParse.cpp → bosch/BoschParse.cpp.disabled
  • touch:
  • touch/TouchClassCST226.cpp → touch/TouchClassCST226.cpp.disabled
  • touch/TouchClassCST816.cpp → touch/TouchClassCST816.cpp.disabled
  • bhy2:
  • bosch/bhy2_bsec.c → bosch/bhy2_bsec.c.disabled
  • bosch/bhy2_head_tracker.c → bosch/bhy2_head_tracker.c.disabled
  • bosch/bhy2_hif.c → bosch/bhy2_hif.c.disabled

Now it works. Thank you!

1 Like

I followed your advice, only I also changed the name TouchDrvInterface.cpp.disabled
The firmware was successfully written.
But nothing is displayed on the screen. Does it matter that I am currently working without Homeassiatant

Hello.

In the provided configuration example for the device there is this section:

  - platform: homeassistant
    entity_id: device_tracker.dina_s_phone
    id: dina_location
    internal: true
    on_value: # Actions to perform once data for the last sensor has been received
      then:
        - script.execute: all_data_received  

This sensor pulls data from HASS and when it has a value, it triggers the script which updates the screen.

If you used this code then the screen will not be updated and populated with information unless the sensor receives data from HASS.

sorry for stupid questions please.
I added this code to update the screen every minute, but the screen still does not update.

I am going to use the screen on the wall with constant power

time:
  - platform: pcf8563
    id: pcf_time
    address: 0x51  
    update_interval: never
  - platform: homeassistant
    id: ntp
    timezone: Europe/Chisinau
    on_time_sync:
      then:
        - pcf8563.write_time:
        - component.update: sunrise
        - component.update: sunset
    on_time:
      - seconds: 0
        minutes: /1 # Update jede Minute
        hours: 8-22
        then:
          - component.update: t5_display
      - seconds: 0
        minutes: /1 # Update alle 30 Minuten
        hours: 0-7, 23
        then:
          - component.update: t5_display

At this point I am not sure what is the problem.

To continue troubleshooting, please provide the whole yaml config, logs output and maybe a picture of the device.

PS: Don’t forget to remove sensitive information from the outputs.

It’s my fault, I didn’t read your Github well

The screen is refreshing.
Now the task is to receive current data from my homeassistant server.

I read the instructions on the ESPhome website. And I did not find how to specify the IP address of the server directly.

You do not need to specify the IP address of your Home Assistant instance manually.

If your devices are connected to the same subnet, it will be automagically detected in Home Assistant and you need to just add it.
After this, your ESPHome device will be able to access the sensors data.