Skip to content

elkir0/PiBoard

Repository files navigation

PiBoard — living-room smart display

PiBoard

A DIY voice-controlled smart display for your living room — on a Raspberry Pi 4.
Local-first · private · open source. A self-hosted alternative to an Echo Show or Nest Hub.

MIT License Raspberry Pi 4 Flutter Python / FastAPI Local voice


✨ What is PiBoard?

PiBoard turns a Raspberry Pi 4 + an HDMI screen into a beautiful voice + touch smart display for the living room — meant to be seen from the couch, 2–3 m away.

Say the wake word ("Terminator, mets de la musique") or just tap. It plays music, shows the weather, plays YouTube, streams your cameras, drives your speakers and your smart home — and the entire voice pipeline can run 100% locally and for free: no cloud, no subscription, nothing leaving your home. Cloud services are an optional fallback, never a requirement.

It's a real, daily-driver project running in a living room in Guadeloupe. The goal of this repo is to let you run your own.

Why "PiBoard"? It's the homemade answer to the Echo Show / Nest Hub: you own the hardware, you own the data, and you can change literally anything — it's all here.


📸 Screenshots

Weather

Weather — hourly + 3-day, crisp SVG icons

Speakers

Speakers — volume, EQ, night mode

Home automation

Home — shutters, gate, smart plugs

Music

Music — radio, library, Spotify, Deezer


🎯 Features

  • 🗣️ Voice assistant — wake word → speech-to-text → intent/LLM → action → text-to-speech. A fast keyword router handles common commands with zero LLM calls; the LLM only answers open questions.
  • 🎵 Music — internet radio (free, no account, the default), a local library, Spotify, or Deezer (opt-in). One clean provider interface.
  • 🌤️ WeatherOpen-Meteo (no API key), current + hourly + 3-day, with beautiful Meteocons SVG icons.
  • 📺 YouTube — search and play, hardware-decoded in-app (no Chromium).
  • 📷 Cameras — live snapshots & MJPEG streams (UniFi Protect).
  • 🔊 Speakers — Devialet Phantom control over IP (volume, EQ, night mode) + AirPlay output.
  • 🏠 Home automation — Shelly (Gen 1/2/3) & TP-Link Kasa out of the box, or plug into your existing Home Assistant. Devices live in config — no code changes.
  • 🎨 Native, themeable, bilingual — a native flutter-pi UI (no web browser), 🇫🇷/🇬🇧 FR/EN, rebrandable colors without recompiling, and resolution-independent (runs on any landscape screen).
  • 🔒 Local-first & private — the whole voice loop can run on your own hardware; cloud is optional.
  • ⚙️ Web admin panel — configure everything from your phone/browser.

🧠 The voice pipeline

wake word ──▶ speech-to-text ──▶ intent / LLM ──▶ action ──▶ text-to-speech ──▶ speakers

Every stage is swappable, local or cloud:

Stage Local (free) Cloud (optional fallback)
Wake word livekit-wakeword (trained model)
Speech-to-text Vosk (offline) · Nemotron ASR (LAN) Voxtral (Mistral)
LLM Ollama (e.g. Gemma) via a tiny LAN gateway Mistral
Text-to-speech Piper (offline) · Voxtral MLX (LAN) Voxtral (Mistral)

Pick all-local (zero cost, fully private), Pi + a LAN helper machine (a Mac/PC running Ollama), or cloud — it's a couple of .env switches.


🏗️ Architecture

┌──────────────────────── Raspberry Pi 4 ────────────────────────┐
│  flutter-pi UI  ⇄  WebSocket  ⇄  FastAPI backend (Python)       │
│      (native, HDMI)                 │                           │
│                       mic ▶ wake ▶ STT ▶ intent ▶ action ▶ TTS  │
│                                     │  music · weather · video  │
│                                     │  cameras · speakers · home │
└──────────────────────────┬─────────────────────────┬───────────┘
                  optional LAN AI helper         AirPlay / speakers
                  (Ollama + TTS over HTTP)
  • UIfrontend-flutter/ (native flutter-pi, no Chromium).
  • Backendbackend/ (FastAPI/asyncio); every service is zero-crash (degrade, never take down the loop).
  • Admin webfrontend/admin/ (Svelte).
  • LAN AI gatewaylan-voice-gateway/ (optional; wraps Ollama + a local TTS so the Pi stays light).

🛠️ Hardware

Part Notes
Raspberry Pi 4 (4 GB+) Bookworm 64-bit
HDMI display designed for 1920×1200 landscape; scales to any landscape resolution
USB microphone a far-field array (e.g. ReSpeaker) works best
Speakers anything PipeWire can reach — AirPlay, HDMI, Bluetooth, jack… (Devialet Phantom gets extra IP control)
(optional) a LAN machine any PC/Mac to run Ollama + local TTS for the free LLM/voice path

🚀 Quick start

git clone https://github.com/elkir0/PiBoard.git
cd PiBoard

# 1) Configure (everything is optional — empty = feature disabled, cleanly)
cp .env.example .env        # set your weather location, integrations, etc.

# 2) Backend
cd backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python main.py              # serves the API + admin on :8000

# 3) UI (build the flutter-pi bundle on a dev machine, deploy to the Pi)
#    see scripts/deploy-flutter-v3.sh

Then open the admin panel at http://<pi>:8000/admin/ (a random admin password is generated and printed in the log on first run). The minimum to get going is a weather location and a reachable audio output — everything else is progressive.

📜 Full configuration reference: .env.example. 🗺️ Where the project is heading: see the Roadmap below.


🧩 Tech stack

Flutter (flutter-pi, native ARM, no browser) · Python (FastAPI + asyncio) · Svelte (admin) · PipeWire audio · Vosk / Piper / Ollama / Voxtral for the local voice stack.

🔒 A note on Deezer

Deezer support is opt-in and uses a personal ARL token (a grey area of Deezer's ToS — personal use, no stream archiving). No credentials ship in this repo; you provide your own. The legal default is free internet radio. Use it responsibly.

🗺️ Roadmap

Shipped recently: legal-by-default music, full FR/EN localization, the first-run setup wizard, runtime theming, a pluggable home-automation layer (Shelly/Kasa or Home Assistant), resolution-independent landscape layouts, and a Spotify Connect receiver via go-librespot.

Next up:

  • 📱 Portrait & adaptive layouts — full reflow for portrait screens and an adaptive nav rail.
  • 🏠 Deeper Home Assistant integration — validate against a real HA instance and make the Home page fully data-driven.
  • 🧰 Install/docs polish — hardware matrix, known-good shopping list, and clearer all-on-Pi / LAN-helper / cloud presets.
  • 🗣️ More wake words & languages — bring-your-own hotword, additional UI locales.

🤝 Contributing

Issues and PRs welcome. The project values simplicity over cleverness — each component as small and readable as possible, every service fails soft. Pick anything from the roadmap, or scratch your own itch.

📄 License

MIT — do what you like, no warranty.


Built and maintained with AI-assisted development. Made for a real living room. 🛋️

About

A DIY voice-controlled smart display for your living room, on a Raspberry Pi 4. Local-first, open source — a self-hosted Echo Show / Nest Hub alternative.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors