ESPHome project for the [Waveshare 2.9inch Touch e-Paper HAT](https://www.waveshare.com/2.9inch-Touch-e-Paper-HAT.htm) on an ESP32-WROOM-32 (NodeMCU-32S). Drives an LVGL UI with 2-bit grayscale rendering and touchscreen input.
## Hardware
- **MCU:** ESP32-WROOM-32 (NodeMCU-32S)
- **Display:** SSD1680, 296×128, 2-bit grayscale via custom component
You can add this to your shell profile or run it manually before working on the project.
## Building and Flashing
All commands assume the venv is active and you are in the project directory.
### Compile only
```bash
esphome compile waveshare-test.yaml
```
### Flash via USB (first flash or if OTA fails)
```bash
esphome upload waveshare-test.yaml
```
Connect the ESP32 via USB before running. You may need to hold the BOOT button during flashing if the device doesn't enter download mode automatically.
### Flash via OTA (subsequent flashes)
Once the device is on WiFi, OTA upload works without USB:
```bash
esphome upload waveshare-test.yaml
```
ESPHome will automatically attempt OTA if the device is reachable.