Μπορεί να άργησα λίγο αλλά επέστρεψα, και πώς επέστρεψα; Με ένα post από αυτά που ξέρω ότι γουστάρεις, γιατί συνδυάζει DIY, μικροηλεκτρονικά και φυσικά το αγαπημένο μας Home Assistant. (Εντάξει, δεν θα χρειαστείς και πτυχίο πυρηνικής φυσικής, οπότε μείνε μέχρι το τέλος).
Αν με διαβάζεις καιρό, ξέρεις ότι το δικό μου έξυπνο σπίτι τρέχει σε Home Assistant. Έχω κάνει αυτή την επιλογή για την open λογική του αλλά και γιατί μου προσφέρει επίπεδα privacy που με τα commercial gateways ούτε στον ύπνο σου δεν πρόκειται να δεις.
Και κάπου εδώ άρχισα να προβληματίζομαι. Έχω στήσει ολόκληρο smart home τοπικά, όλα δουλεύουν ρολόι χωρίς να εξαρτώμαι από κανένα cloud, αλλά για να δώσω μια φωνητική εντολή πρέπει ακόμα να μιλάω στα ηχεία της Google ή της Amazon; Δηλαδή να έχω ένα μικρόφωνο ανοιχτό 24/7 που στέλνει ό,τι λέω στους servers της κάθε εταιρείας; Τελείως ξεπερασμένο(!)
Θα μου πεις, «καλά ρε μάστορα, και τι να κάνω; Να σηκώνομαι να πατάω τους διακόπτες με το χέρι σαν πρωτόγονος;». Εννοείται πως όχι. Η λύση υπάρχει, είναι 100% local, σέβεται την ιδιωτικότητά σου και λέγεται ESP32 Voice Satellite.

Τι χρειαζόμαστε στην πράξη;
Κάτσε λίγο και σκέψου τι θέλεις από έναν φωνητικό βοηθό στο σαλόνι ή στο γραφείο σου:
- Να είναι μικρός σε μέγεθος και διακριτικός (να μην γκρινιάζει και το έτερον ήμισυ).
- Να ακούει το wake word ακαριαία χωρίς καθυστερήσεις.
- Να μην κοστίζει μια περιουσία.
- Να δουλεύει τοπικά με το Home Assistant.
Στην καρδιά του project βρίσκεται φυσικά ο ESP32-S3 (για τον οποίο αν με παρακολουθείς ξέρεις τι έρωτα έχω, ειδικά μετά τα ένδοξα χρόνια του ESP8266). Προσοχή όμως εδώ: μην πας και πάρεις τον απλό παλιό ESP32, γιατί θέλουμε την έκδοση S3 με PSRAM (κατά προτίμηση 8MB Octal PSRAM) ώστε να μπορεί να τρέξει άνετα το microWakeWord πάνω στην πλακέτα.
Αν βαριέσαι τα κολλητήρια και τις καλωδιώσεις με ξεχωριστά I2S μικρόφωνα (όπως το INMP441) και ενισχυτές (MAX98357A), υπάρχουν πλέον έτοιμες, σούπερ VFM λύσεις all-in-one, όπως το ESP32-S3-BOX ή τα έτοιμα boards με οθόνη και κουτί της Waveshare (π.χ. το ESP32-S3-Touch-LCD-1.85C-Box) που έχουν ενσωματωμένο μικρόφωνο, ηχείο και οθονάρα και βγαίνουν κούκλα πάνω στο έπιπλο.
Κλασική υπενθύμιση: Το ESP32 συνδέεται σε δίκτυα Wi-Fi 802.11 b/g/n στα 2.4GHz, οπότε μην πας να το καρφώσεις σε κανένα 5GHz δίκτυο γιατί θα πας επικό κουβά.

hardware / μικρόφωνο και ηχείο με ESP32-S3ΟΚ ρε μάστορα θα μου πεις, ψήθηκα, πήρα το ESP32 και τώρα τι κάνω;
Πριν προχωρήσουμε στο ESPHome, πρέπει να έχεις στήσει το Assist pipeline μέσα στο Home Assistant. Τι σημαίνει αυτό με απλά λόγια; Είναι ο «εγκέφαλος» που θα αναλάβει να μετατρέψει τη φωνή σου σε κείμενο (Speech-to-Text), να καταλάβει τι του είπες και να σου απαντήσει (Text-to-Speech).
Εδώ έχεις δύο δρόμους:
- Full Local: Χρησιμοποιείς τα add-ons Whisper (για STT) και Piper (για TTS), ή ακόμα και Ollama αν θες να κουμπώσεις τοπικό AI LLM και να κάνεις παπάδες(αν τρέχεις το Home Assistant σε δυνατό μηχάνημα ή Proxmox server, πετάει).
- Υβριδικά: Χρησιμοποιείς Google Speech-to-Text / Generative AI για αστραπιαία αναγνώριση στα Ελληνικά, κρατώντας όμως το wake word αυστηρά τοπικά πάνω στο ESP32 ώστε το μικρόφωνο να ανοίγει μόνο όταν το φωνάζεις.

