| <!doctype html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| <title>Reachy Mini for Home Assistant</title> |
| <meta name="description" content="Voice assistant integration for Reachy Mini robot with Home Assistant. Control your smart home with voice commands and expressive robot movements."> |
| <link rel="preconnect" href="https://fonts.googleapis.com"> |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Manrope:wght@400;500;600&display=swap" rel="stylesheet"> |
| <link rel="stylesheet" href="style.css" /> |
| </head> |
| <body> |
| <header class="hero"> |
| <div class="topline"> |
| <div class="brand"> |
| <span class="logo">π€</span> |
| <span class="brand-name">Reachy Mini for Home Assistant</span> |
| </div> |
| <div class="pill">Voice Β· Gestures Β· Smart Home</div> |
| <div class="version-pill" id="version-pill">v0.8.3</div> |
| </div> |
| <div class="hero-grid"> |
| <div class="hero-copy"> |
| <p class="eyebrow">Reachy Mini App</p> |
| <h1>Your robot meets your Home Assistant.</h1> |
| <p class="lede"> |
| Transform Reachy Mini Wi-Fi into a voice-controlled smart home hub. Natural conversations, expressive movements, gesture recognition β all seamlessly connected to Home Assistant. |
| </p> |
| <div class="hero-actions"> |
| <a class="btn primary" href="#requirements">Requirements</a> |
| <a class="btn ghost" href="#install">Quick Start</a> |
| <a class="btn ghost" href="#features">Features</a> |
| </div> |
| <div class="hero-badges"> |
| <span>π€ Wake Word</span> |
| <span>π Face Tracking</span> |
| <span>π Body Following</span> |
| <span>π€ 18 Gestures</span> |
| <span>π Multi-room Audio</span> |
| <span>β‘ Zero Config</span> |
| <span>π Dashboard Card</span> |
| </div> |
| </div> |
| <div class="hero-visual"> |
| <div class="video-container"> |
| <iframe src="https://www.youtube.com/embed/OuhTSTKB25o" title="Reachy Mini for Home Assistant Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> |
| </div> |
| </div> |
| </div> |
| </header> |
|
|
| <section id="requirements" class="section"> |
| <div class="section-header"> |
| <p class="eyebrow">Before You Start</p> |
| <h2>Requirements</h2> |
| <p class="intro">Make sure you have everything ready for a smooth setup.</p> |
| </div> |
| <div class="requirements-grid"> |
| <div class="requirement-card"> |
| <span class="icon">π€</span> |
| <h3>Reachy Mini Wi-Fi</h3> |
| <p>This app requires the <strong>Wi-Fi version</strong> of Reachy Mini. The USB version has not been validated</p> |
| </div> |
| <div class="requirement-card"> |
| <span class="icon">π </span> |
| <h3>Home Assistant</h3> |
| <p>A running Home Assistant instance </p> |
| </div> |
| <div class="requirement-card"> |
| <span class="icon">πΆ</span> |
| <h3>Same Network</h3> |
| <p>Both Reachy Mini and Home Assistant must be on the <strong>same local network</strong>.</p> |
| </div> |
| <div class="requirement-card"> |
| <span class="icon">ποΈ</span> |
| <h3>Voice Pipeline</h3> |
| <p>Configure a <strong>Voice Assistant pipeline</strong> in Home Assistant (STT + TTS).</p> |
| </div> |
| </div> |
| </section> |
|
|
| <section id="install" class="section story"> |
| <div class="section-header"> |
| <p class="eyebrow">Getting Started</p> |
| <h2>Quick Start</h2> |
| <p class="intro">Install and connect in under a minute. No configuration needed.</p> |
| </div> |
| <div class="story-grid"> |
| <div class="story-card"> |
| <p class="eyebrow">Installation</p> |
| <h3>Up and running in 1 minutes</h3> |
| <ul class="story-list"> |
| <li><span>1οΈβ£</span> Open Reachy Mini Dashboard β Applications</li> |
| <li><span>2οΈβ£</span> Enable "Show community apps"</li> |
| <li><span>3οΈβ£</span> Install "Reachy Mini for Home Assistant"</li> |
| <li><span>4οΈβ£</span> Home Assistant discovers automatically</li> |
| </ul> |
| </div> |
| <div class="story-card secondary"> |
| <p class="eyebrow">How it works</p> |
| <h3>Seamless integration</h3> |
| <p class="story-text"> |
| This Reachy Mini app uses ESPHome protocol to communicate with Home Assistant β no ESPHome device needed. Home Assistant discovers it via mDNS and adds all 45+ entities automatically. Voice commands are processed by your Home Assistant instance β STT, intent recognition, and TTS all happen there. |
| </p> |
| <div class="chips"> |
| <span class="chip">ESPHome Protocol</span> |
| <span class="chip">mDNS Discovery</span> |
| <span class="chip">45+ Entities</span> |
| <span class="chip">Zero Config</span> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| <section id="features" class="section features"> |
| <div class="section-header"> |
| <p class="eyebrow">Capabilities</p> |
| <h2>Everything you need for smart home control</h2> |
| <p class="intro">45+ Home Assistant entities. Zero configuration. Auto-discovery via mDNS.</p> |
| </div> |
| <div class="feature-grid"> |
| <div class="feature-card"> |
| <span class="icon">π€</span> |
| <h3>Voice Wake</h3> |
| <p>Local wake word detection with MicroWakeWord and OpenWakeWord. Say "Okay Nabu" or "Hey Reachy" to activate.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">π </span> |
| <h3>Smart Home Control</h3> |
| <p>Full Home Assistant integration. Control lights, switches, climate, media β anything in your Home Assistant.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">π</span> |
| <h3>Face Tracking</h3> |
| <p>YOLO-based face detection with body following. Head and body move together naturally to track you during conversations.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">π€</span> |
| <h3>Gesture Detection</h3> |
| <p>HaGRID ONNX models recognize 18 hand gestures: ππβοΈπ€πβπ€π€« and more.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">π</span> |
| <h3>Expressive Motion</h3> |
| <p>280+ emotion keywords trigger 35 expressions. Real-time audio-driven animations with natural head sway during conversations.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">πΉ</span> |
| <h3>Camera Stream</h3> |
| <p>MJPEG video stream as ESPHome Camera entity. Real-time monitoring in Home Assistant dashboard.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">π</span> |
| <h3>Multi-room Audio</h3> |
| <p>Sendspin protocol support. Sync audio playback with other speakers throughout your home.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">β‘</span> |
| <h3>Zero Configuration</h3> |
| <p>Install and go. mDNS auto-discovery means Home Assistant finds your robot automatically.</p> |
| </div> |
| <div class="feature-card"> |
| <span class="icon">π</span> |
| <h3>Dashboard Card</h3> |
| <p>Custom Lovelace card for Home Assistant. Real-time 3D visualization of robot pose and status.</p> |
| </div> |
| </div> |
| </section> |
|
|
| <section id="changelog" class="section"> |
| <div class="section-header"> |
| <p class="eyebrow">Updates</p> |
| <h2>Changelog</h2> |
| </div> |
| <div id="changelog-grid" class="changelog-grid"></div> |
| <div class="changelog-more"> |
| <details id="changelog-details"> |
| <summary>View older versions</summary> |
| <div id="changelog-older" class="changelog-grid older"></div> |
| </details> |
| </div> |
| </section> |
|
|
| <script> |
| const VISIBLE_COUNT = 6; |
| fetch('changelog.json') |
| .then(res => res.json()) |
| .then(data => { |
| |
| if (data.length > 0) { |
| const versionPill = document.getElementById('version-pill'); |
| if (versionPill) { |
| versionPill.textContent = `v${data[0].version}`; |
| } |
| } |
| |
| |
| const mainGrid = document.getElementById('changelog-grid'); |
| const olderGrid = document.getElementById('changelog-older'); |
| data.forEach((item, index) => { |
| const card = document.createElement('div'); |
| card.className = 'changelog-card'; |
| card.innerHTML = ` |
| <div class="version-badge">v${item.version}</div> |
| <span class="date">${item.date}</span> |
| <ul>${item.changes.map(c => `<li>${c}</li>`).join('')}</ul> |
| `; |
| (index < VISIBLE_COUNT ? mainGrid : olderGrid).appendChild(card); |
| }); |
| if (data.length <= VISIBLE_COUNT) { |
| document.getElementById('changelog-details').style.display = 'none'; |
| } |
| }) |
| .catch(err => console.error('Failed to load changelog:', err)); |
| </script> |
|
|
| <section class="section links"> |
| <div class="section-header"> |
| <p class="eyebrow">Resources</p> |
| <h2>Links & References</h2> |
| </div> |
| <div class="links-grid"> |
| <a href="https://github.com/Desmond-Dong/ha-reachy-mini" target="_blank" class="link-card"> |
| <span class="icon">π</span> |
| <h3>HA Dashboard Card</h3> |
| <p>Lovelace Card for HA</p> |
| </a> |
| <a href="https://huggingface.co/spaces/djhui5710/reachy_mini_ha_voice/tree/main" target="_blank" class="link-card"> |
| <span class="icon">π¦</span> |
| <h3>Source Code</h3> |
| <p>HuggingFace Spaces</p> |
| </a> |
| <a href="https://www.pollen-robotics.com/" target="_blank" class="link-card"> |
| <span class="icon">π€</span> |
| <h3>Pollen Robotics</h3> |
| <p>Reachy Mini Creator</p> |
| </a> |
| <a href="https://www.home-assistant.io/" target="_blank" class="link-card"> |
| <span class="icon">π </span> |
| <h3>Home Assistant</h3> |
| <p>Smart Home Platform</p> |
| </a> |
| <a href="https://esphome.io/" target="_blank" class="link-card"> |
| <span class="icon">β‘</span> |
| <h3>ESPHome Protocol</h3> |
| <p>Communication Protocol</p> |
| </a> |
| <a href="https://github.com/OHF-Voice/linux-voice-assistant" target="_blank" class="link-card"> |
| <span class="icon">π€</span> |
| <h3>linux-voice-assistant</h3> |
| <p>Voice Assistant Base</p> |
| </a> |
| <a href="https://github.com/kahrendt/microWakeWord" target="_blank" class="link-card"> |
| <span class="icon">π</span> |
| <h3>microWakeWord</h3> |
| <p>Wake Word Detection</p> |
| </a> |
| <a href="https://huggingface.co/AdamCodd/YOLOv11n-face-detection" target="_blank" class="link-card"> |
| <span class="icon">π</span> |
| <h3>YOLOv11n-face</h3> |
| <p>Face Detection Model</p> |
| </a> |
| <a href="https://github.com/ai-forever/dynamic_gestures" target="_blank" class="link-card"> |
| <span class="icon">β</span> |
| <h3>Dynamic Gestures</h3> |
| <p>ONNX Models</p> |
| </a> |
| <a href="https://github.com/Sendspin/sendspin-cli" target="_blank" class="link-card"> |
| <span class="icon">π</span> |
| <h3>Sendspin</h3> |
| <p>Multi-room Audio</p> |
| </a> |
| <a href="https://huggingface.co/spaces/pollen-robotics/reachy-mini-landing-page#apps" target="_blank" class="link-card"> |
| <span class="icon">π</span> |
| <h3>Reachy Mini App Store</h3> |
| <p>More Apps</p> |
| </a> |
| </div> |
| </section> |
|
|
| <footer class="footer"> |
| <p>Built by <a href="https://github.com/Desmond-Dong" target="_blank">Desmond</a></p> |
| </footer> |
| </body> |
| </html> |
|
|