CTRL ONE
Just got your CTRL ONE? Start with the setup guide to get it up and running, connected to Home Assistant.
The CTRL ONE is a room controller with a touchscreen ePaper display, thermostat and environmental sensor in a single device. It mounts to a wall or stands on a surface, and displays temperature, humidity and CO2 while providing buttons and sliders for controlling a home through Home Assistant.
Its sensor is a factory-calibrated Sensirion SCD40 that measures temperature, humidity and CO2. The sensor is positioned in a corner cutout, separated from the heat-generating components and shielded from draughts and direct sunlight.
The firmware is ESPHome, and the ESPHome configuration is open source too. For a full feature overview, see the product page.
Documentation pages
This documentation is split into the following pages:
- ESPHome configuration - how the firmware is put together and how to adapt it.
- LVGL grid and widgets - how the display grid works and how to place and customise widgets.
- The add-on connector - the 8-pin interface on the back of the device.
- 24VAC thermostat add-on
- Breakout add-on
- Buzzer add-on
- 3D models - the bezel, mounts and stand design files.
Specifications
Microcontroller | Espressif ESP32-C6, single-core RISC-V processor |
Firmware | ESPHome 2026.7.0 or higher |
Wireless connectivity | 2.4 GHz WiFi 6 in the out-of-box firmware. Bluetooth 5 LE, Zigbee and Thread possible through configuration changes |
Power input | 5 V over the USB-C port, 4.5 V - 28 V DC through the add-on slot |
USB connectivity | USB-C port exposing the flashing interface of the ESP32 |
Display | 300 x 400 ePaper display with touchscreen and front light, supporting partial refresh |
Display layout | 4-column x 6-row grid of widgets (see the LVGL grid and widgets page) |
Sensors | Sensirion SCD40 temperature, humidity and CO2 sensor; analog ambient light sensor (uncalibrated) |
Measurement interval | 30 s by default, configurable down to 5 s |
Indicator | Rear-facing RGB indicator light |
Expandability | 8-pin add-on board slot exposing RX, TX, GPIO1, I2C and power |
Sensor placement. The SCD40 is located in a corner cutout, separated from heat-generating components and shielded from draughts and direct sunlight.
Backlight. The front light switches on with touch input and adjusts its brightness automatically, staying off during the day and dimmed at night.
Firmware. Open source (GPLv3). The out-of-box firmware reads only its own sensors; widgets are added to read and control Home Assistant entities.
Note: this early revision has a misprint on the add-on slot. IO0 should read IO1, as it uses GPIO1 on the ESP32. It does not affect functionality.
Add-ons
An 8-pin header on the back of the device accepts official add-on modules, or custom hardware via the breakout board. GPIO, I2C and up to 28 V power input are supported. See the add-on connector page for the full pinout.
Source code and 3D models
All firmware configuration and 3D models are open source and hosted on Codeberg. See the ESPHome configuration page and the 3D models page for details and direct links.
