For more practical guides, visit the Wiki. Images and detailed explanations will be added gradually.
Share a project I've been working on: Ava, an Android voice assistant app that turns old tablets and phones into powerful smart home control panels.
This project is based on brownard/Ava with extensive modifications and extensions. The original was a great ESPHome voice satellite implementation, but with basic features. I researched existing solutions: Fully Kiosk is powerful but paid. WallPanel is no longer maintained. The Android smart home panel space has been stagnant for years. So I decided to combine the best of these projects, using Ava as the foundation to build something truly useful.
No Extra Integrations No MQTT, no HACS. Devices are discovered natively by Home Assistant, just like ESPHome nodes.
Built for Low-End Hardware Supports Android 7–16, including 32-bit devices. Cheap tablets and old phones work reliably.
Expanding to Android 4.4–6 Earlier Android versions are currently under active development. The goal is full BLE proxy compatibility without compromises
This is a feature no other Android panel app has.
Your Android device becomes a complete Bluetooth gateway, extending Home Assistant's Bluetooth coverage. No ESP32 needed - just use your spare Android device!
Features: BLE Proxy - Forwards all Bluetooth Low Energy data to Home Assistant. Whole-Home Coverage - Deploy multiple Ava devices, each extends Bluetooth range. Presence Detection - Auto-detect phones, smartwatches, bands; trigger home/away automations. All BLE Devices Compatible - Temperature sensors, plant monitors, smart locks, all supported.
Why This Matters: ESP32 Bluetooth proxies need firmware flashing and configuration. Ava works out of the box - your Android device is already a powerful Bluetooth transceiver. Perfect for apartments or multi-story homes where one Bluetooth source isn't enough. Turn that dusty old tablet in the bedroom into a Bluetooth relay point.
Presence Detection Use Cases: Phone enters Bluetooth range → Auto lights on, AC on, play welcome message. Phone leaves for a while → Auto lights off, security mode on. Detect specific family member devices → Personalized scene triggers. Adjustable RSSI threshold and away delay for precise sensitivity control.
This feature alone is worth trying if you've struggled with Bluetooth coverage in Home Assistant.
Note: Bluetooth proxy source code is not open source, only available in release builds. All other feature code is available on GitHub.
This is what makes Ava visually unique. Floating windows overlay on top of any app - display a full-screen HA dashboard while still seeing clock, weather, and notifications overlaid on top.
Other apps force you to choose: dashboard or clock. With Ava, you get both.
- Always Visible - Overlays on any app, including full-screen browsers. HA Control - Remotely toggle each window from Home Assistant. Non-Intrusive - Designed to complement, not block the main interface.
Available floating windows: Dream Clock - Elegant always-on clock. Vinyl Cover - Rotating record cover when playing music. Conversation Subtitles - Shows what you said and AI responses. Notification Scenes - Full-screen alerts for doorbell, alarms, etc.
Ava is a voice assistant app based on the ESPHome protocol. It turns your Android device into a voice satellite for Home Assistant.
What can you do with it? Control smart home devices with voice (lights, AC, music, etc.). Display beautiful screensavers and clocks. Show real-time weather information. Display full-screen notifications (doorbell, alerts, etc.). Play music with album cover display. Take photos and stream video.
Put your old phone or tablet at home, and it becomes a smart control panel!
System Requirements: Android 7.0 or higher. Home Assistant connection required.
This makes Ava suitable for turning any phone or tablet into a native-looking Home Assistant panel, consistent with the rest of your HA ecosystem.
Ava does not impose a custom UI identity. Instead, it deliberately follows Home Assistant’s visual language and iconography. This ensures that any device running Ava feels like an extension of Home Assistant itself, not a third-party layer on top.
- Download the Ava APK file from GitHub Releases. 2. Tap to install. 3. Allow all permission requests (microphone, overlay, etc.).
In Home Assistant: 1. Go to Settings → Devices & Services → Integrations. 2. Search and add ESPHome integration. 3. Ava will be discovered automatically, tap Configure.
In Ava app: 1. Open Ava app. 2. Tap the Settings icon in the top right. 3. Select Voice Satellite. 4. Tap Start Service.
After successful connection: Status bar will show "Connected". You can see this device in Home Assistant.
Say the wake word (default is "Hey Jarvis"), then say your command: "Turn on the living room light". "What time is it". "Play music". "What's the weather tomorrow".
How it works: 1. Ava constantly listens for the wake word. 2. When you say the wake word, Ava starts recording. 3. Recording is sent to Home Assistant for recognition. 4. Home Assistant returns a response, Ava plays the voice.
Settings: Settings → Voice Satellite
| Setting | Description | Default |
|---|---|---|
| Device Name | Name shown in Home Assistant | device_model_voice_assistant |
| Port | ESPHome communication port | 6053 |
| Wake Word | Word that triggers voice recognition | Hey Jarvis |
| Stop Word | Word that interrupts current conversation | Stop |
| Wake Sound | Prompt sound when recording starts | Optional |
| Mute | Turn off microphone | Off |
Supported Wake Words: Hey Jarvis, Alexa, OK Nabu...
What is it: After the device is idle for a while, a beautiful screensaver shows automatically.
Types of screensavers: Image screensaver - Shows images you choose. Web screensaver - Shows web content. Xiaomi Wallpaper - Shows time, date (very beautiful!).
Settings: Settings → Screensaver
| Option | Description |
|---|---|
| Enable | Turn screensaver on or off |
| Timeout | How long before screensaver shows (like 30 seconds) |
| Type | Choose image or web |
| URL | If you choose web, enter the web address |
What is it: Shows current weather information on screen.
What it shows: Temperature, Weather condition (sunny, cloudy, rain, etc.), Humidity, Wind direction and speed, Air quality.
Settings: Settings → Interaction → Weather
What is it: When smart home events happen, shows beautiful full-screen notifications.
Built-in Scenes:
| Scene ID | Scene Name | Purpose |
|---|---|---|
| morning | Good Morning | Daily greeting |
| doorbell | Doorbell Ring | Doorbell alert |
| water_leak | Water Leak | Water sensor triggered |
| smoke | Smoke Alarm | Smoke sensor triggered |
| someone_home | Someone Home | Presence detection |
| package | Package Arrived | Delivery notification |
| timer | Timer Finished | Timer reminder |
| weather_alert | Weather Alert | Severe weather warning |
70+ built-in scenes - doorbell, smoke alarm, good morning, birthday wishes, timers. Custom scene URLs supported. Scenes load from GitHub JSON files (scenes_zh.json/scenes_en.json) and cache locally for offline use.
Settings: Settings → Interaction → Notification Scenes
| Setting | Description |
|---|---|
| Display Duration | How long notification shows (5-30 seconds) |
| Sound | Sound played when notification appears |
| Custom Scene URL | Load custom scenes from network |
Trigger in Home Assistant:
service: select.select_option
target:
entity_id: select.your_device_name_notification_scene
data:
option: "doorbell"What is it: Ava can play music and show beautiful album covers.
Special features: Vinyl record style cover display. Auto-fetch Music covers. Voice announcements (TTS).
Settings: Settings → Interaction
| Setting | Description |
|---|---|
| Volume | Media playback volume |
| Vinyl Cover | Show album cover when playing music |
| Conversation Subtitles | Show voice conversation text |
Play music in Home Assistant:
service: media_player.play_media
target:
entity_id: media_player.your_device_name
data:
media_content_id: "http://example.com/music.mp3"
media_content_type: "music"What is it: Use the device camera to take photos or record video.
What it can do: Take photos and send to Home Assistant. Live video streaming (native ESPHome protocol, not MJPEG). Supports front and back camera. Smart frame dropping for smooth performance.
Settings: Settings → Experimental → Camera
| Setting | Description |
|---|---|
| Enable Camera | Turn on camera feature |
| Use Front Camera | Default to front or back camera |
| Video Frame Rate | 1-15 fps |
| Video Resolution | 240p-720p |
In Home Assistant: Camera appears as a camera entity. Add camera card to your dashboard.
What is it: Display web pages inside Ava.
What it can do: Show Home Assistant dashboards. Show any web page. Inject custom CSS/JS. Pull-to-refresh support.
Settings: Settings → Browser
| Setting | Description |
|---|---|
| Homepage URL | Default web page address |
| Render Mode | Hardware/Software rendering |
| Custom CSS | Inject custom styles |
| Custom JS | Inject custom scripts |
Control in Home Assistant:
service: text.set_value
target:
entity_id: text.your_device_name_browser_url
data:
value: "http://your-ha-address:8123/lovelace/0"What is it: Ava reads device sensors and exposes them to Home Assistant.
Supported sensors: Light sensor (lux), Magnetic field sensor (μT), Proximity sensor, WiFi signal strength, Battery level, Storage space. All sensor data reported to Home Assistant as entities.
- Audio Processing - AEC, AGC, noise suppression, GPIO microphone array support. Screen Control - Brightness sync, force orientation, proximity wake/sleep.
Required: Microphone - To hear you speak. Overlay - To show screensaver, notifications, weather, etc. Foreground Service - To keep service running.
Optional: Camera - For photos and video. Bluetooth - To detect if you're home. Location - Required for Bluetooth scanning. System Settings - Screen brightness control.
Root (Recommended): Better background protection, boot scripts, screen control, reboot. Works without Root, but more stable with it.
Optimized for 24/7 operation: battery optimization exemption, WiFi wake lock, auto-reconnect, boot auto-start, auto-recovery when killed.
- Wall tablet as whole-home control center + Bluetooth relay
- Bedside voice alarm + bedroom Bluetooth coverage
- Kitchen timer tablet + kitchen sensor range extension
- Doorway video doorbell + entrance presence detection
Completely free, no charges.
Donations welcome but entirely voluntary, all features available.
No data collection. Voice recognition processed locally only. No tracking, no account required. Camera/microphone data only sent to your own Home Assistant. I personally guarantee no malicious behavior.
Check these: 1. Is microphone permission granted? Go to phone Settings → Apps → Ava → Permissions → Microphone → Allow. 2. Is wake word set correctly? Settings → Voice Satellite → Wake Words. 3. Is the device muted? Check volume buttons.
Check these: 1. Are device and Home Assistant on the same WiFi? 2. Is Home Assistant address correct? 3. Is ESPHome integration enabled in Home Assistant?
Check these: 1. Is screensaver enabled? Settings → Screensaver → Enable. 2. Is overlay permission granted? Go to phone Settings → Apps → Ava → Permissions → Overlay → Allow. 3. Is timeout set? Settings → Screensaver → Timeout.
Choose a word that's easy to say but you don't often say in normal conversation. This way Ava won't trigger by accident.
If the device screen is on for long periods: Lower screen brightness. Use screensaver (screensaver moves content to prevent burn-in).
Good WiFi signal means better voice recognition accuracy.
Check for app updates. New versions have more features and fixes. Ava has built-in auto-update.
Latest APK: https://github.com/knoop7/Ava/releases. Built-in auto-update feature.
Having problems? Get help here: GitHub Issues: https://github.com/knoop7/Ava/issues. Questions or suggestions? Open an issue on GitHub! I'll continue fixing bugs and adding features.
- JDK 17 or higher
- Android Studio Hedgehog (2023.1.1) or higher
- Android SDK with API level 34
- NDK (for native audio processing)
brew install openjdk@17
git clone https://github.com/knoop7/Ava.git
cd Ava
./gradlew assembleDebug # Debug APK
./gradlew assembleRelease # Release APKAPK location: app/build/outputs/apk/debug/app-debug.apk or app/build/outputs/apk/release/app-release-unsigned.apk
# Install JDK from https://adoptium.net/, add JAVA_HOME
git clone https://github.com/knoop7/Ava.git
cd Ava
.\gradlew.bat assembleDebug # Debug APK
.\gradlew.bat assembleRelease # Release APKAPK location: app\build\outputs\apk\debug\app-debug.apk or app\build\outputs\apk\release\app-release-unsigned.apk
sudo apt install openjdk-17-jdk # Debian/Ubuntu
# or sudo dnf install java-17-openjdk-devel # Fedora
git clone https://github.com/knoop7/Ava.git
cd Ava
./gradlew assembleDebug # Debug APK
./gradlew assembleRelease # Release APK- Open Android Studio → File → Open → Select Ava folder. 2. Wait for Gradle sync. 3. Build → Build Bundle(s) / APK(s) → Build APK(s).
- Create keystore:
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias - Create
keystore.propertiesin project root:
storePassword=your_store_password
keyPassword=your_key_password
keyAlias=my-alias
storeFile=../my-release-key.jks- Build:
./gradlew assembleRelease
- Gradle sync failed: Check internet, delete
.gradle, File → Invalidate Caches → Restart - NDK not found: Android Studio → SDK Manager → SDK Tools → NDK (Side by side) → Install
- Out of memory: Add to
gradle.properties:org.gradle.jvmargs=-Xmx4g
- Original Project: brownard/Ava
- ESPHome: https://esphome.io/
- Home Assistant: https://www.home-assistant.io/
Last Updated: 2026-02-24