My little room touchpads started as lighting controllers, but they are slowly turning into proper room controllers.

The hardware is a Guition JC3248W535, a 3.5 inch ESP32-S3 touch display, running ESPHome with LVGL. I printed a desktop enclosure I found on MakerWorld: Guition JC3248W535 3.5 ESP32 Desktop Enclosure.

I have these in every room in the house.

The latest version adds a page for controlling the aircon in that room. The aircon button opens a dedicated LVGL page with the current room temperature, set point, plus and minus controls, and cool, heat, and off buttons. The page times out and returns to the home screen; the original version used a one minute timeout, and the current code makes that timeout a per-room setting.

The project is built around shared ESPHome packages. There is a common hardware and screen setup for the ESP32-S3 touch display, a shared LVGL layout, reusable light buttons, and then small room-specific files that bind those widgets to the right Home Assistant entities.

packages:
  common: !include common.yaml
  aircon: !include
    file: aircon-page.yaml
    vars:
      aircon_climate_entity_id: climate.heatpump_3_bedroom_ac
      aircon_home_page_id: home

<<: !include
  file: layout.yaml
  vars:
    button_widgets:
      - <<: !include
          file: light-button.yaml
          vars:
            uid: room_lamps
            entity_id: light.bedroom_lamps
            label: Room

      - <<: !include
          file: aircon-button.yaml
          vars:
            label: Aircon

The header shows time and weather data from Home Assistant.

The screen power logic checks the sun state, time of day, and whether the room lights are already on before deciding whether the display should wake normally or only for a few seconds.

The case is printed in PLA, which is slippery, so I stuck adhesive door buffers to the bottom to stop them sliding backwards when touched.

Underside of the room controller with adhesive door buffers to stop the PLA case sliding

Original Mastodon posts: bedroom lighting controller feet and aircon page on the room touchpad.