ESPHome configuration for integrating the ED1 Citilab ESP32 educational board with Home Assistant.
Full documentation at docs.glifo.cat — hardware reference, ESPHome configuration guide, Home Assistant dashboards & automations, SmartIR integration, and more.
- 1.44" TFT Display (ST7735) — device status, IP, temperature
- 6 Capacitive Touch Buttons — binary sensors in Home Assistant
- Light Sensor — ambient light percentage
- Buzzer — PWM audio output + RTTTL melodies
- IR Receiver (38kHz) — remote control & SmartIR bridge
- LED Matrix (WS2812) — addressable RGB light via GPIO12
- Stepper Motors (2x 28BYJ-48) — via MCP23009 I/O expander
- Bluetooth Proxy — extends Home Assistant BLE range
- WiFi Signal, CPU Temperature, Uptime sensors
Supports both Rev 1.0 and Rev 2.3 boards. See the hardware reference for revision differences.
-
Clone and configure:
git clone https://github.com/glifocat/ed1-hoas.git cp secrets.sample.yaml secrets.yaml # Edit secrets.yaml with your WiFi and API credentials -
Choose a sample configuration and copy it along with
secrets.yaml,fonts/, andpackages/to your ESPHome config directory. -
Flash via ESPHome add-on — the device auto-discovers in Home Assistant.
| File | Description |
|---|---|
ed1-message.sample.yaml |
Message display with chat log (recommended) |
ed1-mqtt.sample.yaml |
Dashboard with MQTT messaging |
ed1-status.sample.yaml |
Status display (WiFi, sensors, uptime) |
ed1-smartir-detector.yaml |
IR code detector for SmartIR (Rev 2.3) |
ed1-smartir-detector-rev1.yaml |
IR code detector for SmartIR (Rev 1.0) |
ed1-robot-demo.yaml |
Interactive stepper motor robot demo |
ed1-stepper-test.yaml |
Stepper motor testing and calibration |
ed1-gpio-test.yaml |
MCP23009 GPIO diagnostic tool |
- Home Assistant with ESPHome Add-on
- ED1 Citilab Board (Rev 1.0 or Rev 2.3)
- USB-C cable + CP210x USB Driver
ed1-hoas/
├── ed1-*.yaml # Sample configurations
├── secrets.sample.yaml # Credentials template
├── packages/ # Modular ESPHome components
│ ├── core.yaml # ESP32, logger, API, OTA, WiFi
│ ├── hardware.yaml # SPI and I2C buses
│ ├── display.yaml # TFT ST7735 display
│ ├── display-colors.yaml # Color palette definitions
│ ├── display-layout.yaml # Screen layout constants
│ ├── display-settings.yaml # Runtime display theme settings
│ ├── fonts.yaml # Fonts + Material Symbols icons
│ ├── buzzer.yaml # PWM output + RTTTL melodies
│ ├── buttons.yaml # 6 capacitive touch buttons
│ ├── sensors.yaml # WiFi, uptime, temp, light sensors
│ ├── bluetooth.yaml # BLE tracker + proxy
│ ├── ir-receiver.yaml # 38kHz IR receiver
│ ├── ir-transmitter.yaml # IR transmitter (Rev 1.0, experimental)
│ ├── led-matrix.yaml # 32x8 WS2812B LED matrix
│ ├── mqtt.yaml # MQTT broker connectivity (optional)
│ └── stepper.yaml # 28BYJ-48 stepper motors via MCP23009
├── fonts/ # Pixelmix font
├── scripts/ # Utility scripts
├── docs/ # Hardware reference files
│ ├── images/ # Board photos (CC BY-SA 4.0)
│ └── datasheets/ # Component PDFs
├── CONTRIBUTING.md
├── LICENSE
└── NOTICE
Want to contribute? Read the contributing guidelines to get started.
- Created and maintained by — glifocat
- Original hardware documentation and advice — vcasado
- ED1 Board — Citilab Edutec
- ESPHome — esphome.io
- Mintlify — free Pro plan through the Mintlify OSS Program
- Kilo Code — enterprise access through the Kilo OSS Program
- Board images — Citilab Market (CC BY-SA 4.0)
- Pixelmix font — Andrew Tyler (CC BY-NC-ND 3.0)
This project is licensed under the Apache License 2.0. See NOTICE for details.


