pvizeli/esphome-genie

ESPHome Firmware for Rituals Genie

โ˜… 0Forks 1GitHub โ†—Compare

README

ESPHome Genie

ESPHome firmware for Rituals Perfume Genie devices, supporting both Genie 2 (ESP8266) and Genie 3 (ESP32-C6) versions.

Features

  • ๐ŸŒŠ PWM-controlled fan speed with auto-off timer
  • ๐Ÿ’ก RGB status LED (WS2812 on Genie 2, Common-Anode on Genie 3)
  • ๐Ÿ”˜ Physical button control
  • ๐Ÿ  Native Home Assistant integration
  • ๐Ÿ“ก OTA updates (wireless firmware updates)
  • ๐Ÿ”„ Automatic firmware updates from GitHub releases
  • ๐Ÿ“ถ WiFi provisioning via captive portal (Genie 2) or Bluetooth (Genie 3)

Quick Start

Installation

Visit https://pvizeli.github.io/esphome-genie/ for:

  • ๐ŸŒ Web-based firmware installer - Flash your device directly from the browser
  • ๐Ÿ“– Hardware flashing guide - First-time setup instructions
  • โš™๏ธ Configuration guide - WiFi setup and Home Assistant integration

Supported Devices

Device Chip LED Type Features
Genie 2 ESP8266 (ESP-WROOM-02) WS2812 Addressable RGB WiFi, Captive Portal
Genie 3 ESP32-C6 Common-Anode RGB LED WiFi, Bluetooth Improv, BLE Proxy

Configuration Files

  • genie-2.yml - ESP8266 (Genie 2) configuration
  • genie-3.yml - ESP32-C6 (Genie 3) configuration
  • common.yml - Shared configuration for both devices

Development

Building Locally

# Validate configuration
esphome config genie-2.yml
esphome config genie-3.yml

# Compile firmware
esphome compile genie-2.yml
esphome compile genie-3.yml

Creating a Release

  1. Create a new release on GitHub with a version tag (e.g., v1.0.0)
  2. GitHub Actions will automatically:
    • Build firmware for both devices
    • Create a combined manifest file
    • Upload binaries to the release
    • Deploy to GitHub Pages

Project Structure

.
โ”œโ”€โ”€ genie-2.yml              # ESP8266 device config
โ”œโ”€โ”€ genie-3.yml              # ESP32-C6 device config
โ”œโ”€โ”€ common.yml               # Shared configuration
โ”œโ”€โ”€ static/
โ”‚   โ”œโ”€โ”€ index.md            # Main documentation page
โ”‚   โ”œโ”€โ”€ flashing.md         # Hardware flashing guide
โ”‚   โ””โ”€โ”€ _config.yml         # Jekyll configuration
โ””โ”€โ”€ .github/workflows/
    โ”œโ”€โ”€ ci.yml              # CI testing (stable/beta/dev)
    โ”œโ”€โ”€ publish-firmware.yml # Release builds
    โ””โ”€โ”€ publish-pages.yml   # GitHub Pages deployment

GPIO Pin Mappings

Genie 2 (ESP8266)

  • GPIO3: Power button
  • GPIO4: Fan PWM control
  • GPIO15: WS2812 LED
  • GPIO0: Flash mode (boot mode)

Genie 3 (ESP32-C6)

  • GPIO17: Power button
  • GPIO4: Fan PWM control
  • GPIO23: RGB LED (Red)
  • GPIO22: RGB LED (Green)
  • GPIO3: RGB LED (Blue)
  • GPIO9: Flash mode (boot mode)

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Resources

License

See LICENSE file for details.

Credits

Based on community efforts to reverse-engineer and provide open-source firmware for Rituals Perfume Genie devices.

Special thanks to:

Contributors

pvizeli

Issues