[Εικόνα: Screenshot από τις ρυθμίσεις του Voice Assistants (Assist) στο Home Assistant]
Πώς το φλασάρουμε με ESPHome;
Εδώ είναι όλη η μαγεία. Χάρη στο ESPHome, η διαδικασία είναι πλέον παιχνιδάκι. Συνδέεις το ESP32 με ένα USB καλώδιο στον υπολογιστή σου (προσοχή το καλώδιο να μεταφέρει data και όχι μόνο ρεύμα από κανένα παλιό φορτιστή, γιατί θα ψάχνεσαι), ανοίγεις το ESPHome dashboard και περνάς το configuration.
Πλέον, με τη χρήση του micro_wake_word στο YAML σου, η ίδια η πλακέτα αναλαμβάνει να ακούει τη λέξη αφύπνισης (π.χ. “Okay Nabu”, “Hey Jarvis” ή όποιο custom μοντέλο της βάλεις) χωρίς να στέλνει συνέχεια ήχο στο δίκτυο σου!
YAML
micro_wake_word:
models:
- model: okay_nabu
voice_assistant:
microphone: box_mic
speaker: box_speaker
micro_wake_word:
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 2.0
Αφού κάνεις όλα αυτά (και μπράβο σου) και ολοκληρωθεί το compile και το φλασάρισμα, το Home Assistant θα εντοπίσει αυτόματα τη νέα συσκευή στα Integrations. Πατάς ένα Configure, διαλέγεις το Assist Pipeline που έφτιαξες πριν, και… τέλος! Κυριολεκτικά με 2 κινήσεις έχεις τον δικό σου φωνητικό δορυφόρο.
Τα Pros & Cons στην καθημερινότητα (και το τελικό ταμείο)
Για να είμαι ειλικρινής, το έχω στο σπίτι αρκετό καιρό και η αίσθηση του να λες «Άνοιξε τα φώτα στο σαλόνι» και να εκτελείται η εντολή τοπικά σε κλάσματα δευτερολέπτου, είναι άλλο επίπεδο. Επιπλέον, λύνει και το γνωστό «σύνδρομο της πεθεράς», αφού όποιος είναι στο σπίτι μπορεί απλά να μιλήσει χωρίς να ψάχνει εφαρμογές στο κινητό ή να παίζει με τους διακόπτες στον τοίχο.
Πού πρέπει να προσέξεις;
- Το μικρόφωνο μετράει: Αν φτιάξεις δικό σου DIY satellite με σκέτο ESP32, μην τσιγκουνευτείς στο μικρόφωνο και στο κουτάκι. Αν είναι χύμα τα καλώδια, από τα 3 μέτρα με ανοιχτή τηλεόραση θα πρέπει να του φωνάζεις σαν τελάλης στη λαϊκή.
- Τα Ελληνικά στο STT: Ενώ το Piper μιλάει μια χαρά Ελληνικά, το Whisper τοπικά θέλει λίγο δυνατό επεξεργαστή για να μην καθυστερεί στα Ελληνικά. Αν δεις ότι αργεί, κράτα το wake word local και βάλε Google STT ή Gemini στο pipeline — όλα πάνε ρολόι.
Από θέμα κόστους; Με 15€ έως 35€ (ανάλογα αν θα πας σε σκέτο board ή έτοιμο κουτάκι με οθόνη) στήνεις έναν δορυφόρο που σέβεται τα δεδομένα σου και τον φέρνεις 100% στα μέτρα σου. Πιο VFM λύση για voice control στο Home Assistant απλά δεν υπάρχει.
Αυτά για σήμερα! Αν σου άρεσε αυτό το post και θες να ενημερώνεσαι πάνω στο home automation και το smart home, κάνε εγγραφή στο newsletter για να έρχονται στο e-mail σου τα νέα posts όταν ανεβαίνουν.
Επίσης, αν έχεις κάποια απορία (ή αν θες να ανεβάσω αναλυτικό post με όλο το YAML κώδικα και LVGL γραφικά για την οθόνη) μπορείς να αφήσεις το σχόλιό σου εδώ ή να με βρεις στα social.